Rewrote handle method to use new totem item class. Fixed issue where it only got the dynamic target cost regardless of totem using dynamic or static cost types.

This commit is contained in:
2022-01-18 17:57:20 +00:00
parent 82a9399146
commit ebbbff68c9

View File

@ -1,18 +1,19 @@
package dev.micle.totemofreviving.network; package dev.micle.totemofreviving.network;
import dev.micle.totemofreviving.TotemOfReviving; import dev.micle.totemofreviving.TotemOfReviving;
import dev.micle.totemofreviving.item.TotemItem;
import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer; import net.minecraft.network.PacketBuffer;
import net.minecraft.server.management.PlayerList; import net.minecraft.server.management.PlayerList;
import net.minecraft.stats.Stats; import net.minecraft.stats.Stats;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.network.NetworkEvent; import net.minecraftforge.fml.network.NetworkEvent;
import java.util.function.Supplier; import java.util.function.Supplier;
import static dev.micle.totemofreviving.item.StrawTotemItem.*;
public class ChangeTargetPacket { public class ChangeTargetPacket {
private final Hand hand; private final Hand hand;
@ -35,19 +36,24 @@ public class ChangeTargetPacket {
context.enqueueWork(() -> { context.enqueueWork(() -> {
ServerPlayerEntity sender = context.getSender(); ServerPlayerEntity sender = context.getSender();
if (sender == null) { return; } if (sender == null) { return; }
ItemStack totem = sender.getItemInHand(packet.hand);
ItemStack totemStack = sender.getItemInHand(packet.hand);
PlayerList playerList = TotemOfReviving.PROXY.getServer().getPlayerList(); PlayerList playerList = TotemOfReviving.PROXY.getServer().getPlayerList();
int targetIndex = TotemItem.getTargetIndex(totemStack) + 1;
int targetIndex = totem.getOrCreateTag().getInt(TAG_TARGET_INDEX) + 1; if (targetIndex > playerList.getPlayerCount()-1) { targetIndex = 0; }
if (targetIndex > playerList.getPlayerCount()-1) {
targetIndex = 0;
}
ServerPlayerEntity target = playerList.getPlayers().get(targetIndex); ServerPlayerEntity target = playerList.getPlayers().get(targetIndex);
totem.getOrCreateTag().putInt(TAG_TARGET_INDEX, targetIndex); TotemItem.setTargetIndex(totemStack, targetIndex);
totem.getOrCreateTag().putString(TAG_TARGET_UUID, target.getStringUUID()); TotemItem.setTargetUUID(totemStack, target.getUUID());
totem.getOrCreateTag().putInt(TAG_TARGET_CHARGE, target.getStats().getValue(Stats.CUSTOM.get(Stats.DEATHS))); TotemItem.setTagTargetName(totemStack, target.getDisplayName().getString());
if (TotemItem.isCostDynamic(totemStack)) {
TotemItem.setTargetCost(totemStack, target.getStats().getValue(Stats.CUSTOM.get(Stats.DEATHS)));
} else {
TotemItem.setTargetCost(totemStack, TotemItem.getMaxCharge(totemStack));
}
sender.sendMessage(new StringTextComponent(TextFormatting.WHITE + "Now targetting " + TextFormatting.GRAY + target.getDisplayName().getString()), sender.getUUID());
}); });
context.setPacketHandled(true); context.setPacketHandled(true);
} }