diff --git a/src/main/java/dev/micle/totem_of_reviving/item/totem/TotemItem.java b/src/main/java/dev/micle/totem_of_reviving/item/totem/TotemItem.java index 0864562..960a422 100644 --- a/src/main/java/dev/micle/totem_of_reviving/item/totem/TotemItem.java +++ b/src/main/java/dev/micle/totem_of_reviving/item/totem/TotemItem.java @@ -6,6 +6,7 @@ import dev.micle.totem_of_reviving.setup.ModDataComponents; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.network.chat.Component; +import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.players.PlayerList; @@ -85,23 +86,24 @@ public abstract class TotemItem extends Item { return (stack.getItem() instanceof TotemItem); } - public static Optional cycleTarget(ItemStack itemStack, PlayerList playerList) { - if (!isTotem(itemStack)) return Optional.empty(); + public static Component cycleTarget(ItemStack itemStack, PlayerList playerList) { + if (!isTotem(itemStack)) return Component.empty(); TotemData totemData = getTotemData(itemStack); int targetIndex = totemData.getTargetIndex() + 1; targetIndex = targetIndex >= playerList.getPlayerCount() ? 0 : targetIndex; ServerPlayer target = playerList.getPlayers().get(targetIndex); - - setTotemData(itemStack, new TotemData( + TotemData newTotemData = new TotemData( targetIndex, target.getStringUUID(), target.getScoreboardName(), target.getStats().getValue(Stats.CUSTOM.get(Stats.DEATHS)), totemData.getCharge() - )); - return Optional.of(totemData); + ); + + setTotemData(itemStack, newTotemData); + return Component.literal(ChatFormatting.WHITE + "Now targetting " + ChatFormatting.GRAY + newTotemData.getTargetName() + "."); } public static boolean chargeTotem(ItemStack totemStack, ItemStack chargeStack) { @@ -236,24 +238,23 @@ public abstract class TotemItem extends Item { public @NotNull InteractionResultHolder use(Level level, Player player, InteractionHand usedHand) { if (level.isClientSide) return super.use(level, player, usedHand); - System.out.println("HERE"); + MinecraftServer server = level.getServer(); + if (server == null) return super.use(level, player, usedHand); - EquipmentSlot equipmentSlot = (usedHand.equals(InteractionHand.MAIN_HAND)) ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND; + EquipmentSlot slot = (usedHand.equals(InteractionHand.MAIN_HAND)) ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND; ItemStack totemStack = (usedHand.equals(InteractionHand.MAIN_HAND)) ? player.getMainHandItem() : player.getOffhandItem(); ItemStack chargeStack = (usedHand.equals(InteractionHand.MAIN_HAND)) ? player.getOffhandItem() : player.getMainHandItem(); if (player.isCrouching()) { - // Change Target Packet - Optional totemData = cycleTarget(totemStack, level.getServer().getPlayerList()); - totemData.ifPresent(data -> player.sendSystemMessage(Component.literal(ChatFormatting.WHITE + "Now targetting " + ChatFormatting.GRAY + data.getTargetName() + "."))); + // Change Target + player.sendSystemMessage(cycleTarget(totemStack, server.getPlayerList())); } else { if (isCharge(chargeStack)) { - // Charge Totem Packet + // Charge Totem chargeTotem(totemStack, chargeStack); } else { - // Revive Target Packet - Component message = reviveTarget(equipmentSlot, totemStack, level.getServer().getPlayerList().getPlayer(player.getUUID()), level.getServer().getPlayerList()); - player.sendSystemMessage(message); + // Revive Target + player.sendSystemMessage(reviveTarget(slot, totemStack, server.getPlayerList().getPlayer(player.getUUID()), server.getPlayerList())); } }