* #583 Update dragonPhase dynamically * Remove author annotation * Fix build * Formatting
This commit is contained in:
parent
87c9caa8ed
commit
473aa47edb
@ -0,0 +1,42 @@
|
|||||||
|
package io.izzel.arclight.common.mixin.bukkit;
|
||||||
|
|
||||||
|
import io.izzel.arclight.api.EnumHelper;
|
||||||
|
import io.izzel.arclight.common.mod.ArclightMod;
|
||||||
|
import net.minecraft.world.entity.boss.enderdragon.phases.EnderDragonPhase;
|
||||||
|
import org.bukkit.craftbukkit.v.entity.CraftEnderDragon;
|
||||||
|
import org.bukkit.entity.EnderDragon;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mixin(value = CraftEnderDragon.class, remap = false)
|
||||||
|
public class CraftEnderDragonMixin {
|
||||||
|
|
||||||
|
@Inject(method = "getPhase", at = @At("HEAD"))
|
||||||
|
public void arclight$getPhase(CallbackInfoReturnable<EnderDragon.Phase> cir) {
|
||||||
|
checkAndUpdateDragonPhase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "getBukkitPhase", at = @At("HEAD"))
|
||||||
|
private static void arclight$getBukkitPhase(EnderDragonPhase phase, CallbackInfoReturnable<EnderDragon.Phase> cir) {
|
||||||
|
checkAndUpdateDragonPhase();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void checkAndUpdateDragonPhase() {
|
||||||
|
var forgeCount = EnderDragonPhase.getCount();
|
||||||
|
if (EnderDragon.Phase.values().length != forgeCount) {
|
||||||
|
var newTypes = new ArrayList<EnderDragon.Phase>();
|
||||||
|
for (var id = EnderDragon.Phase.values().length; id < forgeCount; id++) {
|
||||||
|
var name = "MOD_PHASE_" + id;
|
||||||
|
var newPhase = EnumHelper.makeEnum(EnderDragon.Phase.class, name, id, List.of(), List.of());
|
||||||
|
newTypes.add(newPhase);
|
||||||
|
ArclightMod.LOGGER.debug("Registered {} as ender dragon phase {}", name, newPhase);
|
||||||
|
}
|
||||||
|
EnumHelper.addEnums(EnderDragon.Phase.class, newTypes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -18,6 +18,7 @@
|
|||||||
"CraftBlockStateMixin",
|
"CraftBlockStateMixin",
|
||||||
"CraftConsoleCommandSenderMixin",
|
"CraftConsoleCommandSenderMixin",
|
||||||
"CraftCreativeCategoryMixin",
|
"CraftCreativeCategoryMixin",
|
||||||
|
"CraftEnderDragonMixin",
|
||||||
"CraftEntityMixin",
|
"CraftEntityMixin",
|
||||||
"CraftEventFactoryMixin",
|
"CraftEventFactoryMixin",
|
||||||
"CraftHumanEntityMixin",
|
"CraftHumanEntityMixin",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user