Listen up!

This commit is contained in:
skippyall
2026-01-05 13:12:40 +01:00
parent c5b3c883ca
commit 3f2a52fd0a
87 changed files with 2191 additions and 492 deletions
@@ -4,18 +4,26 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import it.unimi.dsi.fastutil.objects.ObjectSet;
import net.minecraft.server.world.ChunkLevelManager;
import net.minecraft.server.world.ChunkTicketManager;
import org.slf4j.Logger;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(value = ChunkLevelManager.class)
public class ChunkTicketManagerFixMixin {
@Shadow
@Final
private static Logger LOGGER;
@WrapOperation(method = "handleChunkLeave", at = @At(value = "INVOKE", target = "Lit/unimi/dsi/fastutil/objects/ObjectSet;remove(Ljava/lang/Object;)Z", remap = false))
public boolean filterIfNull(ObjectSet instance, Object o, Operation<Boolean> original) {
if (instance != null) {
return original.call(instance, o);
}
LOGGER.error("Prevented NPE in handleChunkLeave");
return false;//Unused
}
@@ -25,6 +33,8 @@ public class ChunkTicketManagerFixMixin {
return original.call(instance);
}
LOGGER.error("Prevented NPE in handleChunkLeave");
return true;//Unused
}
}
@@ -21,7 +21,7 @@ import java.util.concurrent.Executor;
@Mixin(ChunkLevelManager.class)
public class ChunkLevelManagerMixin implements ChunkLevelManagerAccessor {
@Shadow @Final private Long2ObjectMap<ObjectSet<ServerPlayerEntity>> playersByChunkPos;
@Shadow @Final Long2ObjectMap<ObjectSet<ServerPlayerEntity>> playersByChunkPos;
@Shadow @Final private ChunkLevelManager.DistanceFromNearestPlayerTracker distanceFromNearestPlayerTracker;
@Unique
ChunkLevelManager.DistanceFromNearestPlayerTracker minionless;
@@ -1,4 +1,4 @@
package io.github.skippyall.minions.mixins;
package io.github.skippyall.minions.mixins.compat.universal_graves;
import com.llamalad7.mixinextras.sugar.Local;
import eu.pb4.graves.grave.Grave;
@@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;
@Mixin(Grave.class)
public class GraveCompatMixin {
public class GraveMixin {
@ModifyArg(method = "createBlock", at = @At(value = "INVOKE", target = "Leu/pb4/graves/grave/Grave;<init>(JLcom/mojang/authlib/GameProfile;BLnet/minecraft/util/Arm;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/Identifier;Leu/pb4/graves/grave/GraveType;JJILnet/minecraft/text/Text;Ljava/util/Collection;Ljava/util/Collection;ZI)V"))
private static boolean createGrave(boolean profile, @Local(argsOnly = true) ServerPlayerEntity player) {
if(player instanceof MinionFakePlayer) {