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 --- README.md | 4 +++- 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 +++++++++++ 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/main/java/world/anhgelus/manhunt/mixins/Tracker.java create mode 100644 src/main/resources/manhunt.mixins.json diff --git a/README.md b/README.md index 9627041..b722819 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ Simple server-side Fabric mod creating a manhunt in Minecraft. Made for Minecraft 1.21. Disable the spawn of Piglin Brute and revert loot_table of Piglin bartering's update in Minecraft 1.16.2 (Nether is the -same as Minecraft 1.16.1). +same as Minecraft 1.16.1). + +:warning: When you broke a lodestone, the compass is still focused on this lodestone! ## Usage 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