BetterEnd

BetterEnd

27M Downloads

[Bug] CrystaliteArmor regeneration effect is applied to all living entities that have no armor slots

TelepathicGrunt opened this issue ยท 0 comments

commented

What happened?

I was getting reports that my Cosmic Crystal Entity boss in Bumblezone was impossible to be defeated due to a constant regeneration status effect being applied. I made a test jar and printed out the stacktrace when the effect is added to my entity. I have found it is coming from BetterEnd here:

public static boolean hasFullSet(LivingEntity owner) {
for (ItemStack armorStack : owner.getArmorSlots()) {
if (!(armorStack.getItem() instanceof CrystaliteArmor)) {
return false;
}
}
return true;
}

My entity has no armor slots so true is always returned which means BetterEnd thinks my entity and any others without armor slots is wearing the full CrystaliteArmor set. And then applies the regeneration effect to them. This logic should be changed to make sure there's at least 1 of your armor present before returning true.

BetterEnd

4.0.10

BCLib

3.0.13

Fabric API

0.91.0+1.20.1

Fabric Loader

0.14.25

Minecraft

1.20.1

Relevant log output

[17:48:14] [Server thread/ERROR]: [java.base/java.lang.Thread.getStackTrace(Thread.java:1610)
com.telepathicgrunt.the_bumblezone.entities.living.CosmicCrystalEntity.canHaveStatusEffect(CosmicCrystalEntity.java:1520)
net.minecraft.entity.LivingEntity.addStatusEffect(LivingEntity.java:984)
net.minecraft.entity.LivingEntity.addStatusEffect(LivingEntity.java:980)
org.betterx.betterend.item.CrystaliteArmor.applySetEffect(CrystaliteArmor.java:35)
net.minecraft.entity.LivingEntity.handler$ccm000$betterend$be_applyEffects(LivingEntity.java:5668)
net.minecraft.entity.LivingEntity.tickStatusEffects(LivingEntity.java)
com.telepathicgrunt.the_bumblezone.entities.living.CosmicCrystalEntity.baseTick(CosmicCrystalEntity.java:1182)
net.minecraft.entity.Entity.tick(Entity.java:474)
net.minecraft.entity.LivingEntity.tick(LivingEntity.java:2380)
com.telepathicgrunt.the_bumblezone.entities.living.CosmicCrystalEntity.tick(CosmicCrystalEntity.java:540)
net.minecraft.server.world.ServerWorld.tickEntity(ServerWorld.java:739)
net.minecraft.world.World.mixinextras$bridge$accept$206(World.java)
com.bawnorton.neruina.handler.NeruinaTickHandler.safelyTickEntities$notTheCauseOfTickLag(NeruinaTickHandler.java:115)
net.minecraft.world.World.wrapOperation$inc000$neruina$catchTickingEntities(World.java:15048)
net.minecraft.world.World.tickEntity(World.java:480)
net.minecraft.server.world.ServerWorld.method_31420(ServerWorld.java:385)
net.minecraft.world.EntityList.forEach(EntityList.java:54)
net.minecraft.server.world.ServerWorld.tick(ServerWorld.java:353)
net.minecraft.server.MinecraftServer.tickWorlds(MinecraftServer.java:897)
net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:824)
net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:105)
net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:671)
net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:265)
java.base/java.lang.Thread.run(Thread.java:833)]

Other Mods

The Bumblezone
MidnightLib