package choonster.testmod3.network.capability.pigspawner;
import choonster.testmod3.api.capability.pigspawner.IPigSpawner;
import choonster.testmod3.api.capability.pigspawner.IPigSpawnerFinite;
import choonster.testmod3.capability.pigspawner.CapabilityPigSpawner;
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;
import javax.annotation.Nullable;
/**
* Updates the {@link IPigSpawnerFinite} for each slot of a {@link Container}.
*
* @author Choonster
*/
public class MessageBulkUpdateContainerPigSpawnerFinites extends MessageBulkUpdateContainerCapability<IPigSpawner, Integer> {
@SuppressWarnings("unused")
protected MessageBulkUpdateContainerPigSpawnerFinites() {
super(CapabilityPigSpawner.PIG_SPAWNER_CAPABILITY);
}
public MessageBulkUpdateContainerPigSpawnerFinites(final int windowID, final NonNullList<ItemStack> items) {
super(CapabilityPigSpawner.PIG_SPAWNER_CAPABILITY, CapabilityPigSpawner.DEFAULT_FACING, windowID, items);
}
/**
* Convert a capability handler instance to a data instance.
*
* @param pigSpawner The handler
* @return The data instance
*/
@Nullable
@Override
protected Integer convertCapabilityToData(final IPigSpawner pigSpawner) {
if (pigSpawner instanceof IPigSpawnerFinite) {
return ((IPigSpawnerFinite) pigSpawner).getNumPigs();
} else {
return null;
}
}
/**
* Read a data instance from the buffer.
*
* @param buf The buffer
*/
@Override
protected Integer readCapabilityData(final ByteBuf buf) {
return buf.readInt();
}
/**
* Write a data instance to the buffer.
*
* @param buf The buffer
* @param data The data instance
*/
@Override
protected void writeCapabilityData(final ByteBuf buf, final Integer data) {
buf.writeInt(data);
}
public static class Handler extends MessageBulkUpdateContainerCapability.Handler<IPigSpawner, Integer, MessageBulkUpdateContainerPigSpawnerFinites> {
/**
* Apply the capability data from the data instance to the capability handler instance.
*
* @param pigSpawner The capability handler instance
* @param data The data instance
*/
@Override
protected void applyCapabilityData(final IPigSpawner pigSpawner, final Integer data) {
if (pigSpawner instanceof IPigSpawnerFinite) {
((IPigSpawnerFinite) pigSpawner).setNumPigs(data);
}
}
}
}