aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/forestry/bees
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-10-21 20:46:47 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-10-21 20:46:47 +1000
commit755828dacfb3ab03affce91844949639b9e5ec84 (patch)
treeeb69d221bd30a2e74dc97b3443f0c12a505f68d8 /src/Java/gtPlusPlus/xmod/forestry/bees
parent80907bc4a42cf3b7ca184213b83fae69ac72bdbf (diff)
downloadGT5-Unofficial-755828dacfb3ab03affce91844949639b9e5ec84.tar.gz
GT5-Unofficial-755828dacfb3ab03affce91844949639b9e5ec84.tar.bz2
GT5-Unofficial-755828dacfb3ab03affce91844949639b9e5ec84.zip
% Trying things to get Frame Housings too apply their BeeModifier to the Alveary.
@Mezz, I've had a horrible time trying to backtrack what apiaries do and apply that to the Alveary. Any advice or suggestions?
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/forestry/bees')
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/bees/alveary/AlvearyBeeListener.java18
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyFrameHousing.java9
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java193
-rw-r--r--src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java102
4 files changed, 254 insertions, 68 deletions
diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/AlvearyBeeListener.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/AlvearyBeeListener.java
new file mode 100644
index 0000000000..6736c54309
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/AlvearyBeeListener.java
@@ -0,0 +1,18 @@
+package gtPlusPlus.xmod.forestry.bees.alveary;
+
+import forestry.api.apiculture.DefaultBeeListener;
+import gtPlusPlus.xmod.forestry.bees.alveary.gui.InventoryFrameHousing;
+
+public class AlvearyBeeListener extends DefaultBeeListener {
+ private final IAlvearyFrameHousing apiary;
+
+ public AlvearyBeeListener(IAlvearyFrameHousing apiary) {
+ this.apiary = apiary;
+ }
+
+ @Override
+ public void wearOutEquipment(int amount) {
+ InventoryFrameHousing apiaryInventory = apiary.getAlvearyInventory();
+ apiaryInventory.wearOutFrames(apiary, amount);
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyFrameHousing.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyFrameHousing.java
new file mode 100644
index 0000000000..6eeefa2696
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyFrameHousing.java
@@ -0,0 +1,9 @@
+package gtPlusPlus.xmod.forestry.bees.alveary;
+
+import forestry.api.apiculture.IBeeHousing;
+import gtPlusPlus.xmod.forestry.bees.alveary.gui.InventoryFrameHousing;
+
+public interface IAlvearyFrameHousing extends IBeeHousing {
+ InventoryFrameHousing getAlvearyInventory();
+ void wearOutFrames(IBeeHousing beeHousing, int amount);
+}
diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java
index 12f97b5f0c..794b5d1be8 100644
--- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java
+++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java
@@ -14,13 +14,19 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import forestry.api.apiculture.BeeManager;
+import forestry.api.apiculture.DefaultBeeListener;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeListener;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.apiculture.IBeekeepingMode;
import forestry.api.apiculture.IHiveFrame;
+import forestry.api.arboriculture.EnumGermlingType;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IIndividual;
+import forestry.api.genetics.ISpeciesRoot;
import forestry.api.multiblock.IAlvearyComponent;
-import forestry.apiculture.ApiaryBeeModifier;
+import forestry.apiculture.AlvearyBeeModifier;
import forestry.apiculture.multiblock.MultiblockLogicAlveary;
import forestry.apiculture.network.packets.PacketActiveUpdate;
import forestry.apiculture.worldgen.Hive;
@@ -32,15 +38,17 @@ import forestry.core.inventory.wrappers.InventoryIterator;
import forestry.core.proxy.Proxies;
import forestry.core.tiles.IActivatable;
import forestry.core.utils.ItemStackUtil;
+import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.forestry.bees.alveary.gui.CONTAINER_FrameHousing;
import gtPlusPlus.xmod.forestry.bees.alveary.gui.GUI_FrameHousing;
import gtPlusPlus.xmod.forestry.bees.alveary.gui.InventoryFrameHousing;
public class TileAlvearyFrameHousing
extends FR_TileAlveary
-implements ISidedFrameWearingInventory, IActivatable, IAlvearyComponent.Active, IAlvearyComponent.BeeModifier
+implements ISidedFrameWearingInventory, IActivatable, IAlvearyComponent.Active, IAlvearyComponent.BeeModifier, IAlvearyFrameHousing, IAlvearyComponent.BeeListener
{
private final InventoryFrameHousing inventory;
+ private final IBeeListener beeListener;
private final Stack<ItemStack> pendingSpawns = new Stack<ItemStack>();
private boolean active;
@@ -48,6 +56,7 @@ implements ISidedFrameWearingInventory, IActivatable, IAlvearyComponent.Active,
{
super(FR_BlockAlveary.Type.FRAME);
this.inventory = new InventoryFrameHousing(this);
+ this.beeListener = new AlvearyFrameHousingBeeListener(this.inventory);
}
@@ -66,17 +75,23 @@ implements ISidedFrameWearingInventory, IActivatable, IAlvearyComponent.Active,
@Override
public void updateServer(int tickCount)
{
-
+
if (getInternalInventory() == null) {
return;
}
-
+
if (this.inventory.getStackInSlot(0) != null)
{
- setActive(true);
- if (tickCount % 1000 == 0) {
- wearOutFrames(this, 1);
+ if (((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeekeepingLogic().canWork()){
+ setActive(true);
+ if (tickCount % 1000 == 0) {
+ wearOutFrames(this, 1);
+ }
}
+ else {
+ Utils.LOG_INFO("Cannot work - Probably no queen alive.");
+ }
+
}
else
{
@@ -85,7 +100,7 @@ implements ISidedFrameWearingInventory, IActivatable, IAlvearyComponent.Active,
if (tickCount % 500 != 0) {
return;
}
-
+
}
@Override
@@ -224,50 +239,51 @@ implements ISidedFrameWearingInventory, IActivatable, IAlvearyComponent.Active,
{
return new CONTAINER_FrameHousing(this, player);
}
-
- private final IBeeModifier beeModifier = new ApiaryBeeModifier();
- //private final IBeeListener beeListener = new ApiaryBeeListener(this);
+
+ private final IBeeModifier beeModifier = new AlvearyBeeModifier();
+ //private final IBeeListener beeListener = new AlvearyBeeListener(this);
+ private final Iterable<IBeeListener> beeListenerList = ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeListeners();
@Override
public Collection<IBeeModifier> getBeeModifiers()
- {
- List<IBeeModifier> beeModifiers = new ArrayList<IBeeModifier>();
-
- beeModifiers.add(this.beeModifier);
- for (IHiveFrame frame : getFrames(this.inventory)) {
- beeModifiers.add(frame.getBeeModifier());
- }
- return beeModifiers;
- }
-
+ {
+ List<IBeeModifier> beeModifiers = new ArrayList<IBeeModifier>();
+
+ beeModifiers.add(this.beeModifier);
+ for (IHiveFrame frame : getFrames(this.inventory)) {
+ beeModifiers.add(frame.getBeeModifier());
+ }
+ return beeModifiers;
+ }
+
public Collection<IHiveFrame> getFrames(IInventory inventory)
- {
- Collection<IHiveFrame> hiveFrames = new ArrayList<IHiveFrame>(inventory.getSizeInventory());
- for (int i = 0; i < inventory.getSizeInventory(); i++)
- {
- ItemStack stackInSlot = getStackInSlot(i);
- if (stackInSlot != null)
- {
- Item itemInSlot = stackInSlot.getItem();
- if ((itemInSlot instanceof IHiveFrame)) {
- hiveFrames.add((IHiveFrame)itemInSlot);
- }
- }
- }
- return hiveFrames;
- }
+ {
+ Collection<IHiveFrame> hiveFrames = new ArrayList<IHiveFrame>(inventory.getSizeInventory());
+ for (int i = 0; i < inventory.getSizeInventory(); i++)
+ {
+ ItemStack stackInSlot = getStackInSlot(i);
+ if (stackInSlot != null)
+ {
+ Item itemInSlot = stackInSlot.getItem();
+ if ((itemInSlot instanceof IHiveFrame)) {
+ hiveFrames.add((IHiveFrame)itemInSlot);
+ }
+ }
+ }
+ return hiveFrames;
+ }
@Override
public IBeeModifier getBeeModifier() {
- List<IBeeModifier> beeModifiers = new ArrayList<IBeeModifier>();
-
- beeModifiers.add(this.beeModifier);
- for (IHiveFrame frame : getFrames(this.inventory)) {
- beeModifiers.add(frame.getBeeModifier());
- }
- return beeModifiers.get(0);
- }
-
+ List<IBeeModifier> beeModifiers = new ArrayList<IBeeModifier>();
+
+ //beeModifiers.add(this.beeModifier);
+ for (IHiveFrame frame : getFrames(this.inventory)) {
+ beeModifiers.add(frame.getBeeModifier());
+ }
+ return beeModifiers.get(0);
+ }
+
private ItemStack getQueenStack()
{
ItemStack queenStack = ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeInventory().getQueen();
@@ -276,26 +292,69 @@ implements ISidedFrameWearingInventory, IActivatable, IAlvearyComponent.Active,
@Override
public void wearOutFrames(IBeeHousing beeHousing, int amount)
- {
- IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(beeHousing.getWorld());
- int wear = Math.round(amount * beekeepingMode.getWearModifier());
- for (int i = 0; i < this.inventory.getSizeInventory(); i++)
- {
- ItemStack hiveFrameStack = getStackInSlot(i);
- if (hiveFrameStack != null)
- {
- Item hiveFrameItem = hiveFrameStack.getItem();
- if ((hiveFrameItem instanceof IHiveFrame))
- {
- IHiveFrame hiveFrame = (IHiveFrame)hiveFrameItem;
-
- ItemStack queenStack = getQueenStack();
- IBee queen = BeeManager.beeRoot.getMember(queenStack);
- ItemStack usedFrame = hiveFrame.frameUsed(beeHousing, hiveFrameStack, queen, wear);
-
- setInventorySlotContents(i, usedFrame);
- }
- }
- }
- }
+ {
+ IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(beeHousing.getWorld());
+ int wear = Math.round(amount * beekeepingMode.getWearModifier());
+ for (int i = 0; i < this.inventory.getSizeInventory(); i++)
+ {
+ ItemStack hiveFrameStack = getStackInSlot(i);
+ if (hiveFrameStack != null)
+ {
+ Item hiveFrameItem = hiveFrameStack.getItem();
+ if ((hiveFrameItem instanceof IHiveFrame))
+ {
+ IHiveFrame hiveFrame = (IHiveFrame)hiveFrameItem;
+ Utils.LOG_INFO("Wearing out frame by "+amount);
+ ItemStack queenStack = getQueenStack();
+ IBee queen = BeeManager.beeRoot.getMember(queenStack);
+ ItemStack usedFrame = hiveFrame.frameUsed(beeHousing, hiveFrameStack, queen, wear);
+
+ //((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeListeners().
+
+ setInventorySlotContents(i, usedFrame);
+ }
+ }
+ }
+ }
+
+ @Override
+ public InventoryFrameHousing getAlvearyInventory() {
+ return inventory;
+ }
+
+ @Override
+ public IBeeListener getBeeListener() {
+ return beeListener;
+ }
+
+ static class AlvearyFrameHousingBeeListener
+ extends DefaultBeeListener
+ {
+ private final InventoryFrameHousing inventory;
+
+ public AlvearyFrameHousingBeeListener(InventoryFrameHousing inventory)
+ {
+ this.inventory = inventory;
+ }
+
+ @Override
+ public boolean onPollenRetrieved(IIndividual pollen)
+ {
+ /*if (!((Object) this.inventory).canStorePollen()) {
+ return false;
+ }*/
+ ISpeciesRoot speciesRoot = AlleleManager.alleleRegistry.getSpeciesRoot(pollen.getClass());
+
+ ItemStack pollenStack = speciesRoot.getMemberStack(pollen, EnumGermlingType.POLLEN.ordinal());
+ if (pollenStack != null)
+ {
+ // ((Object) this.inventory).storePollenStack(pollenStack);
+ return true;
+ }
+ return false;
+ }
+ }
+
+
+
}
diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java
index 406c3c47cb..9d6dd06f2d 100644
--- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java
+++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java
@@ -1,16 +1,36 @@
package gtPlusPlus.xmod.forestry.bees.alveary.gui;
import net.minecraft.item.ItemStack;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+import net.minecraft.world.biome.BiomeGenBase;
+
+import com.mojang.authlib.GameProfile;
+
import forestry.api.apiculture.BeeManager;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeHousingInventory;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.apiculture.IBeekeepingLogic;
+import forestry.api.core.EnumHumidity;
+import forestry.api.core.EnumTemperature;
+import forestry.api.core.IErrorLogic;
import forestry.core.inventory.InventoryAdapterTile;
import forestry.core.utils.ItemStackUtil;
+import gtPlusPlus.xmod.forestry.bees.alveary.IAlvearyFrameHousing;
import gtPlusPlus.xmod.forestry.bees.alveary.TileAlvearyFrameHousing;
-public class InventoryFrameHousing extends InventoryAdapterTile<TileAlvearyFrameHousing>
+public class InventoryFrameHousing extends InventoryAdapterTile<TileAlvearyFrameHousing> implements IAlvearyFrameHousing
{
+
+ TileAlvearyFrameHousing alvearyFrame;
+
public InventoryFrameHousing(TileAlvearyFrameHousing alvearyFrame)
{
super(alvearyFrame, 1, "FrameHousingInv");
+ this.alvearyFrame = alvearyFrame;
}
@Override
@@ -18,4 +38,84 @@ public class InventoryFrameHousing extends InventoryAdapterTile<TileAlvearyFrame
{
return ItemStackUtil.containsItemStack(BeeManager.inducers.keySet(), itemStack);
}
+
+ @Override
+ public boolean canBlockSeeTheSky() {
+ return alvearyFrame.canBlockSeeTheSky();
+ }
+
+ @Override
+ public Vec3 getBeeFXCoordinates() {
+ return alvearyFrame.getBeeFXCoordinates();
+ }
+
+ @Override
+ public IBeeHousingInventory getBeeInventory() {
+ return alvearyFrame.getBeeInventory();
+ }
+
+ @Override
+ public Iterable<IBeeListener> getBeeListeners() {
+ return alvearyFrame.getBeeListeners();
+ }
+
+ @Override
+ public Iterable<IBeeModifier> getBeeModifiers() {
+ return alvearyFrame.getBeeModifiers();
+ }
+
+ @Override
+ public IBeekeepingLogic getBeekeepingLogic() {
+ return alvearyFrame.getBeekeepingLogic();
+ }
+
+ @Override
+ public BiomeGenBase getBiome() {
+ return alvearyFrame.getBiome();
+ }
+
+ @Override
+ public int getBlockLightValue() {
+ return alvearyFrame.getBlockLightValue();
+ }
+
+ @Override
+ public EnumHumidity getHumidity() {
+ return alvearyFrame.getHumidity();
+ }
+
+ @Override
+ public GameProfile getOwner() {
+ return alvearyFrame.getOwner();
+ }
+
+ @Override
+ public EnumTemperature getTemperature() {
+ return alvearyFrame.getTemperature();
+ }
+
+ @Override
+ public World getWorld() {
+ return alvearyFrame.getWorld();
+ }
+
+ @Override
+ public ChunkCoordinates getCoordinates() {
+ return alvearyFrame.getCoordinates();
+ }
+
+ @Override
+ public IErrorLogic getErrorLogic() {
+ return alvearyFrame.getErrorLogic();
+ }
+
+ @Override
+ public InventoryFrameHousing getAlvearyInventory() {
+ return this;
+ }
+
+ @Override
+ public void wearOutFrames(IBeeHousing beeHousing, int amount) {
+ alvearyFrame.wearOutFrames(beeHousing, amount);
+ }
}