diff --git a/thaumicbees_res/changelog.txt b/thaumicbees_res/changelog.txt
index 22e5f56..b4022ef 100644
--- a/thaumicbees_res/changelog.txt
+++ b/thaumicbees_res/changelog.txt
@@ -28,7 +28,7 @@ Fixed the issue with certain items appearing twice in Creative Mode tabs.
1.3.0a
Some bug fixes, including uncommenting some mutation-related code, research tweaking.
-Added the last bee for a long while, probably. Good luck getting it. Posted Image
+Added the last bee for a long while, probably. Good luck getting it.
Common TB crashes stemming from Forestry issues should now be reported a little better, especially the backpack registration & item texture file related things. Errors should appear in your log, so make sure you read the log before you report the error here. It could be something silly on your end that is causing the crash.
diff --git a/thaumicbees_res/gfx/thaumicbees/items/items.png b/thaumicbees_res/gfx/thaumicbees/items/items.png
index 9dda530..c27b578 100644
Binary files a/thaumicbees_res/gfx/thaumicbees/items/items.png and b/thaumicbees_res/gfx/thaumicbees/items/items.png differ
diff --git a/thaumicbees_res/lang/thaumicbees/en_US.xml b/thaumicbees_res/lang/thaumicbees/en_US.xml
index 74eb1b7..85f4f1a 100644
--- a/thaumicbees_res/lang/thaumicbees/en_US.xml
+++ b/thaumicbees_res/lang/thaumicbees/en_US.xml
@@ -9,6 +9,7 @@
Greatwood Slab
Silverwood Planks
Silverwood Slab
+ Magic Apiary
Occult Comb
diff --git a/thaumicbees_src/net/mysteriousages/utils/GenericInventory.java b/thaumicbees_src/net/mysteriousages/utils/GenericInventory.java
new file mode 100644
index 0000000..0c0cb3d
--- /dev/null
+++ b/thaumicbees_src/net/mysteriousages/utils/GenericInventory.java
@@ -0,0 +1,199 @@
+package net.mysteriousages.utils;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+
+/**
+ * Provides some common functionality for Inventory clusters. Performs bounds-checking on slot args.
+ *
+ * @author MysteriousAges
+ *
+ */
+public class GenericInventory implements IInventory
+{
+ private ItemStack[] inventory;
+ private String name;
+ private int stackLimit;
+
+ public GenericInventory(String inventoryName, int slotCount)
+ {
+ this(inventoryName, slotCount, 64);
+ }
+
+ public GenericInventory(String inventoryName, int slotCount, int maxStackSize)
+ {
+ this.inventory = new ItemStack[slotCount];
+ this.name = inventoryName;
+ this.stackLimit = maxStackSize;
+ }
+
+ @Override
+ public int getSizeInventory()
+ {
+ return this.inventory.length;
+ }
+
+ @Override
+ public ItemStack getStackInSlot(int slot)
+ {
+ ItemStack result = null;
+
+ if (this.slotNumberValid(slot))
+ {
+ result = this.inventory[slot];
+ }
+
+ return result;
+ }
+
+ @Override
+ public ItemStack decrStackSize(int slot, int count)
+ {
+ ItemStack result = null;
+
+ if (this.slotNumberValid(slot))
+ {
+ if (this.inventory[slot] != null)
+ {
+ result = this.inventory[slot].splitStack(Math.min(count, this.inventory[slot].stackSize));
+ if (this.inventory[slot].stackSize <= 0)
+ {
+ this.inventory[slot] = null;
+ }
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ public ItemStack getStackInSlotOnClosing(int slot)
+ {
+ return this.getStackInSlot(slot);
+ }
+
+ @Override
+ public void setInventorySlotContents(int slot, ItemStack itemStack)
+ {
+ if (this.slotNumberValid(slot))
+ {
+ this.inventory[slot] = itemStack;
+ }
+ }
+
+ @Override
+ public String getInvName()
+ {
+ return this.name;
+ }
+
+ @Override
+ public int getInventoryStackLimit()
+ {
+ return this.stackLimit;
+ }
+
+ public ItemStack[] getInventory()
+ {
+ return this.inventory;
+ }
+
+ @Override
+ public void onInventoryChanged() { }
+
+ @Override
+ public boolean isUseableByPlayer(EntityPlayer player)
+ {
+ return true;
+ }
+
+ /**
+ * Accepts an ItemStack and attempts to merge it with a similar item stack or an empty slot.
+ * @param stack
+ * @return Any leftover items, or null if the merge completed successfully.
+ */
+ public ItemStack attemptStackMerge(ItemStack stack)
+ {
+ for (int i = 0; i < this.inventory.length; ++i)
+ {
+ if (this.inventory[i] == null)
+ {
+ this.inventory[i] = stack;
+ stack = null;
+ break;
+ }
+ else if (this.inventory[i].isItemEqual(stack))
+ {
+ int freeSlots = stack.getItem().getItemStackLimit() - this.inventory[i].stackSize;
+
+ this.inventory[i].stackSize += freeSlots;
+ stack.stackSize -= freeSlots;
+ }
+
+ if (stack.stackSize <= 0)
+ {
+ stack = null;
+ break;
+ }
+ }
+
+ return stack;
+ }
+
+ public void writeToNBT(NBTTagCompound tag)
+ {
+ tag.setString("Name", this.name);
+ tag.setInteger("Size", this.inventory.length);
+ NBTTagList itemList = new NBTTagList();
+
+ for (int i = 0; i < this.inventory.length; ++i)
+ {
+ NBTTagCompound itemTag = new NBTTagCompound();
+ itemTag.setByte("Slot", (byte)i);
+ this.inventory[i].writeToNBT(itemTag);
+ itemList.appendTag(itemTag);
+ }
+
+ tag.setTag("Items", itemList);
+ }
+
+ public void readFromNBT(NBTTagCompound tag)
+ {
+ this.name = tag.getString("Name");
+ NBTTagList itemList = tag.getTagList("Items");
+ int length = tag.getInteger("Size");
+ this.inventory = new ItemStack[length];
+
+ for (int i = 0; i < itemList.tagCount(); ++i)
+ {
+ NBTTagCompound item = (NBTTagCompound)itemList.tagAt(i);
+ int slotId = item.getByte("Slot");
+ if (slotId >= 0 && slotId < this.inventory.length)
+ {
+ this.inventory[slotId] = ItemStack.loadItemStackFromNBT(item);
+ }
+ }
+ }
+
+ /**
+ * Checks to see if the given slot number is valid with the inventory size
+ * @param slot
+ * @return True, if slot in [0, inventory size)
+ */
+ protected boolean slotNumberValid(int slot)
+ {
+ return slot >= 0 && slot < this.inventory.length;
+ }
+
+ @Override
+ public void openChest() { }
+
+ @Override
+ public void closeChest() { }
+
+
+}
diff --git a/thaumicbees_src/net/mysteriousages/utils/GenericOwnedInventory.java b/thaumicbees_src/net/mysteriousages/utils/GenericOwnedInventory.java
new file mode 100644
index 0000000..042d2f6
--- /dev/null
+++ b/thaumicbees_src/net/mysteriousages/utils/GenericOwnedInventory.java
@@ -0,0 +1,71 @@
+package net.mysteriousages.utils;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+
+/**
+ * Provides basic functionality for an owned inventory.
+ * @author MysteriousAges
+ *
+ */
+public class GenericOwnedInventory extends GenericInventory
+{
+ private String ownerName;
+ private boolean isPublic;
+
+ public GenericOwnedInventory(EntityPlayer player, String inventoryName, int slotCount)
+ {
+ super(inventoryName, slotCount);
+ this.setInfo(player);
+ }
+
+ public GenericOwnedInventory(EntityPlayer player, String inventoryName, int slotCount, int maxStackSize)
+ {
+ super(inventoryName, slotCount, maxStackSize);
+ this.setInfo(player);
+ }
+
+ private void setInfo(EntityPlayer player)
+ {
+ this.ownerName = player.username;
+ }
+
+ public void setPubliclyAccessible(boolean flag)
+ {
+ this.isPublic = flag;
+ }
+
+ public String getOwnerName()
+ {
+ return this.ownerName;
+ }
+
+ public boolean isPubliclyAccessible()
+ {
+ return this.isPublic;
+ }
+
+ @Override
+ public boolean isUseableByPlayer(EntityPlayer player)
+ {
+ return this.isPublic || this.ownerName.equalsIgnoreCase(player.username);
+ }
+
+ @Override
+ public void writeToNBT(NBTTagCompound tag)
+ {
+ super.writeToNBT(tag);
+ tag.setString("Owner", this.ownerName);
+ tag.setBoolean("PublicFlag", this.isPublic);
+ }
+
+ @Override
+ public void readFromNBT(NBTTagCompound tag)
+ {
+ super.readFromNBT(tag);
+ this.ownerName = tag.getString("Owner");
+ this.isPublic = tag.getBoolean("PublicFlag");
+ }
+
+
+}
diff --git a/thaumicbees_src/thaumicbees/block/BlockMagicApiary.java b/thaumicbees_src/thaumicbees/block/BlockMagicApiary.java
index f03677c..02a23ef 100644
--- a/thaumicbees_src/thaumicbees/block/BlockMagicApiary.java
+++ b/thaumicbees_src/thaumicbees/block/BlockMagicApiary.java
@@ -3,9 +3,10 @@ package thaumicbees.block;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import thaumicbees.main.CommonProxy;
-import thaumicbees.tile.TileEntityMagicApiary;
-import net.minecraft.block.BlockContainer;
+import thaumicbees.block.TileEntityMagicApiary;
+import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
+import net.minecraft.entity.EntityLiving;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
@@ -16,41 +17,57 @@ import forestry.api.apiculture.IBeeHousing;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
-public class BlockMagicApiary extends BlockContainer
+public class BlockMagicApiary extends Block
{
public BlockMagicApiary(int par1)
{
super(par1, Material.wood);
this.setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
this.setBlockName("Magic Apiary");
- this.blockIndexInTexture = 48;
+ this.blockIndexInTexture = 50;
+ this.setHardness(2f);
+ this.setResistance(5f);
}
@Override
@SideOnly(Side.CLIENT)
public int getBlockTexture(IBlockAccess worldAccess, int x, int y, int z, int side)
{
- int texture = 48;
- if (side == 0 || side == 1)
+ int texture = 50;
+ if (side == 0)
{
- texture = 50;
+ texture = 51;
+ }
+ else if (side == 1)
+ {
+ TileEntityMagicApiary tileInfo = (TileEntityMagicApiary)worldAccess.getBlockTileEntity(x, y, z);
+ if (tileInfo != null && tileInfo.isMaster())
+ {
+ texture = 52;
+ }
+ else
+ {
+ texture = 51;
+ }
}
return texture;
}
public int getBlockTextureFromSideAndMetadata(int side, int meta)
{
- int texture = 48;
+ int texture = 50;
if (side == 0 || side == 1)
{
- texture = 50;
+ texture = 51;
}
return texture;
}
@Override
- public TileEntity createNewTileEntity(World var1)
+ public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entity)
{
- return new TileEntityMagicApiary();
+ super.onBlockPlacedBy(world, x, y, z, entity);
+
+ // Validate block arrangement
}
}
diff --git a/thaumicbees_src/thaumicbees/block/BlockPlanks.java b/thaumicbees_src/thaumicbees/block/BlockPlanks.java
index 11371f6..a24feee 100644
--- a/thaumicbees_src/thaumicbees/block/BlockPlanks.java
+++ b/thaumicbees_src/thaumicbees/block/BlockPlanks.java
@@ -28,7 +28,12 @@ public class BlockPlanks extends Block
@Override
public int getBlockTextureFromSideAndMetadata(int side, int meta)
{
- return PlankType.getType(meta).textureIdx;
+ int tx = 256;
+ if (PlankType.getType(meta) != null)
+ {
+ tx = PlankType.getType(meta).textureIdx;
+ }
+ return tx;
}
@Override
diff --git a/thaumicbees_src/thaumicbees/block/BlockWoodSlab.java b/thaumicbees_src/thaumicbees/block/BlockWoodSlab.java
index d730bd8..85bfdd8 100644
--- a/thaumicbees_src/thaumicbees/block/BlockWoodSlab.java
+++ b/thaumicbees_src/thaumicbees/block/BlockWoodSlab.java
@@ -32,7 +32,12 @@ public class BlockWoodSlab extends BlockHalfSlab
@Override
public int getBlockTextureFromSideAndMetadata(int side, int meta)
{
- return PlankType.getType(meta & 7).textureIdx;
+ int tx = 256;
+ if (PlankType.getType(meta & 7) != null)
+ {
+ tx = PlankType.getType(meta & 7).textureIdx;
+ }
+ return tx;
}
public int idDropped(int id, Random rand, int par3)
diff --git a/thaumicbees_src/thaumicbees/tile/TileEntityMagicApiary.java b/thaumicbees_src/thaumicbees/block/LogicMagicApiary.java
similarity index 52%
rename from thaumicbees_src/thaumicbees/tile/TileEntityMagicApiary.java
rename to thaumicbees_src/thaumicbees/block/LogicMagicApiary.java
index 0bed05e..f7fd94c 100644
--- a/thaumicbees_src/thaumicbees/tile/TileEntityMagicApiary.java
+++ b/thaumicbees_src/thaumicbees/block/LogicMagicApiary.java
@@ -1,140 +1,140 @@
-package thaumicbees.tile;
+package thaumicbees.block;
+import java.util.ArrayList;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+import net.mysteriousages.utils.GenericInventory;
+import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeekeepingLogic;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.inventory.IInventory;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.World;
+import thaumicbees.main.utils.compat.ForestryHelper;
-public class TileEntityMagicApiary extends TileEntity implements IInventory, IBeeHousing
+public class LogicMagicApiary implements IBeeHousing
{
-
- @Override
- public int getSizeInventory()
+ private TileEntityMagicApiary parent;
+ private String ownerName;
+ private BiomeGenBase biome;
+ private IBeekeepingLogic beeLogic;
+ private GenericInventory tileInventory;
+ private ArrayList inventoryOverflow;
+
+ private static final int SLOT_ID_QUEEN = 0;
+ private static final int SLOT_ID_DRONE = 1;
+ private static final int SLOT_ID_FRAME = 2;
+ private static final int SLOT_LENGTH_FRAME = 2;
+ private static final int SLOT_ID_PRODUCE = 4;
+ private static final int SLOT_LENGTH_PRODUCE = 6;
+
+ public LogicMagicApiary(TileEntityMagicApiary master)
{
- // TODO Auto-generated method stub
- return 0;
+ this.parent = master;
+ this.beeLogic = BeeManager.breedingManager.createBeekeepingLogic(this);
+ this.tileInventory = new GenericInventory("MagicApiary", 11);
}
-
- @Override
- public ItemStack getStackInSlot(int var1)
+
+ public TileEntityMagicApiary getParent()
{
- // TODO Auto-generated method stub
- return null;
+ return parent;
}
-
- @Override
- public ItemStack decrStackSize(int var1, int var2)
+
+ public void setOwner(EntityPlayer player)
{
- // TODO Auto-generated method stub
- return null;
+ this.ownerName = player.username;
}
-
- @Override
- public ItemStack getStackInSlotOnClosing(int var1)
+
+ public String getOwner()
{
- // TODO Auto-generated method stub
- return null;
+ return this.ownerName;
}
-
- @Override
- public void setInventorySlotContents(int var1, ItemStack var2)
+
+ public void writeToNBT(NBTTagCompound tag)
+ {
+ NBTTagCompound beeTag = new NBTTagCompound();
+ this.beeLogic.writeToNBT(beeTag);
+ tag.setTag("BeeLogic", beeTag);
+ tag.setString("Owner", this.ownerName);
+ NBTTagCompound inventory = new NBTTagCompound();
+ this.tileInventory.writeToNBT(inventory);
+ tag.setTag("Inventory", inventory);
+
+ if (this.inventoryOverflow.size() > 0)
+ {
+ NBTTagList overflow = new NBTTagList();
+ for (int i = 0; i < this.inventoryOverflow.size(); ++i)
+ {
+ NBTTagCompound itemTag = new NBTTagCompound();
+ this.inventoryOverflow.get(i).writeToNBT(itemTag);
+ overflow.appendTag(itemTag);
+ }
+ }
+
+ }
+
+ public void readFromNBT(NBTTagCompound tag)
{
- // TODO Auto-generated method stub
}
- @Override
- public String getInvName()
- {
- return "thaumicbees.magicApiary";
- }
-
- @Override
- public int getInventoryStackLimit()
- {
- // TODO Auto-generated method stub
- return 0;
- }
-
- @Override
- public boolean isUseableByPlayer(EntityPlayer var1)
- {
- return true;
- }
-
- @Override
- public void openChest() { }
-
- @Override
- public void closeChest() { }
-
@Override
public float getTerritoryModifier(IBeeGenome genome)
{
- // TODO Auto-generated method stub
- return 0;
+ return 1f;
}
@Override
public float getMutationModifier(IBeeGenome genome, IBeeGenome mate)
{
- // TODO Auto-generated method stub
- return 0;
+ return 1f;
}
@Override
public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate)
{
- // TODO Auto-generated method stub
- return 0;
+ return 1f;
}
@Override
public float getProductionModifier(IBeeGenome genome)
{
- // TODO Auto-generated method stub
- return 0;
+ return 2f;
}
@Override
public float getFloweringModifier(IBeeGenome genome)
{
- // TODO Auto-generated method stub
- return 0;
+ return 1f;
}
@Override
public boolean isSealed()
{
- // TODO Auto-generated method stub
return false;
}
@Override
public boolean isSelfLighted()
{
- // TODO Auto-generated method stub
return false;
}
@Override
public boolean isSunlightSimulated()
{
- // TODO Auto-generated method stub
return false;
}
@Override
public boolean isHellish()
{
- // TODO Auto-generated method stub
return false;
}
@@ -142,49 +142,46 @@ public class TileEntityMagicApiary extends TileEntity implements IInventory, IBe
public void onQueenChange(ItemStack queen)
{
// TODO Auto-generated method stub
-
+
}
@Override
public void wearOutEquipment(int amount)
{
// TODO Auto-generated method stub
-
+
}
@Override
public void onQueenDeath(IBee queen)
{
// TODO Auto-generated method stub
-
+
}
@Override
public void onPostQueenDeath(IBee queen)
{
// TODO Auto-generated method stub
-
+
}
@Override
public int getXCoord()
{
- // TODO Auto-generated method stub
- return 0;
+ return parent.xCoord;
}
@Override
public int getYCoord()
{
- // TODO Auto-generated method stub
- return 0;
+ return parent.yCoord;
}
@Override
public int getZCoord()
{
- // TODO Auto-generated method stub
- return 0;
+ return parent.zCoord;
}
@Override
@@ -205,56 +202,51 @@ public class TileEntityMagicApiary extends TileEntity implements IInventory, IBe
public void setQueen(ItemStack itemstack)
{
// TODO Auto-generated method stub
-
+
}
@Override
public void setDrone(ItemStack itemstack)
{
// TODO Auto-generated method stub
-
+
}
@Override
public int getBiomeId()
{
- // TODO Auto-generated method stub
- return 0;
+ return this.biome.biomeID;
}
@Override
public EnumTemperature getTemperature()
{
- // TODO Auto-generated method stub
- return null;
+ return ForestryHelper.getEnumTemperatureFromValue(this.biome.temperature);
}
@Override
public EnumHumidity getHumidity()
{
- // TODO Auto-generated method stub
- return null;
+ return ForestryHelper.getEnumHumidityFromValue(this.biome.rainfall);
}
@Override
public World getWorld()
{
- // TODO Auto-generated method stub
- return null;
+ return this.getWorld();
}
@Override
public String getOwnerName()
{
- // TODO Auto-generated method stub
- return null;
+ return parent.getOwner();
}
@Override
public void setErrorState(int state)
{
// TODO Auto-generated method stub
-
+
}
@Override
@@ -277,4 +269,5 @@ public class TileEntityMagicApiary extends TileEntity implements IInventory, IBe
// TODO Auto-generated method stub
return false;
}
+
}
diff --git a/thaumicbees_src/thaumicbees/block/TileEntityMagicApiary.java b/thaumicbees_src/thaumicbees/block/TileEntityMagicApiary.java
new file mode 100644
index 0000000..73d1635
--- /dev/null
+++ b/thaumicbees_src/thaumicbees/block/TileEntityMagicApiary.java
@@ -0,0 +1,97 @@
+package thaumicbees.block;
+
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.core.EnumHumidity;
+import forestry.api.core.EnumTemperature;
+
+public class TileEntityMagicApiary extends TileEntity
+{
+ private String owner;
+ private LogicMagicApiary logic;
+ private int masterX;
+ private int masterY;
+ private int masterZ;
+
+ public TileEntityMagicApiary(World w)
+ {
+ this.setWorldObj(w);
+ }
+
+ public void setValid(TileEntityMagicApiary masterEntity)
+ {
+ this.logic = masterEntity.logic;
+ this.masterX = masterEntity.xCoord;
+ this.masterY = masterEntity.yCoord;
+ this.masterZ = masterEntity.zCoord;
+ }
+
+ public String getOwner()
+ {
+ return this.owner;
+ }
+
+ public boolean isValidStructure()
+ {
+ return false;
+ }
+
+ public boolean isMaster()
+ {
+ boolean flag = false;
+
+ if (this.logic != null)
+ {
+ flag = this.logic.getParent() == this;
+ }
+
+ return flag;
+ }
+
+ public LogicMagicApiary getLogic()
+ {
+ return this.logic;
+ }
+
+ @Override
+ public void readFromNBT(NBTTagCompound tagRoot)
+ {
+ super.readFromNBT(tagRoot);
+ this.owner = tagRoot.getString("Owner");
+ if (tagRoot.hasKey("Logic"))
+ {
+ this.logic = new LogicMagicApiary(this);
+ this.logic.readFromNBT(tagRoot.getCompoundTag("Logic"));
+ }
+ else
+ {
+ this.masterX = tagRoot.getInteger("MasterX");
+ this.masterY = tagRoot.getInteger("MasterY");
+ this.masterZ = tagRoot.getInteger("MasterZ");
+ }
+ }
+
+ @Override
+ public void writeToNBT(NBTTagCompound tagRoot)
+ {
+ super.writeToNBT(tagRoot);
+ tagRoot.setString("Owner", this.owner);
+ if (this.isMaster())
+ {
+ NBTTagCompound logicTag = new NBTTagCompound();
+ this.logic.writeToNBT(logicTag);
+ tagRoot.setTag("Logic", logicTag);
+ }
+ else
+ {
+ tagRoot.setInteger("MasterX", this.masterX);
+ tagRoot.setInteger("MasterY", this.masterY);
+ tagRoot.setInteger("MasterZ", this.masterZ);
+ }
+ }
+}
diff --git a/thaumicbees_src/thaumicbees/main/Config.java b/thaumicbees_src/thaumicbees/main/Config.java
index 05faa44..79997fd 100644
--- a/thaumicbees_src/thaumicbees/main/Config.java
+++ b/thaumicbees_src/thaumicbees/main/Config.java
@@ -5,6 +5,7 @@ import java.io.File;
import thaumicbees.block.BlockMagicApiary;
import thaumicbees.block.BlockPlanks;
import thaumicbees.block.BlockWoodSlab;
+import thaumicbees.block.TileEntityMagicApiary;
import thaumicbees.item.ItemCapsule;
import thaumicbees.item.ItemComb;
import thaumicbees.item.ItemDrop;
@@ -17,6 +18,7 @@ import thaumicbees.item.ItemWax;
import thaumicbees.item.types.CapsuleType;
import thaumicbees.item.types.HiveFrameType;
import thaumicbees.item.types.PlankType;
+import thaumicbees.item.types.ResourceType;
import thaumicbees.main.utils.CompatabilityManager;
import thaumicbees.main.utils.LocalizationManager;
import thaumicbees.main.utils.compat.ForestryHelper;
@@ -26,6 +28,7 @@ import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
+import forestry.api.apiculture.BeeManager;
import forestry.api.storage.BackpackManager;
import forestry.api.storage.EnumBackpackType;
import net.minecraft.block.Block;
@@ -36,6 +39,7 @@ import net.minecraft.item.ItemMultiTextureTile;
import net.minecraft.item.ItemSlab;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
+import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
import net.minecraftforge.oredict.OreDictionary;
@@ -144,19 +148,23 @@ public class Config
slabWoodHalf = new BlockWoodSlab(tbConfig.getBlock("slabHalf", blockIdBase++).getInt(), false);
item = new ItemSlab(slabWoodHalf.blockID - 256, slabWoodHalf, slabWoodFull, false)
- .setItemName(slabWoodHalf.getBlockName()).setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
+ .setItemName(slabWoodHalf.getBlockName()).setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
Item.itemsList[slabWoodHalf.blockID] = item;
item = new ItemSlab(slabWoodFull.blockID - 256, slabWoodHalf, slabWoodFull, true)
- .setItemName(slabWoodFull.getBlockName()).setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
+ .setItemName(slabWoodFull.getBlockName()).setTextureFile(CommonProxy.TCBEES_ITEMS_IMAGE);
Item.itemsList[slabWoodFull.blockID] = item;
OreDictionary.registerOre("slabWood", new ItemStack(slabWoodHalf, 1, -1));
-
blockIdBase++; // Stair
-
- /*magicApiary = new BlockMagicApiary(tbConfig.getBlock("magicApiary", blockIdBase).getInt());
- GameRegistry.registerBlock(magicApiary, "Magic Apiary");*/
+
+ magicApiary = new BlockMagicApiary(tbConfig.getBlock("magicApiary", blockIdBase++).getInt());
+ GameRegistry.registerBlock(magicApiary, "tb.magicApiary");
+ }
+
+ public void registerTileEntities()
+ {
+ TileEntity.addMapping(TileEntityMagicApiary.class, "MagicApiary");
}
public void setupItems()
@@ -175,6 +183,10 @@ public class Config
drops = new ItemDrop(tbConfig.getItem("drop", itemIDBase++).getInt());
miscResources = new ItemMiscResources(tbConfig.getItem("miscResources", itemIDBase++).getInt());
+
+ // Make Aromatic Lumps a swarmer inducer. Chance is /1000.
+ BeeManager.inducers.put(miscResources.getStackForType(ResourceType.AROMATIC_LUMP), 80);
+
try
{
// 0x8700C6 = purpleish.
diff --git a/thaumicbees_src/thaumicbees/main/ThaumicBees.java b/thaumicbees_src/thaumicbees/main/ThaumicBees.java
index 79573ab..3201716 100644
--- a/thaumicbees_src/thaumicbees/main/ThaumicBees.java
+++ b/thaumicbees_src/thaumicbees/main/ThaumicBees.java
@@ -70,6 +70,7 @@ public class ThaumicBees
}
this.modConfig.setupBlocks();
+ this.modConfig.registerTileEntities();
this.modConfig.setupItems();
CompatabilityManager.setupBackpacks();
diff --git a/thaumicbees_src/thaumicbees/main/utils/CraftingManager.java b/thaumicbees_src/thaumicbees/main/utils/CraftingManager.java
index 235dd42..4a5a935 100644
--- a/thaumicbees_src/thaumicbees/main/utils/CraftingManager.java
+++ b/thaumicbees_src/thaumicbees/main/utils/CraftingManager.java
@@ -37,6 +37,19 @@ import net.minecraftforge.liquids.LiquidStack;
public class CraftingManager
{
public static void setupCrafting()
+ {
+ // Broken up into seperate sections to make things a bit easier to find.
+ setupVanillaCrafting();
+ setupCentrifugeRecipes();
+ setupSqueezerRecipes();
+ setupCarpenterRecipes();
+ setupThaumcraftInfusions();
+
+ registerLiquidContainer(Config.magicCapsule);
+ registerLiquidContainer(Config.voidCapsule);
+ }
+
+ private static void setupVanillaCrafting()
{
ItemStack input;
ItemStack output;
@@ -134,7 +147,10 @@ public class CraftingManager
});
}
}
-
+ }
+
+ private static void setupCentrifugeRecipes()
+ {
// 20 is the 'average' time to centrifuge a comb.
RecipeManagers.centrifugeManager.addRecipe(20, Config.combs.getStackForType(CombType.OCCULT),
new ItemStack[] {Config.wax.getStackForType(WaxType.MAGIC), ItemInterface.getItem("honeyDrop") },
@@ -188,7 +204,10 @@ public class CraftingManager
RecipeManagers.centrifugeManager.addRecipe(8, Config.propolis.getStackForType(PropolisType.INFUSED),
new ItemStack[] {new ItemStack(Config.tcShard, 1, ThaumcraftHelper.ShardType.MAGIC.ordinal())},
new int[] { 10 });
-
+ }
+
+ private static void setupSqueezerRecipes()
+ {
// Squeezer recipes
RecipeManagers.squeezerManager.addRecipe(20, new ItemStack[] {Config.propolis.getStackForType(PropolisType.FIRE) },
new LiquidStack(Block.lavaStill, 250),
@@ -196,7 +215,13 @@ public class CraftingManager
RecipeManagers.squeezerManager.addRecipe(20, new ItemStack[] {Config.propolis.getStackForType(PropolisType.WATER) },
new LiquidStack(Block.waterStill, 500),
new ItemStack(Config.tcShard, 1, ThaumcraftHelper.ShardType.WATER.ordinal()), 18);
+ }
+ private static void setupCarpenterRecipes()
+ {
+ ItemStack input;
+ ItemStack output;
+
// Carpenter recipes
input = ItemInterface.getItem("craftingMaterial");
input.setItemDamage(3); // Set to Silk Mesh
@@ -241,34 +266,37 @@ public class CraftingManager
'D', Config.drops.getStackForType(DropType.ENCHANTED)
});
- output = new ItemStack(Config.planksWood, 6, 0);
+ output = new ItemStack(Config.planksWood, 4, 0);
RecipeManagers.carpenterManager.addRecipe(8, new LiquidStack(Block.waterStill, 500), null, output, new Object[] {
"B",
'B', new ItemStack(Config.tcLog, 1, 0)
});
- output = new ItemStack(Config.planksWood, 8, 1);
+ output = new ItemStack(Config.planksWood, 6, 1);
RecipeManagers.carpenterManager.addRecipe(8, new LiquidStack(Block.waterStill, 500), null, output, new Object[] {
"B",
'B', new ItemStack(Config.tcLog, 1, 1)
});
-
- // Make Aromatic Lumps a swarmer inducer. Chance is /1000.
- BeeManager.inducers.put(output, 80);
+ }
+
+ private static void setupThaumcraftInfusions()
+ {
+ ItemStack input;
+ ItemStack output;
output = Config.miscResources.getStackForType(ResourceType.EXTENDED_FERTILIZER);
- ItemStack inputA = ItemInterface.getItem("apatite");
+ input = ItemInterface.getItem("apatite");
ObjectTags tags = (new ObjectTags()).add(EnumTag.CROP, 12);
output.stackSize = 2;
ThaumcraftApi.addShapelessInfusionCraftingRecipe("FERTILIZER", "FERTILIZER", 5, tags, output, new Object[] {
- inputA
+ input
});
output = new ItemStack(Config.hiveFrameMagic);
- inputA = ItemInterface.getItem("frameUntreated");
+ input = ItemInterface.getItem("frameUntreated");
tags = new ObjectTags().add(EnumTag.WOOD, 4).add(EnumTag.INSECT, 8);
ThaumcraftApi.addShapelessInfusionCraftingRecipe("HIVEFRAME", "FRAMEMAGIC", 50, tags, output, new Object[] {
- inputA
+ input
});
output = new ItemStack(Config.hiveFrameResilient);
@@ -283,7 +311,7 @@ public class CraftingManager
tags = new ObjectTags().add(EnumTag.WOOD, 4).add(EnumTag.INSECT, 8).add(EnumTag.HEAL, 12);
ThaumcraftApi.addInfusionCraftingRecipe("HIVEFRAMEGENTLE", "FRAMEGENTLE", 50, tags, output, new Object[] {
"www", "wFw", "www",
- 'F', inputA,
+ 'F', input,
'w', ItemInterface.getItem("beeswax")
});
@@ -293,7 +321,7 @@ public class CraftingManager
.add(EnumTag.EXCHANGE, 8);
ThaumcraftApi.addShapelessInfusionCraftingRecipe("HIVEFRAMEMETA", "FRAMEMETABOLIC", 50, tags, output, new Object[] {
Item.magmaCream,
- inputA
+ input
});
output = new ItemStack(Config.hiveFrameNecrotic);
@@ -302,7 +330,7 @@ public class CraftingManager
ThaumcraftApi.addInfusionCraftingRecipe("HIVEFRAMENECRO", "FRAMENECROTIC", 50, tags, output, new Object[] {
" S ", "SxS", " S ",
'S', Item.rottenFlesh,
- 'x', inputA
+ 'x', input
});
output = new ItemStack(Config.hiveFrameTemporal);
@@ -311,7 +339,7 @@ public class CraftingManager
"tSt", "SFS", "tSt",
't', Item.stick,
'S', Block.sand,
- 'F', inputA
+ 'F', input
});
output = Config.voidCapsule.getCapsuleForLiquid(LiquidType.EMPTY);
@@ -368,9 +396,6 @@ public class CraftingManager
ShapelessBeeInfusionCraftingRecipe.createNewRecipe(researchKey, "BEEINFUSION0", BeeSpecies.INFUSED.getBeeItem(EnumBeeType.PRINCESS), new Object[]
{ princess, new ItemStack(Config.tcShard, 1, ThaumcraftHelper.ShardType.MAGIC.ordinal()) },
100, tags, BeeSpecies.STARK, EnumBeeChromosome.SPECIES);
-
- registerLiquidContainer(Config.magicCapsule);
- registerLiquidContainer(Config.voidCapsule);
}
private static void registerLiquidContainer(ItemCapsule baseCapsule)
diff --git a/thaumicbees_src/thaumicbees/main/utils/compat/ForestryHelper.java b/thaumicbees_src/thaumicbees/main/utils/compat/ForestryHelper.java
index ad885bd..94d3617 100644
--- a/thaumicbees_src/thaumicbees/main/utils/compat/ForestryHelper.java
+++ b/thaumicbees_src/thaumicbees/main/utils/compat/ForestryHelper.java
@@ -1,6 +1,8 @@
package thaumicbees.main.utils.compat;
import net.minecraft.item.Item;
+import forestry.api.core.EnumHumidity;
+import forestry.api.core.EnumTemperature;
import forestry.api.core.ItemInterface;
import thaumicbees.main.Config;
@@ -92,4 +94,44 @@ public class ForestryHelper
LAPIS,
;
}
+
+ public static EnumTemperature getEnumTemperatureFromValue(float rawTemp)
+ {
+ EnumTemperature value = EnumTemperature.ICY;
+
+ if (rawTemp >= 2.0f)
+ {
+ value = EnumTemperature.HOT;
+ }
+ else if (rawTemp >= 1.2f)
+ {
+ value = EnumTemperature.WARM;
+ }
+ else if (rawTemp >= 0.2f)
+ {
+ value = EnumTemperature.NORMAL;
+ }
+ else if (rawTemp >= 0.05f)
+ {
+ value = EnumTemperature.COLD;
+ }
+
+ return value;
+ }
+
+ public static EnumHumidity getEnumHumidityFromValue(float rawHumidity)
+ {
+ EnumHumidity value = EnumHumidity.ARID;
+
+ if (rawHumidity >= 0.9f)
+ {
+ value = EnumHumidity.DAMP;
+ }
+ else if (rawHumidity >= 0.3f)
+ {
+ value = EnumHumidity.NORMAL;
+ }
+
+ return value;
+ }
}