Finished the infrastructure for Alchemy Array crafting. Updated some Utils so that they work more generally. Added the ability for a delay to be present for effects.

This commit is contained in:
WayofTime 2015-12-23 20:19:06 -05:00
parent 63c3853776
commit c54aa5d00e
7 changed files with 140 additions and 46 deletions

View file

@ -5,41 +5,69 @@ import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.util.ITickable;
import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyArrayEffect;
import WayofTime.bloodmagic.api.registry.AlchemyArrayRecipeRegistry;
public class TileAlchemyArray extends TileInventory implements ITickable {
public class TileAlchemyArray extends TileInventory implements ITickable{
public boolean isActive = false;
public int activeCounter = 0;
public TileAlchemyArray() {
super(2, "alchemyArray");
}
@Override
public void readFromNBT(NBTTagCompound tagCompound) {
super.readFromNBT(tagCompound);
}
@Override
public void writeToNBT(NBTTagCompound tagCompound) {
super.writeToNBT(tagCompound);
}
@Override
public void readFromNBT(NBTTagCompound tagCompound) {
super.readFromNBT(tagCompound);
this.isActive = tagCompound.getBoolean("isActive");
this.activeCounter = tagCompound.getInteger("activeCounter");
}
@Override
public void writeToNBT(NBTTagCompound tagCompound) {
super.writeToNBT(tagCompound);
tagCompound.setBoolean("isActive", isActive);
tagCompound.setInteger("activeCounter", activeCounter);
}
@Override
public void update() {
if (isActive && attemptCraft()) {
activeCounter++;
} else {
isActive = false;
activeCounter = 0;
}
}
@Override
public Packet getDescriptionPacket()
{
NBTTagCompound nbttagcompound = new NBTTagCompound();
writeToNBT(nbttagcompound);
return new S35PacketUpdateTileEntity(pos, this.getBlockMetadata(), nbttagcompound);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
{
super.onDataPacket(net, packet);
readFromNBT(packet.getNbtCompound());
}
public boolean attemptCraft() {
AlchemyArrayEffect effect = AlchemyArrayRecipeRegistry.getAlchemyArrayEffect(this.getStackInSlot(0), this.getStackInSlot(1));
if (effect != null) {
isActive = true;
if (effect.update(this, 0)) {
this.decrStackSize(0, 1);
this.decrStackSize(1, 1);
this.worldObj.setBlockToAir(getPos());
}
return true;
}
return false;
}
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbttagcompound = new NBTTagCompound();
writeToNBT(nbttagcompound);
return new S35PacketUpdateTileEntity(pos, this.getBlockMetadata(), nbttagcompound);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) {
super.onDataPacket(net, packet);
readFromNBT(packet.getNbtCompound());
}
}