package choonster.testmod3.network.capability.hiddenblock; import choonster.testmod3.api.capability.hiddenblockrevealer.IHiddenBlockRevealer; import choonster.testmod3.capability.hiddenblockrevealer.CapabilityHiddenBlockRevealer; import choonster.testmod3.network.capability.MessageBulkUpdateContainerCapability; import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; /** * Updates the {@link IHiddenBlockRevealer} for each slot of a {@link Container}. * * @author Choonster */ public class MessageBulkUpdateContainerHiddenBlockRevealers extends MessageBulkUpdateContainerCapability<IHiddenBlockRevealer, Boolean> { @SuppressWarnings("unused") public MessageBulkUpdateContainerHiddenBlockRevealers() { super(CapabilityHiddenBlockRevealer.HIDDEN_BLOCK_REVEALER_CAPABILITY); } public MessageBulkUpdateContainerHiddenBlockRevealers(final int windowID, final NonNullList<ItemStack> items) { super(CapabilityHiddenBlockRevealer.HIDDEN_BLOCK_REVEALER_CAPABILITY, CapabilityHiddenBlockRevealer.DEFAULT_FACING, windowID, items); } /** * Convert a capability handler instance to a data instance. * * @param hiddenBlockRevealer The handler * @return The data instance */ @Override protected Boolean convertCapabilityToData(final IHiddenBlockRevealer hiddenBlockRevealer) { return hiddenBlockRevealer.revealHiddenBlocks(); } /** * Read a data instance from the buffer. * * @param buf The buffer */ @Override protected Boolean readCapabilityData(final ByteBuf buf) { return buf.readBoolean(); } /** * Write a data instance 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 MessageBulkUpdateContainerCapability.Handler<IHiddenBlockRevealer, Boolean, MessageBulkUpdateContainerHiddenBlockRevealers> { /** * Apply the capability data from the data instance to the capability handler instance. * * @param hiddenBlockRevealer The capability handler instance * @param data The data instance */ @Override protected void applyCapabilityData(final IHiddenBlockRevealer hiddenBlockRevealer, final Boolean data) { hiddenBlockRevealer.setRevealHiddenBlocks(data); } } }