aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoranhgelus <anhgelus.morhtuuzh@proton.me>2024-07-27 20:28:54 +0000
committeranhgelus <anhgelus.morhtuuzh@proton.me>2024-07-27 20:28:54 +0000
commitcc667fc18e5f76445bc347139a6d731418c781b1 (patch)
tree5a173d6612621e4d9e283e1041e5ffa3f48a09f4
parent944acad6b3e253d95675bf76c5bce9c417f07ecb (diff)
fix(compass): not working
Thanks @Leo-210 for the help
-rw-r--r--README.md4
-rw-r--r--src/main/java/world/anhgelus/manhunt/Manhunt.java3
-rw-r--r--src/main/java/world/anhgelus/manhunt/mixins/Tracker.java16
-rw-r--r--src/main/resources/fabric.mod.json3
-rw-r--r--src/main/resources/manhunt.mixins.json11
5 files changed, 36 insertions, 1 deletions
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<LodestoneTrackerComponent> 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