9
0
mirror of https://github.com/Auxilor/Reforges.git synced 2025-12-29 03:49:11 +00:00

Added evasive, reinforced, thin, and tough reforges

This commit is contained in:
Auxilor
2021-08-12 20:01:56 +01:00
parent 3a4ddc1051
commit ffd3d60313
9 changed files with 253 additions and 0 deletions

View File

@@ -6,13 +6,17 @@ import com.google.common.collect.ImmutableSet;
import com.willfp.eco.core.config.updating.ConfigUpdater;
import com.willfp.reforges.reforges.reforges.ReforgeAerobic;
import com.willfp.reforges.reforges.reforges.ReforgeDynamic;
import com.willfp.reforges.reforges.reforges.ReforgeEvasive;
import com.willfp.reforges.reforges.reforges.ReforgeGravitated;
import com.willfp.reforges.reforges.reforges.ReforgeLight;
import com.willfp.reforges.reforges.reforges.ReforgeLucky;
import com.willfp.reforges.reforges.reforges.ReforgeReinforced;
import com.willfp.reforges.reforges.reforges.ReforgeRich;
import com.willfp.reforges.reforges.reforges.ReforgeSharp;
import com.willfp.reforges.reforges.reforges.ReforgeStreamlined;
import com.willfp.reforges.reforges.reforges.ReforgeStrong;
import com.willfp.reforges.reforges.reforges.ReforgeThin;
import com.willfp.reforges.reforges.reforges.ReforgeTough;
import com.willfp.reforges.reforges.reforges.ReforgeWealthy;
import com.willfp.reforges.reforges.reforges.ReforgeWise;
import lombok.experimental.UtilityClass;
@@ -40,6 +44,10 @@ public class Reforges {
public static final Reforge LUCKY = new ReforgeLucky();
public static final Reforge AEROBIC = new ReforgeAerobic();
public static final Reforge STREAMLINED = new ReforgeStreamlined();
public static final Reforge THIN = new ReforgeThin();
public static final Reforge TOUGH = new ReforgeTough();
public static final Reforge REINFORCED = new ReforgeReinforced();
public static final Reforge EVASIVE = new ReforgeEvasive();
/**
* Get all registered {@link Reforge}s.

View File

@@ -0,0 +1,28 @@
package com.willfp.reforges.reforges.reforges;
import com.willfp.eco.util.NumberUtils;
import com.willfp.reforges.reforges.Reforge;
import com.willfp.reforges.reforges.Reforges;
import com.willfp.reforges.reforges.meta.ReforgeTarget;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.entity.EntityDamageEvent;
import org.jetbrains.annotations.NotNull;
public class ReforgeEvasive extends Reforge {
public ReforgeEvasive() {
super("evasive");
}
@Override
public ReforgeTarget getTarget() {
return ReforgeTarget.ARMOR;
}
@Override
public void onDamageWearingArmor(@NotNull final LivingEntity victim,
@NotNull final EntityDamageEvent event) {
if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "chance")) {
event.setCancelled(true);
}
}
}

View File

@@ -0,0 +1,25 @@
package com.willfp.reforges.reforges.reforges;
import com.willfp.reforges.reforges.Reforge;
import com.willfp.reforges.reforges.Reforges;
import com.willfp.reforges.reforges.meta.ReforgeTarget;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.entity.EntityDamageEvent;
import org.jetbrains.annotations.NotNull;
public class ReforgeReinforced extends Reforge {
public ReforgeReinforced() {
super("reinforced");
}
@Override
public ReforgeTarget getTarget() {
return ReforgeTarget.ARMOR;
}
@Override
public void onDamageWearingArmor(@NotNull final LivingEntity victim,
@NotNull final EntityDamageEvent event) {
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
}
}

View File

@@ -0,0 +1,63 @@
package com.willfp.reforges.reforges.reforges;
import com.willfp.reforges.reforges.Reforge;
import com.willfp.reforges.reforges.Reforges;
import com.willfp.reforges.reforges.meta.ReforgeTarget;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import java.util.UUID;
public class ReforgeThin extends Reforge {
private AttributeModifier speedModifier;
public ReforgeThin() {
super("thin");
}
@Override
protected void postUpdate() {
this.speedModifier = new AttributeModifier(
UUID.nameUUIDFromBytes("thin-speed".getBytes()),
"thin-speed",
this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "speed-multiplier") - 1,
AttributeModifier.Operation.MULTIPLY_SCALAR_1
);
}
@Override
public ReforgeTarget getTarget() {
return ReforgeTarget.ARMOR;
}
@Override
public void onDamageWearingArmor(@NotNull final LivingEntity victim,
@NotNull final EntityDamageEvent event) {
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
}
@Override
public void handleApplication(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
meta.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, speedModifier);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
itemStack.setItemMeta(meta);
}
@Override
public void handleRemoval(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
meta.removeAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, speedModifier);
itemStack.setItemMeta(meta);
}
}

View File

@@ -0,0 +1,63 @@
package com.willfp.reforges.reforges.reforges;
import com.willfp.reforges.reforges.Reforge;
import com.willfp.reforges.reforges.Reforges;
import com.willfp.reforges.reforges.meta.ReforgeTarget;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
import java.util.UUID;
public class ReforgeTough extends Reforge {
private AttributeModifier speedModifier;
public ReforgeTough() {
super("tough");
}
@Override
protected void postUpdate() {
this.speedModifier = new AttributeModifier(
UUID.nameUUIDFromBytes("tough-speed".getBytes()),
"tough-speed",
this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "speed-multiplier") - 1,
AttributeModifier.Operation.MULTIPLY_SCALAR_1
);
}
@Override
public ReforgeTarget getTarget() {
return ReforgeTarget.ARMOR;
}
@Override
public void onDamageWearingArmor(@NotNull final LivingEntity victim,
@NotNull final EntityDamageEvent event) {
event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
}
@Override
public void handleApplication(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
meta.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, speedModifier);
meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
itemStack.setItemMeta(meta);
}
@Override
public void handleRemoval(@NotNull final ItemStack itemStack) {
ItemMeta meta = itemStack.getItemMeta();
assert meta != null;
meta.removeAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, speedModifier);
itemStack.setItemMeta(meta);
}
}

View File

@@ -0,0 +1,16 @@
#
# Evasive Reforge
#
name: "<gradient:#EFEFBB>Evasive</gradient:#D4D3DD>"
enabled: true
description: "&a2%&r chance to ignore damage"
stone-config:
requires-stone: false
texture: ''
craftable: false
recipe: []
config:
chance: 2

View File

@@ -0,0 +1,16 @@
#
# Reinforced Reforge
#
name: "<gradient:#FBD786>Reinforced</gradient:#f7797d>"
enabled: true
description: "Take &a4%&r less damage"
stone-config:
requires-stone: false
texture: ''
craftable: false
recipe: []
config:
multiplier: 0.96 # Damage taken multiplier

View File

@@ -0,0 +1,17 @@
#
# Thin Reforge
#
name: "<gradient:#D1913C>Thin</gradient:#FFD194>"
enabled: true
description: "Take &a5%&r more damage but move &a2.5%&r faster"
stone-config:
requires-stone: false
texture: ''
craftable: false
recipe: []
config:
multiplier: 1.05 # Damage taken multiplier
speed-multiplier: 1.025

View File

@@ -0,0 +1,17 @@
#
# Tough Reforge
#
name: "<gradient:#a73737>Tough</gradient:#7a2828>"
enabled: true
description: "Take &a8%&r less damage but move &a5%&r slower"
stone-config:
requires-stone: false
texture: ''
craftable: false
recipe: []
config:
multiplier: 0.92 # Damage taken multiplier
speed-multiplier: 0.95