diff options
author | Draknyte1 <Draknyte1@hotmail.com> | 2016-10-21 20:46:47 +1000 |
---|---|---|
committer | Draknyte1 <Draknyte1@hotmail.com> | 2016-10-21 20:46:47 +1000 |
commit | 755828dacfb3ab03affce91844949639b9e5ec84 (patch) | |
tree | eb69d221bd30a2e74dc97b3443f0c12a505f68d8 | |
parent | 80907bc4a42cf3b7ca184213b83fae69ac72bdbf (diff) | |
download | GT5-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?
5 files changed, 256 insertions, 70 deletions
diff --git a/.classpath b/.classpath index 22eb51343b..94f92859a9 100644 --- a/.classpath +++ b/.classpath @@ -11,8 +11,8 @@ <classpathentry kind="lib" path="C:/eclipse/workspace/GTplusplus/libs/growthcraft-1.7.10-2.3.1-complete.jar"/> <classpathentry kind="lib" path="C:/eclipse/workspace/GTplusplus/libs/CoFHCore-[1.7.10]3.0.3-303.jar"/> <classpathentry kind="lib" path="libs/Baubles-deobf-1.7.10-1.0.1.10.jar"/> - <classpathentry kind="lib" path="libs/forestry_1.7.10-4.2.2.50-deobf.jar"/> + <classpathentry kind="lib" path="libs/forestry_1.7.10-4.2.2.50-deobf.jar" sourcepath="/Forestry42/src/main/java"/> <classpathentry kind="lib" path="libs/industrialcraft-2-2.2.783-experimental-deobf.jar"/> - <classpathentry kind="lib" path="libs/gregtech_1.7.10-5.08.30-dev.jar" sourcepath="/Gregtech/src/main/java"/> + <classpathentry kind="lib" path="libs/gregtech-5.09.23-NoTC-dev.jar"/> <classpathentry kind="output" path="bin"/> </classpath> 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); + } } |