diff --git a/demo/src/main/java/net/minestom/demo/PlayerInit.java b/demo/src/main/java/net/minestom/demo/PlayerInit.java index d82add7d8..cc6644c01 100644 --- a/demo/src/main/java/net/minestom/demo/PlayerInit.java +++ b/demo/src/main/java/net/minestom/demo/PlayerInit.java @@ -40,6 +40,7 @@ import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.minestom.server.item.component.BlockPredicates; import net.minestom.server.item.component.EnchantmentList; +import net.minestom.server.item.component.LodestoneTracker; import net.minestom.server.item.component.PotionContents; import net.minestom.server.item.enchant.Enchantment; import net.minestom.server.monitoring.BenchmarkManager; @@ -156,6 +157,10 @@ public class PlayerInit { .build(); player.getInventory().addItemStack(bundle); + player.getInventory().addItemStack(ItemStack.builder(Material.COMPASS) + .set(ItemComponent.LODESTONE_TRACKER, new LodestoneTracker(player.getInstance().getDimensionName(), new Vec(10, 10, 10), true)) + .build()); + player.getInventory().addItemStack(ItemStack.builder(Material.STONE_SWORD) .set(ItemComponent.ENCHANTMENTS, new EnchantmentList(Map.of( Enchantment.SHARPNESS, 10 diff --git a/src/main/java/net/minestom/server/item/component/LodestoneTracker.java b/src/main/java/net/minestom/server/item/component/LodestoneTracker.java index 2e5564795..befd8f6a5 100644 --- a/src/main/java/net/minestom/server/item/component/LodestoneTracker.java +++ b/src/main/java/net/minestom/server/item/component/LodestoneTracker.java @@ -6,20 +6,21 @@ import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.play.data.WorldPos; import net.minestom.server.utils.nbt.BinaryTagSerializer; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public record LodestoneTracker(@NotNull WorldPos target, boolean tracked) { +public record LodestoneTracker(@Nullable WorldPos target, boolean tracked) { public static final NetworkBuffer.Type NETWORK_TYPE = new NetworkBuffer.Type<>() { @Override public void write(@NotNull NetworkBuffer buffer, @NotNull LodestoneTracker value) { - buffer.write(WorldPos.NETWORK_TYPE, value.target); + buffer.writeOptional(WorldPos.NETWORK_TYPE, value.target); buffer.write(NetworkBuffer.BOOLEAN, value.tracked); } @Override public @NotNull LodestoneTracker read(@NotNull NetworkBuffer buffer) { return new LodestoneTracker( - buffer.read(WorldPos.NETWORK_TYPE), + buffer.readOptional(WorldPos.NETWORK_TYPE), buffer.read(NetworkBuffer.BOOLEAN) ); } @@ -39,7 +40,7 @@ public record LodestoneTracker(@NotNull WorldPos target, boolean tracked) { this(new WorldPos(dimension, blockPosition), tracked); } - public @NotNull LodestoneTracker withTarget(@NotNull WorldPos target) { + public @NotNull LodestoneTracker withTarget(@Nullable WorldPos target) { return new LodestoneTracker(target, tracked); }