package choonster.testmod3.network.capability.hiddenblock; import choonster.testmod3.api.capability.hiddenblockrevealer.IHiddenBlockRevealer; import choonster.testmod3.capability.hiddenblockrevealer.CapabilityHiddenBlockRevealer; import choonster.testmod3.network.capability.MessageUpdateContainerCapability; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; import javax.annotation.Nullable; /** * Updates the {@link IHiddenBlockRevealer} for a single slot of a {@link Container}. * * @author Choonster */ public class MessageUpdateContainerHiddenBlockRevealer extends MessageUpdateContainerCapability<IHiddenBlockRevealer, Boolean> { @SuppressWarnings("unused") public MessageUpdateContainerHiddenBlockRevealer() { super(CapabilityHiddenBlockRevealer.HIDDEN_BLOCK_REVEALER_CAPABILITY); } public MessageUpdateContainerHiddenBlockRevealer(final int windowID, final int slotNumber, final IHiddenBlockRevealer hiddenBlockRevealer) { super(CapabilityHiddenBlockRevealer.HIDDEN_BLOCK_REVEALER_CAPABILITY, CapabilityHiddenBlockRevealer.DEFAULT_FACING, windowID, slotNumber, hiddenBlockRevealer); } /** * Convert the capability handler instance to a data instance. * * @param hiddenBlockRevealer The handler * @return The data instance */ @Nullable @Override protected Boolean convertCapabilityToData(final IHiddenBlockRevealer hiddenBlockRevealer) { return hiddenBlockRevealer.revealHiddenBlocks(); } /** * Read the capability data from the buffer. * * @param buf The buffer * @return The data instance */ @Override protected Boolean readCapabilityData(final ByteBuf buf) { return buf.readBoolean(); } /** * Write the capability data to the buffer. * * @param buf The buffer * @param data The data instance */ @Override protected void writeCapabilityData(final ByteBuf buf, final Boolean data) { buf.writeBoolean(data); } public static class Handler extends MessageUpdateContainerCapability.Handler<IHiddenBlockRevealer, Boolean, MessageUpdateContainerHiddenBlockRevealer> { /** * Apply the capability data from the message to the capability handler instance. * * @param hiddenBlockRevealer The IHiddenBlockRevealer * @param data The message */ @Override protected void applyCapabilityData(final IHiddenBlockRevealer hiddenBlockRevealer, final Boolean data) { hiddenBlockRevealer.setRevealHiddenBlocks(data); } } }