diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftAbstractVillagerMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftAbstractVillagerMixin.java new file mode 100644 index 00000000..668cfe23 --- /dev/null +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftAbstractVillagerMixin.java @@ -0,0 +1,19 @@ +package io.izzel.arclight.common.mixin.bukkit; + +import net.minecraft.entity.merchant.villager.AbstractVillagerEntity; +import org.bukkit.craftbukkit.v.entity.CraftAbstractVillager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(CraftAbstractVillager.class) +public class CraftAbstractVillagerMixin extends CraftEntityMixin { + + /** + * @author IzzelAliz + * @reason + */ + @Overwrite + public AbstractVillagerEntity getHandle() { + return (AbstractVillagerEntity) this.entity; + } +} diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java index 79e031d0..5db9f887 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/bukkit/CraftEntityMixin.java @@ -10,7 +10,6 @@ import io.izzel.arclight.common.mod.server.entity.ArclightModMinecartContainer; import io.izzel.arclight.common.mod.server.entity.ArclightModMob; import io.izzel.arclight.common.mod.server.entity.ArclightModProjectile; import io.izzel.arclight.common.mod.server.entity.ArclightModRaider; -import io.izzel.arclight.common.mod.server.entity.ArclightModVillager; import net.minecraft.entity.AgeableEntity; import net.minecraft.entity.Entity; import net.minecraft.entity.FlyingEntity; @@ -18,7 +17,6 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.MobEntity; import net.minecraft.entity.item.minecart.AbstractMinecartEntity; import net.minecraft.entity.item.minecart.ContainerMinecartEntity; -import net.minecraft.entity.merchant.villager.AbstractVillagerEntity; import net.minecraft.entity.monster.AbstractRaiderEntity; import net.minecraft.entity.passive.GolemEntity; import net.minecraft.entity.passive.TameableEntity; @@ -33,6 +31,7 @@ import org.bukkit.craftbukkit.v.entity.CraftFlying; import org.bukkit.craftbukkit.v.entity.CraftGolem; import org.bukkit.craftbukkit.v.entity.CraftTameableAnimal; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -40,6 +39,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = CraftEntity.class, remap = false) public class CraftEntityMixin { + @Shadow protected Entity entity; + @Inject(method = "getEntity", cancellable = true, at = @At("HEAD")) private static void arclight$fakePlayer(CraftServer server, Entity entity, CallbackInfoReturnable cir) { if (entity instanceof FakePlayer) { @@ -60,10 +61,6 @@ public class CraftEntityMixin { cir.setReturnValue(new ArclightModHorse(server, (AbstractHorseEntity) entity)); return; } - if (entity instanceof AbstractVillagerEntity) { - cir.setReturnValue(new ArclightModVillager(server, (AbstractVillagerEntity) entity)); - return; - } if (entity instanceof TameableEntity) { cir.setReturnValue(new CraftTameableAnimal(server, (TameableEntity) entity)); return; diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/entity/ArclightModVillager.java b/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/entity/ArclightModVillager.java deleted file mode 100644 index 2cc3e66d..00000000 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mod/server/entity/ArclightModVillager.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.izzel.arclight.common.mod.server.entity; - -import io.izzel.arclight.common.mod.util.ResourceLocationUtil; -import net.minecraft.entity.merchant.villager.AbstractVillagerEntity; -import net.minecraftforge.registries.ForgeRegistries; -import org.bukkit.craftbukkit.v.CraftServer; -import org.bukkit.craftbukkit.v.entity.CraftAbstractVillager; -import org.bukkit.entity.EntityType; -import org.jetbrains.annotations.NotNull; - -public class ArclightModVillager extends CraftAbstractVillager { - - private final EntityType entityType; - - public ArclightModVillager(CraftServer server, AbstractVillagerEntity entity) { - super(server, entity); - this.entityType = EntityType.valueOf(ResourceLocationUtil.standardize(ForgeRegistries.ENTITIES.getKey(entity.getType()))); - } - - @Override - public @NotNull EntityType getType() { - return this.entityType; - } - - @Override - public String toString() { - return "ArclightModVillager{" + entityType + '}'; - } -} diff --git a/arclight-common/src/main/resources/mixins.arclight.bukkit.json b/arclight-common/src/main/resources/mixins.arclight.bukkit.json index 50a001f9..a813bab0 100644 --- a/arclight-common/src/main/resources/mixins.arclight.bukkit.json +++ b/arclight-common/src/main/resources/mixins.arclight.bukkit.json @@ -9,6 +9,7 @@ "mixins": [ "BukkitCommandWrapperMixin", "ColouredConsoleSenderMixin", + "CraftAbstractVillagerMixin", "CraftBlockMixin", "CraftBlockStateMixin", "CraftChunkMixin",