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:
@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user