fix: add nms Pose registry to BukkitRegistry
Some checks failed
Java CI with Gradle / build (push) Has been cancelled

This commit is contained in:
琴里里 2024-11-18 16:22:35 +08:00
parent fded76e5ac
commit e79a3a5aa3
No known key found for this signature in database
GPG Key ID: EA67C71AC4BD7526
2 changed files with 18 additions and 1 deletions

View File

@ -11,6 +11,7 @@ import io.izzel.arclight.common.bridge.core.entity.player.ServerPlayerEntityBrid
import io.izzel.arclight.common.bridge.core.network.datasync.EntityDataManagerBridge; import io.izzel.arclight.common.bridge.core.network.datasync.EntityDataManagerBridge;
import io.izzel.arclight.common.bridge.core.world.TeleporterBridge; import io.izzel.arclight.common.bridge.core.world.TeleporterBridge;
import io.izzel.arclight.common.bridge.core.world.WorldBridge; import io.izzel.arclight.common.bridge.core.world.WorldBridge;
import io.izzel.arclight.common.mod.server.BukkitRegistry;
import io.izzel.arclight.common.mod.util.ArclightCaptures; import io.izzel.arclight.common.mod.util.ArclightCaptures;
import net.minecraft.BlockUtil; import net.minecraft.BlockUtil;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@ -290,7 +291,7 @@ public abstract class EntityMixin implements InternalEntityBridge, EntityBridge,
callbackInfo.cancel(); callbackInfo.cancel();
return; return;
} }
EntityPoseChangeEvent event = new EntityPoseChangeEvent(this.internal$getBukkitEntity(), org.bukkit.entity.Pose.values()[poseIn.ordinal()]); EntityPoseChangeEvent event = new EntityPoseChangeEvent(this.internal$getBukkitEntity(), BukkitRegistry.toBukkitPose(poseIn));
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
} }

View File

@ -56,6 +56,7 @@ import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.EnderDragon; import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Pose;
import org.bukkit.entity.SpawnCategory; import org.bukkit.entity.SpawnCategory;
import org.bukkit.entity.Villager; import org.bukkit.entity.Villager;
import org.bukkit.inventory.CreativeCategory; import org.bukkit.inventory.CreativeCategory;
@ -119,6 +120,21 @@ public class BukkitRegistry {
} }
} }
public static Pose toBukkitPose(net.minecraft.world.entity.Pose nms) {
if (Pose.values().length <= nms.ordinal()) {
var newTypes = new ArrayList<Pose>();
var forgeCount = net.minecraft.world.entity.Pose.values().length;
for (var id = Pose.values().length; id < forgeCount; id++) {
var name = net.minecraft.world.entity.Pose.values()[id].name();
var newPhase = EnumHelper.makeEnum(Pose.class, name, id, List.of(), List.of());
newTypes.add(newPhase);
ArclightMod.LOGGER.debug("Registered {} as pose {}", name, newPhase);
}
EnumHelper.addEnums(Pose.class, newTypes);
}
return org.bukkit.entity.Pose.values()[nms.ordinal()];
}
private static void loadEndDragonPhase() { private static void loadEndDragonPhase() {
var max = EnderDragonPhase.getCount(); var max = EnderDragonPhase.getCount();
var newTypes = new ArrayList<EnderDragon.Phase>(); var newTypes = new ArrayList<EnderDragon.Phase>();