Very WIP implementation of Sigil of Holding

This commit is contained in:
WayofTime 2021-01-19 19:26:23 -05:00
parent 072b83f440
commit b7e06f23bf
13 changed files with 1248 additions and 0 deletions

View file

@ -17,6 +17,8 @@ public class BloodMagicPacketHandler extends BasePacketHandler
registerServerToClient(ARCTanksPacket.class, ARCTanksPacket::encode, ARCTanksPacket::decode, ARCTanksPacket::handle);
registerServerToClient(DemonAuraClientPacket.class, DemonAuraClientPacket::encode, DemonAuraClientPacket::decode, DemonAuraClientPacket::handle);
registerServerToClient(SetClientHealthPacket.class, SetClientHealthPacket::encode, SetClientHealthPacket::decode, SetClientHealthPacket::handle);
registerClientToServer(KeyProcessorPacket.class, KeyProcessorPacket::encode, KeyProcessorPacket::decode, KeyProcessorPacket::handle);
// INSTANCE.registerMessage(id, messageType, encoder, decoder, messageConsumer);
// INSTANCE.registerMessage(ChatUtil.PacketNoSpamChat.Handler.class, ChatUtil.PacketNoSpamChat.class, 0, Side.CLIENT);
// INSTANCE.registerMessage(ItemRouterButtonPacketProcessor.class, ItemRouterButtonPacketProcessor.class, 1, Side.SERVER);

View file

@ -0,0 +1,71 @@
package wayoftime.bloodmagic.network;
import java.util.function.Supplier;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer;
import net.minecraftforge.fml.network.NetworkEvent.Context;
import wayoftime.bloodmagic.client.key.IKeybindable;
import wayoftime.bloodmagic.client.key.KeyBindings;
public class KeyProcessorPacket
{
public int keyId;
public boolean showInChat;
public KeyProcessorPacket(int keyId, boolean showInChat)
{
this.keyId = keyId;
this.showInChat = showInChat;
}
public KeyProcessorPacket(KeyBindings key, boolean showInChat)
{
this(key.ordinal(), showInChat);
}
public static void encode(KeyProcessorPacket pkt, PacketBuffer buf)
{
buf.writeInt(pkt.keyId);
buf.writeBoolean(pkt.showInChat);
}
public static KeyProcessorPacket decode(PacketBuffer buf)
{
KeyProcessorPacket pkt = new KeyProcessorPacket(buf.readInt(), buf.readBoolean());
return pkt;
}
public static void handle(KeyProcessorPacket message, Supplier<Context> context)
{
context.get().enqueueWork(() -> sendKeyToServer(message, context.get().getSender()));
context.get().setPacketHandled(true);
}
public static void sendKeyToServer(KeyProcessorPacket msg, PlayerEntity playerEntity)
{
System.out.println("Hoiiiii");
if (playerEntity != null)
{
ItemStack heldStack = playerEntity.getHeldItemMainhand();
if (heldStack.getItem() instanceof IKeybindable)
{
if (msg.keyId < 0 || msg.keyId >= KeyBindings.values().length)
{
return;
}
KeyBindings key = KeyBindings.values()[msg.keyId];
((IKeybindable) heldStack.getItem()).onKeyPressed(heldStack, playerEntity, key, msg.showInChat);
}
}
}
// @OnlyIn(Dist.CLIENT)
// public static void updateClientHolder(DemonWillHolder holder)
// {
// ClientHandler.currentAura = holder;
// }
}