From cc667fc18e5f76445bc347139a6d731418c781b1 Mon Sep 17 00:00:00 2001 From: anhgelus Date: Sat, 27 Jul 2024 20:28:54 +0000 Subject: fix(compass): not working Thanks @Leo-210 for the help --- src/main/java/world/anhgelus/manhunt/Manhunt.java | 3 +++ src/main/java/world/anhgelus/manhunt/mixins/Tracker.java | 16 ++++++++++++++++ src/main/resources/fabric.mod.json | 3 +++ src/main/resources/manhunt.mixins.json | 11 +++++++++++ 4 files changed, 33 insertions(+) create mode 100644 src/main/java/world/anhgelus/manhunt/mixins/Tracker.java create mode 100644 src/main/resources/manhunt.mixins.json (limited to 'src') diff --git a/src/main/java/world/anhgelus/manhunt/Manhunt.java b/src/main/java/world/anhgelus/manhunt/Manhunt.java index a059c90..5c712ca 100644 --- a/src/main/java/world/anhgelus/manhunt/Manhunt.java +++ b/src/main/java/world/anhgelus/manhunt/Manhunt.java @@ -160,6 +160,9 @@ public class Manhunt implements ModInitializer { private void updateCompass(ServerPlayerEntity player, ServerPlayerEntity tracked) { final var trackerCpnt = new LodestoneTrackerComponent(Optional.of(GlobalPos.create(tracked.getWorld().getRegistryKey(), tracked.getBlockPos())), true); + LOGGER.info(tracked.getWorld().getRegistryKey().toString()); + LOGGER.info(tracked.getBlockPos().toString()); + LOGGER.info(trackerCpnt.toString()); ItemStack is = null; int slot = PlayerInventory.NOT_FOUND; final var inv = player.getInventory(); diff --git a/src/main/java/world/anhgelus/manhunt/mixins/Tracker.java b/src/main/java/world/anhgelus/manhunt/mixins/Tracker.java new file mode 100644 index 0000000..eaaa336 --- /dev/null +++ b/src/main/java/world/anhgelus/manhunt/mixins/Tracker.java @@ -0,0 +1,16 @@ +package world.anhgelus.manhunt.mixins; + +import net.minecraft.component.type.LodestoneTrackerComponent; +import net.minecraft.server.world.ServerWorld; +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; + +@Mixin(LodestoneTrackerComponent.class) +public class Tracker { + @Inject(method = "forWorld", at = @At("HEAD"), cancellable = true) + public void forWorld(ServerWorld world, CallbackInfoReturnable cir) { + cir.setReturnValue((LodestoneTrackerComponent) (Object) this); + } +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index b097ea1..d20a285 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -18,6 +18,9 @@ "world.anhgelus.manhunt.Manhunt" ] }, + "mixins": [ + "manhunt.mixins.json" + ], "depends": { "fabricloader": ">=0.15.11", "minecraft": "~1.21", diff --git a/src/main/resources/manhunt.mixins.json b/src/main/resources/manhunt.mixins.json new file mode 100644 index 0000000..994072c --- /dev/null +++ b/src/main/resources/manhunt.mixins.json @@ -0,0 +1,11 @@ +{ + "required": true, + "package": "world.anhgelus.manhunt.mixins", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "Tracker" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file -- cgit v1.2.3