diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/MobEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/MobEntityMixin.java index bbe418ba..ffa1d7b1 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/MobEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/MobEntityMixin.java @@ -93,7 +93,7 @@ public abstract class MobEntityMixin extends LivingEntityMixin implements MobEnt this.aware = true; } - private transient AtomicBoolean arclight$targetSuccess; + protected transient AtomicBoolean arclight$targetSuccess; private transient EntityTargetEvent.TargetReason arclight$reason; private transient boolean arclight$fireEvent; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/monster/EndermanEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/monster/EndermanEntityMixin.java index 4b2ad392..8330b33c 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/monster/EndermanEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/entity/monster/EndermanEntityMixin.java @@ -9,6 +9,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import javax.annotation.Nullable; +import java.util.concurrent.atomic.AtomicBoolean; @Mixin(EndermanEntity.class) public abstract class EndermanEntityMixin extends CreatureEntityMixin implements EndermanEntityBridge { @@ -28,9 +29,16 @@ public abstract class EndermanEntityMixin extends CreatureEntityMixin implements */ @Overwrite public void setAttackTarget(@Nullable LivingEntity entity) { - if (!super.setGoalTarget(entity, EntityTargetEvent.TargetReason.UNKNOWN, true)) { + if (this.getAttackTarget() == entity) { return; } - bridge$updateTarget(getAttackTarget()); + this.bridge$pushGoalTargetReason(EntityTargetEvent.TargetReason.UNKNOWN, true); + arclight$targetSuccess = new AtomicBoolean(); + super.setAttackTarget(entity); + boolean ret = arclight$targetSuccess.get(); + arclight$targetSuccess = null; + if (ret) { + bridge$updateTarget(getAttackTarget()); + } } } diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java index a7df2e0d..e1516d89 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/BukkitRegistry.java @@ -9,7 +9,8 @@ import io.izzel.arclight.common.bridge.bukkit.MaterialBridge; import io.izzel.arclight.common.bridge.world.dimension.DimensionTypeBridge; import io.izzel.arclight.common.mod.ArclightMod; import io.izzel.arclight.common.mod.util.ResourceLocationUtil; -import io.izzel.arclight.common.mod.util.potion.ArclightPotionEffect; +import io.izzel.arclight.common.mod.util.types.ArclightEnchantment; +import io.izzel.arclight.common.mod.util.types.ArclightPotionEffect; import io.izzel.arclight.i18n.ArclightConfig; import io.izzel.arclight.i18n.conf.EntityPropertySpec; import io.izzel.arclight.i18n.conf.MaterialPropertySpec; @@ -29,7 +30,6 @@ import org.bukkit.NamespacedKey; import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.craftbukkit.v.CraftCrashReport; -import org.bukkit.craftbukkit.v.enchantments.CraftEnchantment; import org.bukkit.craftbukkit.v.util.CraftMagicNumbers; import org.bukkit.craftbukkit.v.util.CraftNamespacedKey; import org.bukkit.enchantments.Enchantment; @@ -167,7 +167,10 @@ public class BukkitRegistry { int size = ForgeRegistries.ENCHANTMENTS.getEntries().size(); putBool(Enchantment.class, "acceptingNew", true); for (Map.Entry entry : ForgeRegistries.ENCHANTMENTS.getEntries()) { - Enchantment.registerEnchantment(new CraftEnchantment(entry.getValue())); + String name = ResourceLocationUtil.standardize(entry.getKey()); + ArclightEnchantment enchantment = new ArclightEnchantment(entry.getValue(), name); + Enchantment.registerEnchantment(enchantment); + ArclightMod.LOGGER.debug("Registered {} as enchantment {}", entry.getKey(), enchantment); } Enchantment.stopAcceptingRegistrations(); ArclightMod.LOGGER.info("registry.enchantment", size - origin); diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/types/ArclightEnchantment.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/types/ArclightEnchantment.java new file mode 100644 index 00000000..fecbb3c2 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/types/ArclightEnchantment.java @@ -0,0 +1,25 @@ +package io.izzel.arclight.common.mod.util.types; + +import net.minecraft.enchantment.Enchantment; +import org.bukkit.craftbukkit.v.enchantments.CraftEnchantment; +import org.jetbrains.annotations.NotNull; + +public class ArclightEnchantment extends CraftEnchantment { + + private final String name; + + public ArclightEnchantment(Enchantment target, String name) { + super(target); + this.name = name; + } + + @Override + public @NotNull String getName() { + String name = super.getName(); + if (name.startsWith("UNKNOWN_ENCHANT_")) { + return this.name; + } else { + return name; + } + } +} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/potion/ArclightPotionEffect.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/types/ArclightPotionEffect.java similarity index 91% rename from arclight-common/src/main/java/io/izzel/arclight/common/mod/util/potion/ArclightPotionEffect.java rename to arclight-common/src/main/java/io/izzel/arclight/common/mod/util/types/ArclightPotionEffect.java index 177faffa..676e9ce0 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/potion/ArclightPotionEffect.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mod/util/types/ArclightPotionEffect.java @@ -1,4 +1,4 @@ -package io.izzel.arclight.common.mod.util.potion; +package io.izzel.arclight.common.mod.util.types; import net.minecraft.potion.Effect; import org.bukkit.craftbukkit.v.potion.CraftPotionEffectType; diff --git a/build.gradle b/build.gradle index dd13fc59..75711082 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ import java.nio.file.attribute.BasicFileAttributes allprojects { group 'io.izzel.arclight' - version '1.0.3' + version '1.0.4-SNAPSHOT' ext { agpVersion = '1.7'