Fix class cast exception on mod villagers
This commit is contained in:
parent
d6bf0f12ea
commit
13c956e833
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.ArclightModMob;
|
||||||
import io.izzel.arclight.common.mod.server.entity.ArclightModProjectile;
|
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.ArclightModRaider;
|
||||||
import io.izzel.arclight.common.mod.server.entity.ArclightModVillager;
|
|
||||||
import net.minecraft.entity.AgeableEntity;
|
import net.minecraft.entity.AgeableEntity;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.FlyingEntity;
|
import net.minecraft.entity.FlyingEntity;
|
||||||
|
@ -18,7 +17,6 @@ import net.minecraft.entity.LivingEntity;
|
||||||
import net.minecraft.entity.MobEntity;
|
import net.minecraft.entity.MobEntity;
|
||||||
import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
|
import net.minecraft.entity.item.minecart.AbstractMinecartEntity;
|
||||||
import net.minecraft.entity.item.minecart.ContainerMinecartEntity;
|
import net.minecraft.entity.item.minecart.ContainerMinecartEntity;
|
||||||
import net.minecraft.entity.merchant.villager.AbstractVillagerEntity;
|
|
||||||
import net.minecraft.entity.monster.AbstractRaiderEntity;
|
import net.minecraft.entity.monster.AbstractRaiderEntity;
|
||||||
import net.minecraft.entity.passive.GolemEntity;
|
import net.minecraft.entity.passive.GolemEntity;
|
||||||
import net.minecraft.entity.passive.TameableEntity;
|
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.CraftGolem;
|
||||||
import org.bukkit.craftbukkit.v.entity.CraftTameableAnimal;
|
import org.bukkit.craftbukkit.v.entity.CraftTameableAnimal;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
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.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
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)
|
@Mixin(value = CraftEntity.class, remap = false)
|
||||||
public class CraftEntityMixin {
|
public class CraftEntityMixin {
|
||||||
|
|
||||||
|
@Shadow protected Entity entity;
|
||||||
|
|
||||||
@Inject(method = "getEntity", cancellable = true, at = @At("HEAD"))
|
@Inject(method = "getEntity", cancellable = true, at = @At("HEAD"))
|
||||||
private static void arclight$fakePlayer(CraftServer server, Entity entity, CallbackInfoReturnable<CraftEntity> cir) {
|
private static void arclight$fakePlayer(CraftServer server, Entity entity, CallbackInfoReturnable<CraftEntity> cir) {
|
||||||
if (entity instanceof FakePlayer) {
|
if (entity instanceof FakePlayer) {
|
||||||
|
@ -60,10 +61,6 @@ public class CraftEntityMixin {
|
||||||
cir.setReturnValue(new ArclightModHorse(server, (AbstractHorseEntity) entity));
|
cir.setReturnValue(new ArclightModHorse(server, (AbstractHorseEntity) entity));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (entity instanceof AbstractVillagerEntity) {
|
|
||||||
cir.setReturnValue(new ArclightModVillager(server, (AbstractVillagerEntity) entity));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (entity instanceof TameableEntity) {
|
if (entity instanceof TameableEntity) {
|
||||||
cir.setReturnValue(new CraftTameableAnimal(server, (TameableEntity) entity));
|
cir.setReturnValue(new CraftTameableAnimal(server, (TameableEntity) entity));
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -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 + '}';
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -9,6 +9,7 @@
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"BukkitCommandWrapperMixin",
|
"BukkitCommandWrapperMixin",
|
||||||
"ColouredConsoleSenderMixin",
|
"ColouredConsoleSenderMixin",
|
||||||
|
"CraftAbstractVillagerMixin",
|
||||||
"CraftBlockMixin",
|
"CraftBlockMixin",
|
||||||
"CraftBlockStateMixin",
|
"CraftBlockStateMixin",
|
||||||
"CraftChunkMixin",
|
"CraftChunkMixin",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user