read and write nbt

This commit is contained in:
Quantumlyy committed 2023-12-09 08:57:32 +01:00
1 parent c79503d669
commit e7e5292526
2 files changed
+28 -38

No files matched your search

@@ -1,33 +0,0 @@
package magicbees.client.gui;
/*
* public class ContainerPhialingCabinet extends ContainerMB { public TileEntityPhialingCabinet phialingCabinet; public
* int maxSlot = 0; // Constants private static final int SLOT_ONE = 0; private static final int SLOT_TWO = 1; private
* static final int SLOT_THREE = 2; private static final int SLOT_FOUR = 3; private static final int SLOT_FIVE = 4;
* private static final int SLOT_SIX = 5; private static final int SLOT_SEVEN = 6; private static final int SLOT_EIGHT =
* 7; private static final int SLOT_NINE = 8; public ContainerPhialingCabinet(InventoryPlayer inventoryPlayer,
* TileEntityPhialingCabinet phialingCabinet){ this.phialingCabinet = phialingCabinet; // Queen/Princess slot
* addSlotToContainer(new SlotCustomItems(this.phialingCabinet, 0, 29, 39, ItemInterface.getItemStack("Forestry",
* "beeQueenGE", 1), ItemInterface.getItemStack("Forestry", "beePrincessGE", 1))); // Drone slot addSlotToContainer(new
* SlotCustomItems(this.phialingCabinet, 1, 29, 65, ItemInterface.getItemStack("Forestry", "beeDroneGE", 64))); int
* currentSlot = 1; // Frame slots for (int x = 0; x < 3; x++){ currentSlot++; addSlotToContainer(new
* SlotFrame(phialingCabinet, currentSlot, 66, 23 + x * 29)); //LogHelper.info("[1] CURRENTSLOT: " + currentSlot); } for
* (int x = 0; x < 3; x++){ currentSlot++; addSlotToContainer(new Slot(phialingCabinet, currentSlot, 116, 26 + x * 26));
* //LogHelper.info("[2] CURRENTSLOT: " + currentSlot); } int j = 0; for (int y = 0; y < 2; y++){ for (int x = 0; x < 2;
* x++){ currentSlot++; addSlotToContainer(new Slot(phialingCabinet, currentSlot, 95 + x * 42, 39 + j * 26));
* //LogHelper.info("[3] CURRENTSLOT: " + currentSlot); } j++; } addPlayerInventory(inventoryPlayer, 0, 110); maxSlot =
* currentSlot; }
* @Override public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex){ Slot itemSlot =
* this.getSlot(slotIndex); boolean clearSlot = false; if (itemSlot != null && itemSlot.getHasStack()) { ItemStack
* srcStack = itemSlot.getStack(); if (slotIndex <= maxSlot && srcStack != null){ clearSlot =
* this.mergeItemStack(srcStack, maxSlot + 1, maxSlot + 36, false); }else{ if (slotIndex > maxSlot && srcStack != null){
* if (BeeManager.beeRoot.isMember(srcStack)){ if (!BeeManager.beeRoot.isDrone(srcStack)){ if
* (this.getSlot(SLOT_ONE).getHasStack() == false) { clearSlot = this.mergeItemStack(srcStack, SLOT_ONE, SLOT_ONE + 1,
* false); } }else{ if (this.getSlot(SLOT_TWO).isItemValid(srcStack)){ clearSlot = this.mergeItemStack(srcStack,
* SLOT_TWO, SLOT_TWO + 1, false); } } }else if(srcStack.getItem() instanceof IHiveFrame){ clearSlot =
* this.mergeItemStack(srcStack, SLOT_THREE, SLOT_THREE + SLOT_FOUR, false); } } } } if (clearSlot){
* itemSlot.putStack(null); } itemSlot.onSlotChanged(); player.inventory.markDirty(); return null; }
* @Override public boolean canInteractWith(EntityPlayer entityPlayer) { return
* phialingCabinet.isUseableByPlayer(entityPlayer); }
*/
// }
@@ -2,7 +2,9 @@ package magicbees.tileentity;
import java.util.Objects;
import magicbees.main.utils.ChunkCoords;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
@@ -23,7 +25,6 @@ public class TileEntityPhialingCabinet extends TileEntity implements IAspectCont
public Aspect aspect;
public AspectList essentia = new AspectList();
public int amount = 0;
public final int maxAmount = Config.thaumcraftEssentiaBeePhialingCabinetCapacity;
private int increment = 0;
@@ -38,12 +39,12 @@ public class TileEntityPhialingCabinet extends TileEntity implements IAspectCont
TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord);
if (IBeeHousing.class.isAssignableFrom(above.getClass())) {
IBeeHousing beeHousing = (IBeeHousing) above;
ItemStack queenStack = beeHousing.getBeeInventory().getQueen();
// This performs all the checks to see if the bee is a living queen and if the species conditions
// are met.
if (!beeHousing.getBeekeepingLogic().canWork()) return;
ItemStack queenStack = beeHousing.getBeeInventory().getQueen();
IAlleleBeeSpecies queenSpecies = BeeGenome.getSpecies(queenStack);
if (queenSpecies == null) return;
@@ -76,10 +77,10 @@ public class TileEntityPhialingCabinet extends TileEntity implements IAspectCont
@Override
public int addToContainer(Aspect tag, int am) {
if (am != 0) {
if (this.amount < this.maxAmount && tag == this.aspect || this.amount == 0) {
int amount = this.essentia.visSize();
if (amount < this.maxAmount && tag == this.aspect || amount == 0) {
this.aspect = tag;
int added = Math.min(am, this.maxAmount - this.amount);
this.amount += added;
int added = Math.min(am, this.maxAmount - amount);
am -= added;
}
}
@@ -212,4 +213,26 @@ public class TileEntityPhialingCabinet extends TileEntity implements IAspectCont
public int addEssentia(Aspect aspect, int amount, ForgeDirection face) {
return this.canInputFrom(face) ? amount - this.addToContainer(aspect, amount) : 0;
}
/* Saving and loading */
@Override
public void writeToNBT(NBTTagCompound compound) {
super.writeToNBT(compound);
this.essentia.writeToNBT(compound);
compound.setString("aspect", aspect.getTag());
compound.setInteger("increment", increment);
}
@Override
public void readFromNBT(NBTTagCompound compound) {
super.readFromNBT(compound);
this.essentia.readFromNBT(compound);
if (this.essentia.visSize() > this.maxAmount) {
this.essentia = new AspectList();
}
aspect = Aspect.getAspect(compound.getString("aspect"));
increment = compound.getInteger("increment");
}
}