9
0
mirror of https://github.com/Auxilor/EcoArmor.git synced 2025-12-27 10:59:22 +00:00

Fixed crafting bug

This commit is contained in:
Auxilor
2021-08-18 18:10:36 +01:00
parent 9a51beb823
commit ecf49acb6f
2 changed files with 53 additions and 47 deletions

View File

@@ -2,6 +2,7 @@ package com.willfp.ecoarmor.effects.util;
import com.willfp.eco.core.EcoPlugin;
import com.willfp.eco.core.PluginDependent;
import com.willfp.eco.core.events.ArmorChangeEvent;
import com.willfp.eco.core.events.ArmorEquipEvent;
import com.willfp.ecoarmor.effects.Effect;
import com.willfp.ecoarmor.effects.Effects;
@@ -29,63 +30,60 @@ public class EffectWatcher extends PluginDependent<EcoPlugin> implements Listene
* @param event The event to listen for.
*/
@EventHandler
public void armorEquipListener(@NotNull final ArmorEquipEvent event) {
public void armorEquipListener(@NotNull final ArmorChangeEvent event) {
Player player = event.getPlayer();
ArmorSet set = ArmorUtils.getSetOnPlayer(player);
this.getPlugin().getScheduler().runLater(() -> {
ArmorSet set = ArmorUtils.getSetOnPlayer(player);
boolean conditionsMet = ArmorUtils.areConditionsMet(player);
boolean conditionsMet = ArmorUtils.areConditionsMet(player);
for (Effect<?> effect : Effects.values()) {
boolean enabled = true;
for (Effect<?> effect : Effects.values()) {
boolean enabled = true;
if (set == null) {
effect.disable(player);
continue;
}
if (set == null) {
effect.disable(player);
continue;
}
Object strength = set.getEffectStrength(effect);
Object strength = set.getEffectStrength(effect);
if (ArmorUtils.isWearingAdvanced(player)) {
Object advancedStrength = set.getAdvancedEffectStrength(effect);
if (advancedStrength != null) {
strength = advancedStrength;
}
}
if (strength == null) {
enabled = false;
}
if (!conditionsMet) {
enabled = false;
}
if (enabled) {
effect.enable(player, strength);
} else {
effect.disable(player);
if (ArmorUtils.isWearingAdvanced(player)) {
Object advancedStrength = set.getAdvancedEffectStrength(effect);
if (advancedStrength != null) {
strength = advancedStrength;
}
}
if (set == null || !conditionsMet) {
for (PotionEffect effect : player.getActivePotionEffects()) {
if (effect.getDuration() >= 0x5ffffff && effect.getDuration() <= 0x6ffffff) {
player.removePotionEffect(effect.getType());
}
}
if (strength == null) {
enabled = false;
}
if (!conditionsMet) {
enabled = false;
}
if (enabled) {
effect.enable(player, strength);
} else {
set.getPotionEffects().forEach((potionEffectType, integer) -> {
effect.disable(player);
}
}
if (set == null || !conditionsMet) {
for (PotionEffect effect : player.getActivePotionEffects()) {
if (effect.getDuration() >= 0x5ffffff && effect.getDuration() <= 0x6ffffff) {
player.removePotionEffect(effect.getType());
}
}
} else {
set.getPotionEffects().forEach((potionEffectType, integer) -> {
player.addPotionEffect(new PotionEffect(potionEffectType, 0x6ffffff, integer - 1, false, false, true));
});
if (ArmorUtils.isWearingAdvanced(player)) {
set.getAdvancedPotionEffects().forEach((potionEffectType, integer) -> {
player.addPotionEffect(new PotionEffect(potionEffectType, 0x6ffffff, integer - 1, false, false, true));
});
if (ArmorUtils.isWearingAdvanced(player)) {
set.getAdvancedPotionEffects().forEach((potionEffectType, integer) -> {
player.addPotionEffect(new PotionEffect(potionEffectType, 0x6ffffff, integer - 1, false, false, true));
});
}
}
}, 1);
}
}
}

View File

@@ -278,7 +278,11 @@ public class ArmorSet {
if (!ArmorUtils.isAdvanced(itemStack)) {
return false;
}
return Objects.equals(this.getName(), ArmorUtils.getSetOnItem(test).getName());
if (ArmorUtils.getSetOnItem(test) == null) {
return false;
}
return Objects.equals(this, ArmorUtils.getSetOnItem(test));
}, itemStack).register();
} else {
new CustomItem(this.getPlugin().getNamespacedKeyFactory().create("set_" + name.toLowerCase() + "_" + slot.name().toLowerCase()), test -> {
@@ -288,7 +292,11 @@ public class ArmorSet {
if (ArmorUtils.isAdvanced(itemStack)) {
return false;
}
return Objects.equals(this.getName(), ArmorUtils.getSetOnItem(test).getName());
if (ArmorUtils.getSetOnItem(test) == null) {
return false;
}
return Objects.equals(this, ArmorUtils.getSetOnItem(test));
}, itemStack).register();
}