From 481c22a19d97d14bb743a6a1a2e0d4339f5d9931 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Thu, 7 Dec 2023 16:49:09 +0100 Subject: [PATCH 01/66] use apiary inventory and beelistener --- .../tileentity/TileEntityMagicApiary.java | 80 +++++++++---------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java index d3484617..4c103247 100644 --- a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java +++ b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java @@ -6,6 +6,9 @@ import java.util.List; import java.util.Map; +import forestry.apiculture.ApiaryBeeListener; +import forestry.apiculture.IApiary; +import forestry.apiculture.inventory.IApiaryInventory; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; @@ -26,7 +29,6 @@ import com.mojang.authlib.GameProfile; -import forestry.api.apiculture.DefaultBeeListener; import forestry.api.apiculture.DefaultBeeModifier; import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeGenome; @@ -50,7 +52,7 @@ import magicbees.main.utils.net.EventAuraChargeUpdate; import magicbees.main.utils.net.NetworkEventHandler; -public class TileEntityMagicApiary extends TileEntity implements ISidedInventory, IBeeHousing, ITileEntityAuraCharged { +public class TileEntityMagicApiary extends TileEntity implements ISidedInventory, IApiary, ITileEntityAuraCharged { // Constants private static final int AURAPROVIDER_SEARCH_RADIUS = 6; @@ -64,7 +66,7 @@ public class TileEntityMagicApiary extends TileEntity implements ISidedInventory private final IBeekeepingLogic beeLogic; private final IErrorLogic errorLogic; - private final IBeeListener beeListener; + private final IBeeListener beeListener = new ApiaryBeeListener(this); private final IBeeModifier beeModifier; private final MagicApiaryInventory inventory; private final AuraCharges auraCharges = new AuraCharges(); @@ -72,7 +74,6 @@ public class TileEntityMagicApiary extends TileEntity implements ISidedInventory public TileEntityMagicApiary() { beeLogic = BeeManager.beeRoot.createBeekeepingLogic(this); beeModifier = new MagicApiaryBeeModifier(this); - beeListener = new MagicApiaryBeeListener(this); inventory = new MagicApiaryInventory(this); errorLogic = ForestryAPI.errorStateRegistry.createErrorLogic(); } @@ -100,6 +101,11 @@ public IBeeHousingInventory getBeeInventory() { return inventory; } + @Override + public IApiaryInventory getApiaryInventory() { + return inventory; + } + @Override public IBeekeepingLogic getBeekeepingLogic() { return beeLogic; @@ -480,7 +486,7 @@ public boolean canExtractItem(int i, ItemStack itemStack, int i1) { return inventory.canExtractItem(i, itemStack, i1); } - private static class MagicApiaryInventory implements IBeeHousingInventory { + private static class MagicApiaryInventory implements IApiaryInventory { public static final int SLOT_QUEEN = 0; public static final int SLOT_DRONE = 1; @@ -490,7 +496,7 @@ private static class MagicApiaryInventory implements IBeeHousingInventory { public static final int SLOT_PRODUCTS_COUNT = 7; private final TileEntityMagicApiary magicApiary; - private ItemStack[] items; + private final ItemStack[] items; public MagicApiaryInventory(TileEntityMagicApiary magicApiary) { this.magicApiary = magicApiary; @@ -600,6 +606,32 @@ public Collection getFrames() { return hiveFrames; } + public void wearOutFrames(IBeeHousing beeHousing,int amount) { + IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(magicApiary.getWorldObj()); + int wear = Math.round(amount * beekeepingMode.getWearModifier()); + + for (int i = MagicApiaryInventory.SLOT_FRAME_START; i + < MagicApiaryInventory.SLOT_FRAME_START + MagicApiaryInventory.SLOT_FRAME_COUNT; i++) { + ItemStack hiveFrameStack = magicApiary.getStackInSlot(i); + if (hiveFrameStack == null) { + continue; + } + + Item hiveFrameItem = hiveFrameStack.getItem(); + if (!(hiveFrameItem instanceof IHiveFrame)) { + continue; + } + + IHiveFrame hiveFrame = (IHiveFrame) hiveFrameItem; + + ItemStack queenStack = magicApiary.getBeeInventory().getQueen(); + IBee queen = BeeManager.beeRoot.getMember(queenStack); + ItemStack usedFrame = hiveFrame.frameUsed(magicApiary, hiveFrameStack, queen, wear); + + magicApiary.setInventorySlotContents(i, usedFrame); + } + } + public void writeToNBT(NBTTagCompound compound) { NBTTagList itemsNBT = new NBTTagList(); @@ -670,40 +702,4 @@ public float getGeneticDecay(IBeeGenome genome, float currentModifier) { return 0.8f; } } - - private static class MagicApiaryBeeListener extends DefaultBeeListener { - - private final TileEntityMagicApiary magicApiary; - - public MagicApiaryBeeListener(TileEntityMagicApiary magicApiary) { - this.magicApiary = magicApiary; - } - - @Override - public void wearOutEquipment(int amount) { - IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(magicApiary.getWorldObj()); - int wear = Math.round(amount * beekeepingMode.getWearModifier()); - - for (int i = MagicApiaryInventory.SLOT_FRAME_START; i - < MagicApiaryInventory.SLOT_FRAME_START + MagicApiaryInventory.SLOT_FRAME_COUNT; i++) { - ItemStack hiveFrameStack = magicApiary.getStackInSlot(i); - if (hiveFrameStack == null) { - continue; - } - - Item hiveFrameItem = hiveFrameStack.getItem(); - if (!(hiveFrameItem instanceof IHiveFrame)) { - continue; - } - - IHiveFrame hiveFrame = (IHiveFrame) hiveFrameItem; - - ItemStack queenStack = magicApiary.getBeeInventory().getQueen(); - IBee queen = BeeManager.beeRoot.getMember(queenStack); - ItemStack usedFrame = hiveFrame.frameUsed(magicApiary, hiveFrameStack, queen, wear); - - magicApiary.setInventorySlotContents(i, usedFrame); - } - } - } } From 5e912b69bda7ffd7bd052e0db0dbe45be3202fc3 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Thu, 7 Dec 2023 18:00:36 +0100 Subject: [PATCH 02/66] remove unused methods --- .../tileentity/TileEntityMagicApiary.java | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java index 4c103247..73a03230 100644 --- a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java +++ b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java @@ -6,9 +6,7 @@ import java.util.List; import java.util.Map; -import forestry.apiculture.ApiaryBeeListener; -import forestry.apiculture.IApiary; -import forestry.apiculture.inventory.IApiaryInventory; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; @@ -43,6 +41,9 @@ import forestry.api.core.EnumTemperature; import forestry.api.core.ForestryAPI; import forestry.api.core.IErrorLogic; +import forestry.apiculture.ApiaryBeeListener; +import forestry.apiculture.IApiary; +import forestry.apiculture.inventory.IApiaryInventory; import magicbees.api.bees.IMagicApiaryAuraProvider; import magicbees.bees.AuraCharge; import magicbees.bees.BeeManager; @@ -111,10 +112,6 @@ public IBeekeepingLogic getBeekeepingLogic() { return beeLogic; } - public void setOwner(EntityPlayer player) { - this.ownerProfile = player.getGameProfile(); - } - @Override public IErrorLogic getErrorLogic() { return errorLogic; @@ -242,14 +239,6 @@ public int getHealthScaled(int i) { return (breedingProgressPercent * i) / 100; } - public int getTemperatureScaled(int i) { - return Math.round(i * (getExactTemperature() / 2)); - } - - public int getHumidityScaled(int i) { - return Math.round(i * getExactHumidity()); - } - /* Saving and loading */ @Override public void writeToNBT(NBTTagCompound compound) { @@ -606,12 +595,12 @@ public Collection getFrames() { return hiveFrames; } - public void wearOutFrames(IBeeHousing beeHousing,int amount) { + public void wearOutFrames(IBeeHousing beeHousing, int amount) { IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(magicApiary.getWorldObj()); int wear = Math.round(amount * beekeepingMode.getWearModifier()); for (int i = MagicApiaryInventory.SLOT_FRAME_START; i - < MagicApiaryInventory.SLOT_FRAME_START + MagicApiaryInventory.SLOT_FRAME_COUNT; i++) { + < MagicApiaryInventory.SLOT_FRAME_START + MagicApiaryInventory.SLOT_FRAME_COUNT; i++) { ItemStack hiveFrameStack = magicApiary.getStackInSlot(i); if (hiveFrameStack == null) { continue; From 7345669405420b6549346affd94b50e17e92204a Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Thu, 7 Dec 2023 18:06:22 +0100 Subject: [PATCH 03/66] remove pointless arithmetic --- .../tileentity/TileEntityMagicApiary.java | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java index 73a03230..59d0772e 100644 --- a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java +++ b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java @@ -267,10 +267,6 @@ public Packet getDescriptionPacket() { return event.getPacket(); } - public float getExactTemperature() { - return getBiome().getFloatTemperature(xCoord, yCoord, zCoord); - } - public float getExactHumidity() { return getBiome().rainfall; } @@ -661,29 +657,17 @@ public MagicApiaryBeeModifier(TileEntityMagicApiary magicApiary) { @Override public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) { - float mod = 1.0f; - if (magicApiary.isMutationBoosted()) { - mod = mod * 2f; - } - return mod; + return magicApiary.isMutationBoosted() ? 2f : 1f; } @Override public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) { - float mod = 1.0f; - if (magicApiary.isDeathRateBoosted()) { - mod = mod / 2f; - } - return mod; + return magicApiary.isDeathRateBoosted() ? 2f : 1f; } @Override public float getProductionModifier(IBeeGenome genome, float currentModifier) { - float mod = -0.1f;// was 0.9x, now -0.1 - if (magicApiary.isProductionBoosted()) { - mod = 0.8f;// was 1.8x, now +0.8 - } - return mod; + return magicApiary.isProductionBoosted() ? 0.8f : -0.1f; } @Override From c8aaeba7cb478381c7867b4a68ee2e54039857cf Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Thu, 7 Dec 2023 19:08:06 +0100 Subject: [PATCH 04/66] edit frame and product slots --- .../magicbees/client/gui/ContainerMagicApiary.java | 4 ++-- .../tileentity/TileEntityMagicApiary.java | 14 +++----------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/main/java/magicbees/client/gui/ContainerMagicApiary.java b/src/main/java/magicbees/client/gui/ContainerMagicApiary.java index dceb5459..caae7d33 100644 --- a/src/main/java/magicbees/client/gui/ContainerMagicApiary.java +++ b/src/main/java/magicbees/client/gui/ContainerMagicApiary.java @@ -19,8 +19,8 @@ public class ContainerMagicApiary extends ContainerMB { // Constants private static final int SLOT_QUEEN = 0; private static final int SLOT_DRONE = 1; - private static final int SLOT_FRAME_START = 2; - private static final int SLOT_INVENTORY_START = 5; + private static final int SLOT_FRAME_START = 9; + private static final int SLOT_INVENTORY_START = 2; private static final int SLOT_FRAME_COUNT = 3; private static final int SLOT_INVENTORY_COUNT = 7; diff --git a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java index 59d0772e..d6c579ce 100644 --- a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java +++ b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java @@ -6,7 +6,6 @@ import java.util.List; import java.util.Map; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; @@ -475,9 +474,9 @@ private static class MagicApiaryInventory implements IApiaryInventory { public static final int SLOT_QUEEN = 0; public static final int SLOT_DRONE = 1; - public static final int SLOT_FRAME_START = 2; + public static final int SLOT_FRAME_START = 9; public static final int SLOT_FRAME_COUNT = 3; - public static final int SLOT_PRODUCTS_START = 5; + public static final int SLOT_PRODUCTS_START = 2; public static final int SLOT_PRODUCTS_COUNT = 7; private final TileEntityMagicApiary magicApiary; @@ -559,14 +558,7 @@ public boolean canInsertItem(int slot, ItemStack itemStack, int side) { } public boolean canExtractItem(int slot, ItemStack itemStack, int side) { - switch (slot) { - case SLOT_FRAME_START: - case SLOT_FRAME_START + 1: - case SLOT_FRAME_START + 2: - return false; - default: - return true; - } + return slot >= SLOT_FRAME_START && slot <= SLOT_FRAME_START + 2; } public int getInventoryStackLimit() { From ae246d87eb90bbf59ca3c64efaa1387b09dc6349 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Thu, 7 Dec 2023 21:40:37 +0100 Subject: [PATCH 05/66] extract MagicApiaryInventory into file --- .../magicbees/bees/MagicApiaryInventory.java | 186 ++++++++++++++++++ .../tileentity/TileEntityMagicApiary.java | 178 +---------------- 2 files changed, 187 insertions(+), 177 deletions(-) create mode 100644 src/main/java/magicbees/bees/MagicApiaryInventory.java diff --git a/src/main/java/magicbees/bees/MagicApiaryInventory.java b/src/main/java/magicbees/bees/MagicApiaryInventory.java new file mode 100644 index 00000000..f659b02e --- /dev/null +++ b/src/main/java/magicbees/bees/MagicApiaryInventory.java @@ -0,0 +1,186 @@ +package magicbees.bees; + +import java.util.ArrayList; +import java.util.Collection; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraftforge.common.util.Constants; + +import forestry.api.apiculture.IBee; +import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IBeekeepingMode; +import forestry.api.apiculture.IHiveFrame; +import forestry.apiculture.inventory.IApiaryInventory; +import magicbees.main.utils.ItemStackUtils; +import magicbees.tileentity.TileEntityMagicApiary; + +public class MagicApiaryInventory implements IApiaryInventory { + + public static final int SLOT_QUEEN = 0; + public static final int SLOT_DRONE = 1; + public static final int SLOT_FRAME_START = 9; + public static final int SLOT_FRAME_COUNT = 3; + public static final int SLOT_PRODUCTS_START = 2; + public static final int SLOT_PRODUCTS_COUNT = 7; + + private final TileEntityMagicApiary magicApiary; + private final ItemStack[] items; + + public MagicApiaryInventory(TileEntityMagicApiary magicApiary) { + this.magicApiary = magicApiary; + this.items = new ItemStack[12]; + } + + @Override + public ItemStack getQueen() { + return magicApiary.getStackInSlot(SLOT_QUEEN); + } + + @Override + public ItemStack getDrone() { + return magicApiary.getStackInSlot(SLOT_DRONE); + } + + @Override + public void setQueen(ItemStack itemstack) { + magicApiary.setInventorySlotContents(SLOT_QUEEN, itemstack); + } + + @Override + public void setDrone(ItemStack itemstack) { + magicApiary.setInventorySlotContents(SLOT_DRONE, itemstack); + } + + @Override + public boolean addProduct(ItemStack product, boolean all) { + int countAdded = ItemStackUtils + .addItemToInventory(magicApiary, product, SLOT_PRODUCTS_START, SLOT_PRODUCTS_COUNT); + + if (all) { + return countAdded == product.stackSize; + } else { + return countAdded > 0; + } + } + + public int getSizeInventory() { + return items.length; + } + + public ItemStack getStackInSlot(int i) { + return items[i]; + } + + public void setInventorySlotContents(int i, ItemStack itemStack) { + items[i] = itemStack; + + if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + public int[] getAccessibleSlotsFromSide(int side) { + if (side == 0 || side == 1) { + return new int[] { SLOT_QUEEN, SLOT_DRONE }; + } else { + int[] slots = new int[SLOT_PRODUCTS_COUNT]; + for (int i = 0, slot = SLOT_PRODUCTS_START; i < SLOT_PRODUCTS_COUNT; ++i, ++slot) { + slots[i] = slot; + } + return slots; + } + } + + public boolean canInsertItem(int slot, ItemStack itemStack, int side) { + if (slot == SLOT_QUEEN && BeeManager.beeRoot.isMember(itemStack) && !BeeManager.beeRoot.isDrone(itemStack)) { + return true; + } else if (slot == SLOT_DRONE && BeeManager.beeRoot.isDrone(itemStack)) { + return true; + } + return slot == SLOT_DRONE && BeeManager.beeRoot.isDrone(itemStack); + } + + public boolean canExtractItem(int slot, ItemStack itemStack, int side) { + return slot >= SLOT_FRAME_START && slot <= SLOT_FRAME_START + 2; + } + + public int getInventoryStackLimit() { + return 64; + } + + public Collection getFrames() { + Collection hiveFrames = new ArrayList(SLOT_FRAME_COUNT); + + for (int i = SLOT_FRAME_START; i < SLOT_FRAME_START + SLOT_FRAME_COUNT; i++) { + ItemStack stackInSlot = magicApiary.getStackInSlot(i); + if (stackInSlot == null) { + continue; + } + + Item itemInSlot = stackInSlot.getItem(); + if (itemInSlot instanceof IHiveFrame) { + hiveFrames.add((IHiveFrame) itemInSlot); + } + } + + return hiveFrames; + } + + public void wearOutFrames(IBeeHousing beeHousing, int amount) { + IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(magicApiary.getWorldObj()); + int wear = Math.round(amount * beekeepingMode.getWearModifier()); + + for (int i = MagicApiaryInventory.SLOT_FRAME_START; i + < MagicApiaryInventory.SLOT_FRAME_START + MagicApiaryInventory.SLOT_FRAME_COUNT; i++) { + ItemStack hiveFrameStack = magicApiary.getStackInSlot(i); + if (hiveFrameStack == null) { + continue; + } + + Item hiveFrameItem = hiveFrameStack.getItem(); + if (!(hiveFrameItem instanceof IHiveFrame)) { + continue; + } + + IHiveFrame hiveFrame = (IHiveFrame) hiveFrameItem; + + ItemStack queenStack = magicApiary.getBeeInventory().getQueen(); + IBee queen = BeeManager.beeRoot.getMember(queenStack); + ItemStack usedFrame = hiveFrame.frameUsed(magicApiary, hiveFrameStack, queen, wear); + + magicApiary.setInventorySlotContents(i, usedFrame); + } + } + + public void writeToNBT(NBTTagCompound compound) { + NBTTagList itemsNBT = new NBTTagList(); + + for (int i = 0; i < items.length; i++) { + ItemStack itemStack = items[i]; + + if (itemStack != null) { + NBTTagCompound item = new NBTTagCompound(); + item.setByte("Slot", (byte) i); + itemStack.writeToNBT(item); + itemsNBT.appendTag(item); + } + } + compound.setTag("Items", itemsNBT); + } + + public void readFromNBT(NBTTagCompound compound) { + NBTTagList items = compound.getTagList("Items", Constants.NBT.TAG_COMPOUND); + + for (int i = 0; i < items.tagCount(); i++) { + NBTTagCompound item = items.getCompoundTagAt(i); + int slot = item.getByte("Slot"); + + if (slot >= 0 && slot < getSizeInventory()) { + setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(item)); + } + } + } +} diff --git a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java index d6c579ce..f17b7916 100644 --- a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java +++ b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java @@ -1,7 +1,6 @@ package magicbees.tileentity; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; @@ -10,10 +9,8 @@ import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.network.Packet; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; @@ -22,19 +19,15 @@ import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.Chunk; -import net.minecraftforge.common.util.Constants; import com.mojang.authlib.GameProfile; import forestry.api.apiculture.DefaultBeeModifier; -import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeGenome; -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.apiculture.IBeekeepingMode; import forestry.api.apiculture.IHiveFrame; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; @@ -46,9 +39,9 @@ import magicbees.api.bees.IMagicApiaryAuraProvider; import magicbees.bees.AuraCharge; import magicbees.bees.BeeManager; +import magicbees.bees.MagicApiaryInventory; import magicbees.main.CommonProxy; import magicbees.main.utils.ChunkCoords; -import magicbees.main.utils.ItemStackUtils; import magicbees.main.utils.net.EventAuraChargeUpdate; import magicbees.main.utils.net.NetworkEventHandler; @@ -470,175 +463,6 @@ public boolean canExtractItem(int i, ItemStack itemStack, int i1) { return inventory.canExtractItem(i, itemStack, i1); } - private static class MagicApiaryInventory implements IApiaryInventory { - - public static final int SLOT_QUEEN = 0; - public static final int SLOT_DRONE = 1; - public static final int SLOT_FRAME_START = 9; - public static final int SLOT_FRAME_COUNT = 3; - public static final int SLOT_PRODUCTS_START = 2; - public static final int SLOT_PRODUCTS_COUNT = 7; - - private final TileEntityMagicApiary magicApiary; - private final ItemStack[] items; - - public MagicApiaryInventory(TileEntityMagicApiary magicApiary) { - this.magicApiary = magicApiary; - this.items = new ItemStack[12]; - } - - @Override - public ItemStack getQueen() { - return magicApiary.getStackInSlot(SLOT_QUEEN); - } - - @Override - public ItemStack getDrone() { - return magicApiary.getStackInSlot(SLOT_DRONE); - } - - @Override - public void setQueen(ItemStack itemstack) { - magicApiary.setInventorySlotContents(SLOT_QUEEN, itemstack); - } - - @Override - public void setDrone(ItemStack itemstack) { - magicApiary.setInventorySlotContents(SLOT_DRONE, itemstack); - } - - @Override - public boolean addProduct(ItemStack product, boolean all) { - int countAdded = ItemStackUtils - .addItemToInventory(magicApiary, product, SLOT_PRODUCTS_START, SLOT_PRODUCTS_COUNT); - - if (all) { - return countAdded == product.stackSize; - } else { - return countAdded > 0; - } - } - - public int getSizeInventory() { - return items.length; - } - - public ItemStack getStackInSlot(int i) { - return items[i]; - } - - public void setInventorySlotContents(int i, ItemStack itemStack) { - items[i] = itemStack; - - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - public int[] getAccessibleSlotsFromSide(int side) { - if (side == 0 || side == 1) { - return new int[] { SLOT_QUEEN, SLOT_DRONE }; - } else { - int[] slots = new int[SLOT_PRODUCTS_COUNT]; - for (int i = 0, slot = SLOT_PRODUCTS_START; i < SLOT_PRODUCTS_COUNT; ++i, ++slot) { - slots[i] = slot; - } - return slots; - } - } - - public boolean canInsertItem(int slot, ItemStack itemStack, int side) { - if (slot == SLOT_QUEEN && BeeManager.beeRoot.isMember(itemStack) - && !BeeManager.beeRoot.isDrone(itemStack)) { - return true; - } else if (slot == SLOT_DRONE && BeeManager.beeRoot.isDrone(itemStack)) { - return true; - } - return slot == SLOT_DRONE && BeeManager.beeRoot.isDrone(itemStack); - } - - public boolean canExtractItem(int slot, ItemStack itemStack, int side) { - return slot >= SLOT_FRAME_START && slot <= SLOT_FRAME_START + 2; - } - - public int getInventoryStackLimit() { - return 64; - } - - public Collection getFrames() { - Collection hiveFrames = new ArrayList(SLOT_FRAME_COUNT); - - for (int i = SLOT_FRAME_START; i < SLOT_FRAME_START + SLOT_FRAME_COUNT; i++) { - ItemStack stackInSlot = magicApiary.getStackInSlot(i); - if (stackInSlot == null) { - continue; - } - - Item itemInSlot = stackInSlot.getItem(); - if (itemInSlot instanceof IHiveFrame) { - hiveFrames.add((IHiveFrame) itemInSlot); - } - } - - return hiveFrames; - } - - public void wearOutFrames(IBeeHousing beeHousing, int amount) { - IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(magicApiary.getWorldObj()); - int wear = Math.round(amount * beekeepingMode.getWearModifier()); - - for (int i = MagicApiaryInventory.SLOT_FRAME_START; i - < MagicApiaryInventory.SLOT_FRAME_START + MagicApiaryInventory.SLOT_FRAME_COUNT; i++) { - ItemStack hiveFrameStack = magicApiary.getStackInSlot(i); - if (hiveFrameStack == null) { - continue; - } - - Item hiveFrameItem = hiveFrameStack.getItem(); - if (!(hiveFrameItem instanceof IHiveFrame)) { - continue; - } - - IHiveFrame hiveFrame = (IHiveFrame) hiveFrameItem; - - ItemStack queenStack = magicApiary.getBeeInventory().getQueen(); - IBee queen = BeeManager.beeRoot.getMember(queenStack); - ItemStack usedFrame = hiveFrame.frameUsed(magicApiary, hiveFrameStack, queen, wear); - - magicApiary.setInventorySlotContents(i, usedFrame); - } - } - - public void writeToNBT(NBTTagCompound compound) { - NBTTagList itemsNBT = new NBTTagList(); - - for (int i = 0; i < items.length; i++) { - ItemStack itemStack = items[i]; - - if (itemStack != null) { - NBTTagCompound item = new NBTTagCompound(); - item.setByte("Slot", (byte) i); - itemStack.writeToNBT(item); - itemsNBT.appendTag(item); - } - } - compound.setTag("Items", itemsNBT); - } - - public void readFromNBT(NBTTagCompound compound) { - NBTTagList items = compound.getTagList("Items", Constants.NBT.TAG_COMPOUND); - - for (int i = 0; i < items.tagCount(); i++) { - NBTTagCompound item = items.getCompoundTagAt(i); - int slot = item.getByte("Slot"); - - if (slot >= 0 && slot < getSizeInventory()) { - setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(item)); - } - } - } - } - private static class MagicApiaryBeeModifier extends DefaultBeeModifier { private final TileEntityMagicApiary magicApiary; From bdd76306bb9024bbe05e210adf1fd136d089826a Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Thu, 7 Dec 2023 22:40:49 +0100 Subject: [PATCH 06/66] revert slot move --- src/main/java/magicbees/bees/MagicApiaryInventory.java | 4 ++-- src/main/java/magicbees/client/gui/ContainerMagicApiary.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/magicbees/bees/MagicApiaryInventory.java b/src/main/java/magicbees/bees/MagicApiaryInventory.java index f659b02e..e8cb7c6f 100644 --- a/src/main/java/magicbees/bees/MagicApiaryInventory.java +++ b/src/main/java/magicbees/bees/MagicApiaryInventory.java @@ -21,9 +21,9 @@ public class MagicApiaryInventory implements IApiaryInventory { public static final int SLOT_QUEEN = 0; public static final int SLOT_DRONE = 1; - public static final int SLOT_FRAME_START = 9; + public static final int SLOT_FRAME_START = 2; public static final int SLOT_FRAME_COUNT = 3; - public static final int SLOT_PRODUCTS_START = 2; + public static final int SLOT_PRODUCTS_START = 5; public static final int SLOT_PRODUCTS_COUNT = 7; private final TileEntityMagicApiary magicApiary; diff --git a/src/main/java/magicbees/client/gui/ContainerMagicApiary.java b/src/main/java/magicbees/client/gui/ContainerMagicApiary.java index caae7d33..d95d9abe 100644 --- a/src/main/java/magicbees/client/gui/ContainerMagicApiary.java +++ b/src/main/java/magicbees/client/gui/ContainerMagicApiary.java @@ -19,9 +19,9 @@ public class ContainerMagicApiary extends ContainerMB { // Constants private static final int SLOT_QUEEN = 0; private static final int SLOT_DRONE = 1; - private static final int SLOT_FRAME_START = 9; + private static final int SLOT_FRAME_START = 2; private static final int SLOT_INVENTORY_START = 2; - private static final int SLOT_FRAME_COUNT = 3; + private static final int SLOT_FRAME_COUNT = 5; private static final int SLOT_INVENTORY_COUNT = 7; public ContainerMagicApiary(InventoryPlayer inventoryPlayer, TileEntityMagicApiary thaumicApiary) { From 4c47f772145d5e022bb263af3b78f95d9804ad51 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Thu, 7 Dec 2023 22:48:48 +0100 Subject: [PATCH 07/66] why was that there? --- .../tileentity/TileEntityMagicApiary.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java index f17b7916..36191e89 100644 --- a/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java +++ b/src/main/java/magicbees/tileentity/TileEntityMagicApiary.java @@ -57,20 +57,13 @@ public class TileEntityMagicApiary extends TileEntity implements ISidedInventory private BiomeGenBase biome; private int breedingProgressPercent = 0; - private final IBeekeepingLogic beeLogic; - private final IErrorLogic errorLogic; + private final IBeekeepingLogic beeLogic = BeeManager.beeRoot.createBeekeepingLogic(this); private final IBeeListener beeListener = new ApiaryBeeListener(this); - private final IBeeModifier beeModifier; - private final MagicApiaryInventory inventory; + private final IBeeModifier beeModifier = new MagicApiaryBeeModifier(this); + private final MagicApiaryInventory inventory = new MagicApiaryInventory(this); + private final IErrorLogic errorLogic = ForestryAPI.errorStateRegistry.createErrorLogic(); private final AuraCharges auraCharges = new AuraCharges(); - public TileEntityMagicApiary() { - beeLogic = BeeManager.beeRoot.createBeekeepingLogic(this); - beeModifier = new MagicApiaryBeeModifier(this); - inventory = new MagicApiaryInventory(this); - errorLogic = ForestryAPI.errorStateRegistry.createErrorLogic(); - } - @Override public Iterable getBeeModifiers() { List beeModifiers = new ArrayList(); From e03d4da989ced8b56a7c3278081df011e4c17b44 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Fri, 8 Dec 2023 11:36:56 +0100 Subject: [PATCH 08/66] add basics for phialing cabinet --- .../magicbees/block/BlockPhialingCabinet.java | 73 ++++ .../client/gui/ContainerPhialingCabinet.java | 33 ++ src/main/java/magicbees/main/Config.java | 12 +- .../tileentity/TileEntityPhialingCabinet.java | 314 ++++++++++++++++++ 4 files changed, 431 insertions(+), 1 deletion(-) create mode 100644 src/main/java/magicbees/block/BlockPhialingCabinet.java create mode 100644 src/main/java/magicbees/client/gui/ContainerPhialingCabinet.java create mode 100644 src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java diff --git a/src/main/java/magicbees/block/BlockPhialingCabinet.java b/src/main/java/magicbees/block/BlockPhialingCabinet.java new file mode 100644 index 00000000..43b9b4fe --- /dev/null +++ b/src/main/java/magicbees/block/BlockPhialingCabinet.java @@ -0,0 +1,73 @@ +package magicbees.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import magicbees.main.CommonProxy; +import magicbees.main.utils.TabMagicBees; +import magicbees.tileentity.TileEntityPhialingCabinet; + +public class BlockPhialingCabinet extends BlockContainer { + + @SideOnly(Side.CLIENT) + private IIcon[] icons; + + public BlockPhialingCabinet() { + super(Material.wood); + this.setCreativeTab(TabMagicBees.tabMagicBees); + this.setBlockName("phialingCabinet"); + this.setHardness(1f); + this.setResistance(1.5f); + this.setHarvestLevel("axe", 0); + } + + @Override + public TileEntity createNewTileEntity(World world, int metadata) { + return new TileEntityPhialingCabinet(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, + float par8, float par9) { + boolean activate = false; + + return activate; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if (side == 0) { + return icons[0]; + } else if (side == 1) { + return icons[1]; + } else if (side == 2 || side == 3) { + return icons[2]; + } else { + return icons[3]; + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister register) { + icons = new IIcon[4]; + + icons[0] = register.registerIcon(CommonProxy.DOMAIN + ":stripped_tainted_birch_log_top"); + icons[1] = register.registerIcon(CommonProxy.DOMAIN + ":stripped_tainted_birch_log_top"); + icons[2] = register.registerIcon(CommonProxy.DOMAIN + ":stripped_tainted_birch_log"); + icons[3] = register.registerIcon(CommonProxy.DOMAIN + ":stripped_tainted_birch_wood"); + } +} diff --git a/src/main/java/magicbees/client/gui/ContainerPhialingCabinet.java b/src/main/java/magicbees/client/gui/ContainerPhialingCabinet.java new file mode 100644 index 00000000..23033fd4 --- /dev/null +++ b/src/main/java/magicbees/client/gui/ContainerPhialingCabinet.java @@ -0,0 +1,33 @@ +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); } + */ +// } diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index bbae998c..43d2d40d 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -25,6 +25,7 @@ import magicbees.block.BlockHive; import magicbees.block.BlockMagicApiary; import magicbees.block.BlockManaAuraProvider; +import magicbees.block.BlockPhialingCabinet; import magicbees.block.BlockVisAuraProvider; import magicbees.block.types.HiveType; import magicbees.item.ItemCapsule; @@ -59,6 +60,7 @@ import magicbees.tileentity.TileEntityEffectJar; import magicbees.tileentity.TileEntityMagicApiary; import magicbees.tileentity.TileEntityManaAuraProvider; +import magicbees.tileentity.TileEntityPhialingCabinet; import magicbees.tileentity.TileEntityVisAuraProvider; /** @@ -112,6 +114,7 @@ public class Config { public static BlockEffectJar effectJar; public static BlockHive hive; public static BlockMagicApiary magicApiary; + public static BlockPhialingCabinet phialingCabinet; public static BlockManaAuraProvider manaAuraProvider; public static BlockVisAuraProvider visAuraProvider; @@ -209,6 +212,7 @@ public void setupItems() { voidCapsule = new ItemCapsule(CapsuleType.VOID, capsuleStackSizeMax); setupThaumcraftItems(); + setupPhialingCabinet(); setupBotaniaItems(); setupOreDictionaryEntries(); @@ -493,6 +497,12 @@ private void setupThaumcraftItems() { } } + public void setupPhialingCabinet() { + phialingCabinet = new BlockPhialingCabinet(); + GameRegistry.registerBlock(phialingCabinet, "phialingCabinet"); + GameRegistry.registerTileEntity(TileEntityPhialingCabinet.class, TileEntityPhialingCabinet.tileEntityName); + } + private void setupThaumcraftBackpacks() { try { // 0x8700C6 is a purple-y colour, which is associated with Thaumcraft. @@ -520,7 +530,7 @@ private void setupThaumcraftBackpacks() { private void setupMiscForestryItemHooks() { // Make Aromatic Lumps a swarmer inducer. Chance is /1000. if (aromaticLumpSwarmerRate > 0) { - aromaticLumpSwarmerRate = (aromaticLumpSwarmerRate >= 1000) ? 1000 : aromaticLumpSwarmerRate; + aromaticLumpSwarmerRate = Math.min(aromaticLumpSwarmerRate, 1000); BeeManager.inducers.put(miscResources.getStackForType(ResourceType.AROMATIC_LUMP), aromaticLumpSwarmerRate); } } diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java new file mode 100644 index 00000000..0a758db3 --- /dev/null +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -0,0 +1,314 @@ +package magicbees.tileentity; + +import java.util.Iterator; + +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +import forestry.api.apiculture.IBee; +import forestry.apiculture.IApiary; +import magicbees.bees.BeeManager; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.aspects.IAspectContainer; +import thaumcraft.api.aspects.IEssentiaTransport; + +public class TileEntityPhialingCabinet extends TileEntity implements IAspectContainer, IEssentiaTransport { + + public static final String tileEntityName = "Phialing Cabinet"; + + // added directly from the crucible of souls + public AspectList myAspects = new AspectList(); + public Aspect aspect; + public int amount = 0; + public int maxAmount = 64; + public int increment = 0; + + @Override + public void updateEntity() { + if (increment >= 20) { + try { + TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); + if (IApiary.class.isAssignableFrom(above.getClass())) { + IApiary apiary = (IApiary) above; + ItemStack queenStack = apiary.getApiaryInventory().getQueen(); + + // If the bee isn't a queen then what are we even doing? + if (!BeeManager.beeRoot.isMated(queenStack)) return; + + IBee queen = BeeManager.beeRoot.getMember(queenStack); + String queenUID = queen.getGenome().getPrimary().getUID(); + + Aspect aspect = Aspect.AIR; + + this.myAspects.add(aspect, 1); + } + } catch (Exception ignored) {} + } + increment++; + } + + // added directly from the crucible of souls + @Override + public AspectList getAspects() { + // TODO Auto-generated method stub + return this.myAspects; + } + + // added directly from the crucible of souls + @Override + public void setAspects(AspectList aspects) { + this.myAspects = aspects; + } + + // added directly from the crucible of souls + @Override + public boolean doesContainerAccept(Aspect tag) { + return false; + } + + // added directly from the crucible of souls + @Override + public int addToContainer(Aspect tag, int am) { + if (am == 0) { + return am; + } else { + if (this.amount < this.maxAmount && tag == this.aspect || this.amount == 0) { + this.aspect = tag; + int added = Math.min(am, this.maxAmount - this.amount); + this.amount += added; + am -= added; + } + return am; + } + } + + // added directly from the crucible of souls + @Override + public boolean takeFromContainer(Aspect tag, int amount) { + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + if (this.myAspects.getAmount(tag) >= amount) { + this.myAspects.reduce(tag, amount); + return true; + } else { + return false; + } + } + + // added directly from the crucible of souls + @Override + public boolean takeFromContainer(AspectList ot) { + // TODO Auto-generated method stub + boolean hasIt = true; + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + ot.aspects.keySet().iterator(); + for (Aspect next : ot.aspects.keySet()) { + if (this.myAspects.getAmount(next) < ot.getAmount(next)) hasIt = false; + } + if (hasIt) { + for (Aspect next : ot.aspects.keySet()) { + myAspects.reduce(next, ot.getAmount(next)); + } + return true; + } else { + return false; + } + } + + // added directly from the crucible of souls + @Override + public boolean doesContainerContainAmount(Aspect tag, int amount) { + // TODO Auto-generated method stub + return (this.myAspects.getAmount(tag) > amount); + } + + // added directly from the crucible of souls + @Override + public boolean doesContainerContain(AspectList ot) { + boolean hasIt = true; + ot.aspects.keySet().iterator(); + for (Aspect next : ot.aspects.keySet()) { + if (this.myAspects.getAmount(next) < ot.getAmount(next)) hasIt = false; + } + return hasIt; + } + + // added directly from the crucible of souls + @Override + public int containerContains(Aspect tag) { + return this.myAspects.getAmount(tag); + } + + // added directly from the crucible of souls + @Override + public boolean isConnectable(ForgeDirection face) { + return (face != ForgeDirection.UP); + } + + // added directly from the crucible of souls + @Override + public boolean canInputFrom(ForgeDirection face) { + return false; + } + + // added directly from the crucible of souls + @Override + public boolean canOutputTo(ForgeDirection face) { + return (face != ForgeDirection.UP); + } + + // added directly from the crucible of souls + @Override + public void setSuction(Aspect aspect, int amount) { + // TODO Auto-generated method stub + + } + + // added directly from the crucible of souls + @Override + public int takeEssentia(Aspect aspect, int amount, ForgeDirection arg2) { + if (arg2 != ForgeDirection.UP) { + if (!this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + if (amount > this.myAspects.getAmount(aspect)) { + int total = this.myAspects.getAmount(aspect); + this.myAspects.reduce(aspect, total); + return total; + } else { + this.myAspects.reduce(aspect, amount); + return amount; + } + + } else { + return 0; + } + + } + + // added directly from the crucible of souls + @Override + public int getMinimumSuction() { + // TODO Auto-generated method stub + return 0; + } + + // added directly from the crucible of souls + @Override + public boolean renderExtendedTube() { + // TODO Auto-generated method stub + return false; + // NEW AFTER THIS LINE + } + + // added directly from the crucible of souls + @Override + public Aspect getSuctionType(ForgeDirection face) { + return null; + } + + // added directly from the crucible of souls + @Override + public int getSuctionAmount(ForgeDirection face) { + return 0; + } + + // added directly from the crucible of souls + @Override + public Aspect getEssentiaType(ForgeDirection face) { + return this.myAspects.size() > 0 + ? this.myAspects.getAspects()[this.worldObj.rand.nextInt(this.myAspects.getAspects().length)] + : null; + } + + // added directly from the crucible of souls + @Override + public int getEssentiaAmount(ForgeDirection face) { + return this.myAspects.visSize(); + } + + // added directly from the crucible of souls + @Override + public int addEssentia(Aspect arg0, int arg1, ForgeDirection arg2) { + // TODO Auto-generated method stub + return 0; + } + + /* + * @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { return true; } + * @Override public void openInventory() { } + * @Override public void closeInventory() { } + * @Override public boolean isUseableByPlayer(EntityPlayer entityPlayer) { return entityPlayer.getDistanceSq(xCoord + * + 0.5, yCoord + 0.5, zCoord + 0.5) <= 64; } + * @Override public int getInventoryStackLimit() { return inventory.getInventoryStackLimit(); } + * @Override public boolean hasCustomInventoryName() { return false; } + * @Override public String getInventoryName() { return tileEntityName; } + * @Override public void setInventorySlotContents(int i, ItemStack itemStack) { + * inventory.setInventorySlotContents(i, itemStack); markDirty(); } + * @Override public ItemStack getStackInSlotOnClosing(int i) { ItemStack item = getStackInSlot(i); + * setInventorySlotContents(i, null); return item; } + * @Override public ItemStack decrStackSize(int i, int j) { ItemStack itemStack = getStackInSlot(i); if (itemStack + * != null) { if (itemStack.stackSize <= j) { setInventorySlotContents(i, null); }else{ itemStack = + * itemStack.splitStack(j); markDirty(); } } return itemStack; } + * @Override public ItemStack getStackInSlot(int i) { return inventory.getStackInSlot(i); } + * @Override public int[] getAccessibleSlotsFromSide(int i) { return inventory.getAccessibleSlotsFromSide(i); } + * @Override public boolean canInsertItem(int i, ItemStack itemStack, int i1) { return inventory.canInsertItem(i, + * itemStack, i1); } + * @Override public boolean canExtractItem(int i, ItemStack itemStack, int i1) { return inventory.canExtractItem(i, + * itemStack, i1); } + * @Override public int getSizeInventory() { return inventory.getSizeInventory(); } private static class + * PhialingCabinetInventory implements IPhialingCabinetInventory { public static final int SLOT_ONE = 0; public + * static final int SLOT_TWO = 1; public static final int SLOT_THREE = 2; public static final int SLOT_FOUR = 3; + * public static final int SLOT_FIVE = 4; public static final int SLOT_SIX = 5; public static final int SLOT_SEVEN = + * 6; public static final int SLOT_EIGHT = 7; public static final int SLOT_NINE = 8; private final + * TileEntityPhialingCabinet phialingCabinet; private ItemStack[] items; private + * PhialingCabinetInventory(TileEntityPhialingCabinet phialingCabinet) { this.phialingCabinet = phialingCabinet; + * this.items = new ItemStack[12]; } + * @Override public ItemStack getSlot1() { return phialingCabinet.getStackInSlot(SLOT_ONE); } + * @Override public ItemStack getSlot2() { return phialingCabinet.getStackInSlot(SLOT_TWO); } + * @Override public ItemStack getSlot3() { return phialingCabinet.getStackInSlot(SLOT_THREE); } + * @Override public ItemStack getSlot4() { return phialingCabinet.getStackInSlot(SLOT_FOUR); } + * @Override public ItemStack getSlot5() { return phialingCabinet.getStackInSlot(SLOT_FIVE); } + * @Override public ItemStack getSlot6() { return phialingCabinet.getStackInSlot(SLOT_SIX); } + * @Override public ItemStack getSlot7() { return phialingCabinet.getStackInSlot(SLOT_SEVEN); } + * @Override public ItemStack getSlot8() { return phialingCabinet.getStackInSlot(SLOT_EIGHT); } + * @Override public ItemStack getSlot9() { return phialingCabinet.getStackInSlot(SLOT_NINE); } + * @Override public void setSlot1(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_ONE, + * itemstack); } + * @Override public void setSlot2(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_TWO, + * itemstack); } + * @Override public void setSlot3(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_THREE, + * itemstack); } + * @Override public void setSlot4(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_FOUR, + * itemstack); } + * @Override public void setSlot5(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_FIVE, + * itemstack); } + * @Override public void setSlot6(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_SIX, + * itemstack); } + * @Override public void setSlot7(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_SEVEN, + * itemstack); } + * @Override public void setSlot8(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_EIGHT, + * itemstack); } + * @Override public void setSlot9(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_NINE, + * itemstack); } public int getSizeInventory() { return items.length; } public ItemStack getStackInSlot(int i) { + * return items[i]; } public void setInventorySlotContents(int i, ItemStack itemStack) { items[i] = itemStack; if + * (itemStack != null && itemStack.stackSize > getInventoryStackLimit()){ itemStack.stackSize = + * getInventoryStackLimit(); } } public int[] getAccessibleSlotsFromSide(int side) { if (side == 0 || side == 1) { + * return new int[] { SLOT_ONE, SLOT_TWO }; } else { int[] slots = new int[SLOT_NINE+1]; for (int i = 0, slot = + * SLOT_ONE; i < SLOT_NINE; i++, slot++) { slots[i] = slot; } return slots; } } public boolean canInsertItem(int + * slot, ItemStack itemStack, int side) { return true; } public boolean canExtractItem(int slot, ItemStack + * itemStack, int side) { return true; } public int getInventoryStackLimit() { return 64; } public void + * writeToNBT(NBTTagCompound compound) { NBTTagList itemsNBT = new NBTTagList(); for (int i = 0; i < items.length; + * i++) { ItemStack itemStack = items[i]; if (itemStack != null) { NBTTagCompound item = new NBTTagCompound(); + * item.setByte("Slot", (byte)i); itemStack.writeToNBT(item); itemsNBT.appendTag(item); } } compound.setTag("Items", + * itemsNBT); } public void readFromNBT(NBTTagCompound compound) { NBTTagList items = compound.getTagList("Items", + * Constants.NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = + * items.getCompoundTagAt(i); int slot = item.getByte("Slot"); if (slot >= 0 && slot < getSizeInventory()) { + * setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(item)); } } } } + */ +} From c23401e45cc641cd4358c13b14717fd91216a12d Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Fri, 8 Dec 2023 11:43:11 +0100 Subject: [PATCH 09/66] add tc essentia bee --- src/main/java/magicbees/bees/BeeGenomeManager.java | 9 +++++++++ src/main/java/magicbees/bees/BeeMutation.java | 5 +++++ src/main/java/magicbees/bees/BeeSpecies.java | 4 ++++ src/main/java/magicbees/block/BlockPhialingCabinet.java | 4 ---- .../magicbees/tileentity/TileEntityPhialingCabinet.java | 2 -- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/java/magicbees/bees/BeeGenomeManager.java b/src/main/java/magicbees/bees/BeeGenomeManager.java index 16f27a73..92f2152c 100644 --- a/src/main/java/magicbees/bees/BeeGenomeManager.java +++ b/src/main/java/magicbees/bees/BeeGenomeManager.java @@ -836,6 +836,15 @@ public static IAllele[] getTemplateTCChaos() { return genome; } + public static IAllele[] getTemplateTCEssentia() { + IAllele[] genome = getTemplateTCBase(); + + genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.TC_ESSENTIA.getSpecies(); + genome[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.getBaseAllele("fertilityNormal"); + + return genome; + } + public static IAllele[] getTemplateTCAir() { IAllele[] genome = getTemplateTCBase(); diff --git a/src/main/java/magicbees/bees/BeeMutation.java b/src/main/java/magicbees/bees/BeeMutation.java index 8f114855..cedcd118 100644 --- a/src/main/java/magicbees/bees/BeeMutation.java +++ b/src/main/java/magicbees/bees/BeeMutation.java @@ -488,6 +488,11 @@ public static void setupMutations() { BeeSpecies.SUPERNATURAL.getSpecies(), BeeSpecies.TC_CHAOS.getGenome(), 8).requireResource(ThaumcraftHelper.crystal, ThaumcraftHelper.ShardType.CHAOS.ordinal()); + beeMutationFactory.createMutation( + BeeSpecies.TC_ORDER.getSpecies(), + BeeSpecies.TC_CHAOS.getSpecies(), + BeeSpecies.TC_ESSENTIA.getGenome(), + 8).requireResource(ThaumcraftHelper.crystal, ThaumcraftHelper.ShardType.CHAOS.ordinal()); beeMutationFactory.createMutation( BeeSpecies.ETHEREAL.getSpecies(), diff --git a/src/main/java/magicbees/bees/BeeSpecies.java b/src/main/java/magicbees/bees/BeeSpecies.java index eb642a7d..83815496 100644 --- a/src/main/java/magicbees/bees/BeeSpecies.java +++ b/src/main/java/magicbees/bees/BeeSpecies.java @@ -186,6 +186,8 @@ public enum BeeSpecies { EnumTemperature.NORMAL, EnumHumidity.NORMAL, true, true), TC_CHAOS("TCChaos", "tenebrarum", BeeClassification.THAUMIC, 0xCCCCCC, BodyColours.THAUMCRAFT_SHARD, EnumTemperature.NORMAL, EnumHumidity.NORMAL, true, false), + TC_ESSENTIA("TCEssentia", "defaultium essentia apis", BeeClassification.THAUMIC, 0xCCCCCC, + BodyColours.THAUMCRAFT_SHARD, EnumTemperature.NORMAL, EnumHumidity.NORMAL, true, false), TC_VIS("TCVis", "arcanus saecula", BeeClassification.THAUMIC, 0x004c99, BodyColours.THAUMCRAFT_NODE, EnumTemperature.NORMAL, EnumHumidity.NORMAL, false, false), @@ -398,6 +400,7 @@ public static void setupBeeSpecies() { TC_EARTH.registerGenomeTemplate(BeeGenomeManager.getTemplateTCEarth()); TC_ORDER.registerGenomeTemplate(BeeGenomeManager.getTemplateTCOrder()); TC_CHAOS.registerGenomeTemplate(BeeGenomeManager.getTemplateTCChaos()); + TC_ESSENTIA.registerGenomeTemplate(BeeGenomeManager.getTemplateTCEssentia()); TC_VIS.registerGenomeTemplate(BeeGenomeManager.getTemplateTCVis()); TC_REJUVENATING.registerGenomeTemplate(BeeGenomeManager.getTemplateTCRejuvinating()); TC_EMPOWERING.registerGenomeTemplate(BeeGenomeManager.getTemplateTCEmpowering()); @@ -456,6 +459,7 @@ public static void setupBeeSpecies() { BeeProductHelper.initThaumcraftProducts(); if (!ThaumcraftHelper.isActive()) { TC_CHAOS.setInactive(); + TC_ESSENTIA.setInactive(); TC_AIR.setInactive(); TC_FIRE.setInactive(); TC_WATER.setInactive(); diff --git a/src/main/java/magicbees/block/BlockPhialingCabinet.java b/src/main/java/magicbees/block/BlockPhialingCabinet.java index 43b9b4fe..694b54c8 100644 --- a/src/main/java/magicbees/block/BlockPhialingCabinet.java +++ b/src/main/java/magicbees/block/BlockPhialingCabinet.java @@ -1,13 +1,9 @@ package magicbees.block; -import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 0a758db3..17673ad1 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -1,7 +1,5 @@ package magicbees.tileentity; -import java.util.Iterator; - import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; From 07a987151ec27a275a7286ec6e48b2cd391ca1f2 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Fri, 8 Dec 2023 15:05:59 +0100 Subject: [PATCH 10/66] differentiate essentia based on first inserted --- .../tileentity/TileEntityPhialingCabinet.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 17673ad1..c193b9a8 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -1,5 +1,6 @@ package magicbees.tileentity; +import magicbees.bees.BeeSpecies; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -12,6 +13,8 @@ import thaumcraft.api.aspects.IAspectContainer; import thaumcraft.api.aspects.IEssentiaTransport; +import java.util.Objects; + public class TileEntityPhialingCabinet extends TileEntity implements IAspectContainer, IEssentiaTransport { public static final String tileEntityName = "Phialing Cabinet"; @@ -25,6 +28,9 @@ public class TileEntityPhialingCabinet extends TileEntity implements IAspectCont @Override public void updateEntity() { + // If there's no stored aspect we shouldn't even check for the above block. + if (aspect == null) return; + if (increment >= 20) { try { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); @@ -38,9 +44,7 @@ public void updateEntity() { IBee queen = BeeManager.beeRoot.getMember(queenStack); String queenUID = queen.getGenome().getPrimary().getUID(); - Aspect aspect = Aspect.AIR; - - this.myAspects.add(aspect, 1); + if (Objects.equals(queenUID, BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) this.myAspects.add(aspect, 1); } } catch (Exception ignored) {} } From 0578441707bb8e02f148b4a77836a0a4fe09999e Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Fri, 8 Dec 2023 15:09:44 +0100 Subject: [PATCH 11/66] check for beehousing instead of apiary --- .../magicbees/tileentity/TileEntityPhialingCabinet.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index c193b9a8..5da7a402 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -1,5 +1,6 @@ package magicbees.tileentity; +import forestry.api.apiculture.IBeeHousing; import magicbees.bees.BeeSpecies; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -34,9 +35,9 @@ public void updateEntity() { if (increment >= 20) { try { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); - if (IApiary.class.isAssignableFrom(above.getClass())) { - IApiary apiary = (IApiary) above; - ItemStack queenStack = apiary.getApiaryInventory().getQueen(); + if (IBeeHousing.class.isAssignableFrom(above.getClass())) { + IBeeHousing heeHousing = (IBeeHousing) above; + ItemStack queenStack = heeHousing.getBeeInventory().getQueen(); // If the bee isn't a queen then what are we even doing? if (!BeeManager.beeRoot.isMated(queenStack)) return; From d3ad57a62210869caa6ae2224f3083f08c6b7bdd Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Fri, 8 Dec 2023 23:15:21 +0100 Subject: [PATCH 12/66] sa --- .../tileentity/TileEntityPhialingCabinet.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 5da7a402..8e36ba79 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -1,21 +1,20 @@ package magicbees.tileentity; -import forestry.api.apiculture.IBeeHousing; -import magicbees.bees.BeeSpecies; +import java.util.Objects; + import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import forestry.api.apiculture.IBee; -import forestry.apiculture.IApiary; +import forestry.api.apiculture.IBeeHousing; import magicbees.bees.BeeManager; +import magicbees.bees.BeeSpecies; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; import thaumcraft.api.aspects.IAspectContainer; import thaumcraft.api.aspects.IEssentiaTransport; -import java.util.Objects; - public class TileEntityPhialingCabinet extends TileEntity implements IAspectContainer, IEssentiaTransport { public static final String tileEntityName = "Phialing Cabinet"; @@ -45,7 +44,8 @@ public void updateEntity() { IBee queen = BeeManager.beeRoot.getMember(queenStack); String queenUID = queen.getGenome().getPrimary().getUID(); - if (Objects.equals(queenUID, BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) this.myAspects.add(aspect, 1); + if (Objects.equals(queenUID, BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) + this.myAspects.add(aspect, 1); } } catch (Exception ignored) {} } From 7416d21f6fcb73032eb2e58f0b7482ce65b2c7d5 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Fri, 8 Dec 2023 23:22:19 +0100 Subject: [PATCH 13/66] use config for phialing cabinet values --- src/main/java/magicbees/main/Config.java | 20 +++++++++++++++++++ .../tileentity/TileEntityPhialingCabinet.java | 10 +++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 43d2d40d..72d00a56 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -91,6 +91,8 @@ public class Config { public static double thaumcraftSaplingDroprate; public static int aromaticLumpSwarmerRate; public static int thaumcraftNodeMaxSize; + public static int thaumcraftEssentiaBeePhialingCabinetTimeBetween; + public static int thaumcraftEssentiaBeePhialingCabinetAmount; public static boolean arsMagicaActive; public static boolean baublesActive; @@ -336,6 +338,24 @@ private void doGeneralConfigs() { 32767); thaumcraftNodeMaxSize = p.getInt(256); + p = configuration.get( + CATEGORY_GENERAL, + "thaumcraftEssentiaBeePhialingCabinetTimeBetween", + 10, + "The time in ticks between Phialing Cabinet essentia generation", + 1, + 32767); + thaumcraftEssentiaBeePhialingCabinetTimeBetween = p.getInt(10); + + p = configuration.get( + CATEGORY_GENERAL, + "thaumcraftEssentiaBeePhialingCabinetAmount", + 2, + "The amount that the Phialing Cabinet generates on every round", + 1, + 32767); + thaumcraftEssentiaBeePhialingCabinetAmount = p.getInt(2); + p = configuration.get(CATEGORY_GENERAL, "moonDialShowText", false); p.comment = "set to true to show the current moon phase in mouse-over text."; moonDialShowsPhaseInText = p.getBoolean(false); diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 8e36ba79..173408ed 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -2,6 +2,7 @@ import java.util.Objects; +import magicbees.main.Config; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -31,7 +32,7 @@ public void updateEntity() { // If there's no stored aspect we shouldn't even check for the above block. if (aspect == null) return; - if (increment >= 20) { + if (increment % Config.thaumcraftEssentiaBeePhialingCabinetTimeBetween == 0) { try { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); if (IBeeHousing.class.isAssignableFrom(above.getClass())) { @@ -44,11 +45,14 @@ public void updateEntity() { IBee queen = BeeManager.beeRoot.getMember(queenStack); String queenUID = queen.getGenome().getPrimary().getUID(); - if (Objects.equals(queenUID, BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) - this.myAspects.add(aspect, 1); + if (Objects.equals(queenUID, BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { + this.myAspects.add(aspect, Config.thaumcraftEssentiaBeePhialingCabinetAmount); + increment = 0; + } } } catch (Exception ignored) {} } + increment++; } From 02c7fc7613a137197804d27e584972a0d73fb57f Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Fri, 8 Dec 2023 23:23:30 +0100 Subject: [PATCH 14/66] sa --- src/main/java/magicbees/main/Config.java | 24 +++++++++---------- .../tileentity/TileEntityPhialingCabinet.java | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 72d00a56..28e10aef 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -339,21 +339,21 @@ private void doGeneralConfigs() { thaumcraftNodeMaxSize = p.getInt(256); p = configuration.get( - CATEGORY_GENERAL, - "thaumcraftEssentiaBeePhialingCabinetTimeBetween", - 10, - "The time in ticks between Phialing Cabinet essentia generation", - 1, - 32767); + CATEGORY_GENERAL, + "thaumcraftEssentiaBeePhialingCabinetTimeBetween", + 10, + "The time in ticks between Phialing Cabinet essentia generation", + 1, + 32767); thaumcraftEssentiaBeePhialingCabinetTimeBetween = p.getInt(10); p = configuration.get( - CATEGORY_GENERAL, - "thaumcraftEssentiaBeePhialingCabinetAmount", - 2, - "The amount that the Phialing Cabinet generates on every round", - 1, - 32767); + CATEGORY_GENERAL, + "thaumcraftEssentiaBeePhialingCabinetAmount", + 2, + "The amount that the Phialing Cabinet generates on every round", + 1, + 32767); thaumcraftEssentiaBeePhialingCabinetAmount = p.getInt(2); p = configuration.get(CATEGORY_GENERAL, "moonDialShowText", false); diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 173408ed..9f1bfdaa 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -2,7 +2,6 @@ import java.util.Objects; -import magicbees.main.Config; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; @@ -11,6 +10,7 @@ import forestry.api.apiculture.IBeeHousing; import magicbees.bees.BeeManager; import magicbees.bees.BeeSpecies; +import magicbees.main.Config; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; import thaumcraft.api.aspects.IAspectContainer; From 29e72ed7fc074e1b5f789a0a869286adf50fbf2f Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Fri, 8 Dec 2023 23:31:35 +0100 Subject: [PATCH 15/66] make phialing cabinet capacity configurable --- src/main/java/magicbees/main/Config.java | 10 +- .../tileentity/TileEntityPhialingCabinet.java | 94 ++----------------- 2 files changed, 18 insertions(+), 86 deletions(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 28e10aef..d73633f1 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -93,6 +93,7 @@ public class Config { public static int thaumcraftNodeMaxSize; public static int thaumcraftEssentiaBeePhialingCabinetTimeBetween; public static int thaumcraftEssentiaBeePhialingCabinetAmount; + public static int thaumcraftEssentiaBeePhialingCabinetCapacity; public static boolean arsMagicaActive; public static boolean baublesActive; @@ -346,7 +347,6 @@ private void doGeneralConfigs() { 1, 32767); thaumcraftEssentiaBeePhialingCabinetTimeBetween = p.getInt(10); - p = configuration.get( CATEGORY_GENERAL, "thaumcraftEssentiaBeePhialingCabinetAmount", @@ -355,6 +355,14 @@ private void doGeneralConfigs() { 1, 32767); thaumcraftEssentiaBeePhialingCabinetAmount = p.getInt(2); + p = configuration.get( + CATEGORY_GENERAL, + "thaumcraftEssentiaBeePhialingCabinetCapacity", + 64, + "The amount that the Phialing Cabinet can hold of each aspect", + 1, + 32767); + thaumcraftEssentiaBeePhialingCabinetCapacity = p.getInt(64); p = configuration.get(CATEGORY_GENERAL, "moonDialShowText", false); p.comment = "set to true to show the current moon phase in mouse-over text."; diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 9f1bfdaa..38cf8065 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -24,8 +24,9 @@ public class TileEntityPhialingCabinet extends TileEntity implements IAspectCont public AspectList myAspects = new AspectList(); public Aspect aspect; public int amount = 0; - public int maxAmount = 64; - public int increment = 0; + public int maxAmount = Config.thaumcraftEssentiaBeePhialingCabinetCapacity; + + private int increment = 0; @Override public void updateEntity() { @@ -46,7 +47,7 @@ public void updateEntity() { String queenUID = queen.getGenome().getPrimary().getUID(); if (Objects.equals(queenUID, BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { - this.myAspects.add(aspect, Config.thaumcraftEssentiaBeePhialingCabinetAmount); + addToContainer(aspect, Config.thaumcraftEssentiaBeePhialingCabinetAmount); increment = 0; } } @@ -78,17 +79,15 @@ public boolean doesContainerAccept(Aspect tag) { // added directly from the crucible of souls @Override public int addToContainer(Aspect tag, int am) { - if (am == 0) { - return am; - } else { + if (am != 0) { if (this.amount < this.maxAmount && tag == this.aspect || this.amount == 0) { this.aspect = tag; int added = Math.min(am, this.maxAmount - this.amount); this.amount += added; am -= added; } - return am; } + return am; } // added directly from the crucible of souls @@ -113,7 +112,6 @@ public boolean takeFromContainer(AspectList ot) { if (!this.worldObj.isRemote) { this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } - ot.aspects.keySet().iterator(); for (Aspect next : ot.aspects.keySet()) { if (this.myAspects.getAmount(next) < ot.getAmount(next)) hasIt = false; } @@ -138,7 +136,6 @@ public boolean doesContainerContainAmount(Aspect tag, int amount) { @Override public boolean doesContainerContain(AspectList ot) { boolean hasIt = true; - ot.aspects.keySet().iterator(); for (Aspect next : ot.aspects.keySet()) { if (this.myAspects.getAmount(next) < ot.getAmount(next)) hasIt = false; } @@ -178,8 +175,8 @@ public void setSuction(Aspect aspect, int amount) { // added directly from the crucible of souls @Override - public int takeEssentia(Aspect aspect, int amount, ForgeDirection arg2) { - if (arg2 != ForgeDirection.UP) { + public int takeEssentia(Aspect aspect, int amount, ForgeDirection face) { + if (face != ForgeDirection.UP) { if (!this.worldObj.isRemote) { this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } @@ -241,81 +238,8 @@ public int getEssentiaAmount(ForgeDirection face) { // added directly from the crucible of souls @Override - public int addEssentia(Aspect arg0, int arg1, ForgeDirection arg2) { + public int addEssentia(Aspect aspect, int amount, ForgeDirection arg2) { // TODO Auto-generated method stub return 0; } - - /* - * @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { return true; } - * @Override public void openInventory() { } - * @Override public void closeInventory() { } - * @Override public boolean isUseableByPlayer(EntityPlayer entityPlayer) { return entityPlayer.getDistanceSq(xCoord - * + 0.5, yCoord + 0.5, zCoord + 0.5) <= 64; } - * @Override public int getInventoryStackLimit() { return inventory.getInventoryStackLimit(); } - * @Override public boolean hasCustomInventoryName() { return false; } - * @Override public String getInventoryName() { return tileEntityName; } - * @Override public void setInventorySlotContents(int i, ItemStack itemStack) { - * inventory.setInventorySlotContents(i, itemStack); markDirty(); } - * @Override public ItemStack getStackInSlotOnClosing(int i) { ItemStack item = getStackInSlot(i); - * setInventorySlotContents(i, null); return item; } - * @Override public ItemStack decrStackSize(int i, int j) { ItemStack itemStack = getStackInSlot(i); if (itemStack - * != null) { if (itemStack.stackSize <= j) { setInventorySlotContents(i, null); }else{ itemStack = - * itemStack.splitStack(j); markDirty(); } } return itemStack; } - * @Override public ItemStack getStackInSlot(int i) { return inventory.getStackInSlot(i); } - * @Override public int[] getAccessibleSlotsFromSide(int i) { return inventory.getAccessibleSlotsFromSide(i); } - * @Override public boolean canInsertItem(int i, ItemStack itemStack, int i1) { return inventory.canInsertItem(i, - * itemStack, i1); } - * @Override public boolean canExtractItem(int i, ItemStack itemStack, int i1) { return inventory.canExtractItem(i, - * itemStack, i1); } - * @Override public int getSizeInventory() { return inventory.getSizeInventory(); } private static class - * PhialingCabinetInventory implements IPhialingCabinetInventory { public static final int SLOT_ONE = 0; public - * static final int SLOT_TWO = 1; public static final int SLOT_THREE = 2; public static final int SLOT_FOUR = 3; - * public static final int SLOT_FIVE = 4; public static final int SLOT_SIX = 5; public static final int SLOT_SEVEN = - * 6; public static final int SLOT_EIGHT = 7; public static final int SLOT_NINE = 8; private final - * TileEntityPhialingCabinet phialingCabinet; private ItemStack[] items; private - * PhialingCabinetInventory(TileEntityPhialingCabinet phialingCabinet) { this.phialingCabinet = phialingCabinet; - * this.items = new ItemStack[12]; } - * @Override public ItemStack getSlot1() { return phialingCabinet.getStackInSlot(SLOT_ONE); } - * @Override public ItemStack getSlot2() { return phialingCabinet.getStackInSlot(SLOT_TWO); } - * @Override public ItemStack getSlot3() { return phialingCabinet.getStackInSlot(SLOT_THREE); } - * @Override public ItemStack getSlot4() { return phialingCabinet.getStackInSlot(SLOT_FOUR); } - * @Override public ItemStack getSlot5() { return phialingCabinet.getStackInSlot(SLOT_FIVE); } - * @Override public ItemStack getSlot6() { return phialingCabinet.getStackInSlot(SLOT_SIX); } - * @Override public ItemStack getSlot7() { return phialingCabinet.getStackInSlot(SLOT_SEVEN); } - * @Override public ItemStack getSlot8() { return phialingCabinet.getStackInSlot(SLOT_EIGHT); } - * @Override public ItemStack getSlot9() { return phialingCabinet.getStackInSlot(SLOT_NINE); } - * @Override public void setSlot1(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_ONE, - * itemstack); } - * @Override public void setSlot2(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_TWO, - * itemstack); } - * @Override public void setSlot3(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_THREE, - * itemstack); } - * @Override public void setSlot4(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_FOUR, - * itemstack); } - * @Override public void setSlot5(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_FIVE, - * itemstack); } - * @Override public void setSlot6(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_SIX, - * itemstack); } - * @Override public void setSlot7(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_SEVEN, - * itemstack); } - * @Override public void setSlot8(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_EIGHT, - * itemstack); } - * @Override public void setSlot9(ItemStack itemstack) { phialingCabinet.setInventorySlotContents(SLOT_NINE, - * itemstack); } public int getSizeInventory() { return items.length; } public ItemStack getStackInSlot(int i) { - * return items[i]; } public void setInventorySlotContents(int i, ItemStack itemStack) { items[i] = itemStack; if - * (itemStack != null && itemStack.stackSize > getInventoryStackLimit()){ itemStack.stackSize = - * getInventoryStackLimit(); } } public int[] getAccessibleSlotsFromSide(int side) { if (side == 0 || side == 1) { - * return new int[] { SLOT_ONE, SLOT_TWO }; } else { int[] slots = new int[SLOT_NINE+1]; for (int i = 0, slot = - * SLOT_ONE; i < SLOT_NINE; i++, slot++) { slots[i] = slot; } return slots; } } public boolean canInsertItem(int - * slot, ItemStack itemStack, int side) { return true; } public boolean canExtractItem(int slot, ItemStack - * itemStack, int side) { return true; } public int getInventoryStackLimit() { return 64; } public void - * writeToNBT(NBTTagCompound compound) { NBTTagList itemsNBT = new NBTTagList(); for (int i = 0; i < items.length; - * i++) { ItemStack itemStack = items[i]; if (itemStack != null) { NBTTagCompound item = new NBTTagCompound(); - * item.setByte("Slot", (byte)i); itemStack.writeToNBT(item); itemsNBT.appendTag(item); } } compound.setTag("Items", - * itemsNBT); } public void readFromNBT(NBTTagCompound compound) { NBTTagList items = compound.getTagList("Items", - * Constants.NBT.TAG_COMPOUND); for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = - * items.getCompoundTagAt(i); int slot = item.getByte("Slot"); if (slot >= 0 && slot < getSizeInventory()) { - * setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(item)); } } } } - */ } From 6529e7245d0990ef097b3ddcc972c2ea24d7cb01 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 00:53:21 +0100 Subject: [PATCH 16/66] correctly check for the species --- src/main/java/magicbees/bees/BeeSpecies.java | 2 +- src/main/java/magicbees/main/Config.java | 11 ++++------- .../tileentity/TileEntityPhialingCabinet.java | 19 ++++++++++--------- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/main/java/magicbees/bees/BeeSpecies.java b/src/main/java/magicbees/bees/BeeSpecies.java index 83815496..60716f75 100644 --- a/src/main/java/magicbees/bees/BeeSpecies.java +++ b/src/main/java/magicbees/bees/BeeSpecies.java @@ -459,12 +459,12 @@ public static void setupBeeSpecies() { BeeProductHelper.initThaumcraftProducts(); if (!ThaumcraftHelper.isActive()) { TC_CHAOS.setInactive(); - TC_ESSENTIA.setInactive(); TC_AIR.setInactive(); TC_FIRE.setInactive(); TC_WATER.setInactive(); TC_EARTH.setInactive(); TC_ORDER.setInactive(); + TC_ESSENTIA.setInactive(); TC_VIS.setInactive(); TC_REJUVENATING.setInactive(); diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index d73633f1..6ffa8ff6 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -215,7 +215,6 @@ public void setupItems() { voidCapsule = new ItemCapsule(CapsuleType.VOID, capsuleStackSizeMax); setupThaumcraftItems(); - setupPhialingCabinet(); setupBotaniaItems(); setupOreDictionaryEntries(); @@ -503,6 +502,10 @@ private void setupThaumcraftBlocks() { visAuraProvider = new BlockVisAuraProvider(); GameRegistry.registerBlock(visAuraProvider, "visAuraProvider"); GameRegistry.registerTileEntity(TileEntityVisAuraProvider.class, "visAuraProvider"); + + phialingCabinet = new BlockPhialingCabinet(); + GameRegistry.registerBlock(phialingCabinet, "phialingCabinet"); + GameRegistry.registerTileEntity(TileEntityPhialingCabinet.class, TileEntityPhialingCabinet.tileEntityName); } } @@ -525,12 +528,6 @@ private void setupThaumcraftItems() { } } - public void setupPhialingCabinet() { - phialingCabinet = new BlockPhialingCabinet(); - GameRegistry.registerBlock(phialingCabinet, "phialingCabinet"); - GameRegistry.registerTileEntity(TileEntityPhialingCabinet.class, TileEntityPhialingCabinet.tileEntityName); - } - private void setupThaumcraftBackpacks() { try { // 0x8700C6 is a purple-y colour, which is associated with Thaumcraft. diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 38cf8065..8977a084 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -6,9 +6,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -import forestry.api.apiculture.IBee; +import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBeeHousing; -import magicbees.bees.BeeManager; +import forestry.apiculture.genetics.BeeGenome; import magicbees.bees.BeeSpecies; import magicbees.main.Config; import thaumcraft.api.aspects.Aspect; @@ -37,16 +37,17 @@ public void updateEntity() { try { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); if (IBeeHousing.class.isAssignableFrom(above.getClass())) { - IBeeHousing heeHousing = (IBeeHousing) above; - ItemStack queenStack = heeHousing.getBeeInventory().getQueen(); + IBeeHousing beeHousing = (IBeeHousing) above; + ItemStack queenStack = beeHousing.getBeeInventory().getQueen(); - // If the bee isn't a queen then what are we even doing? - if (!BeeManager.beeRoot.isMated(queenStack)) return; + // 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; - IBee queen = BeeManager.beeRoot.getMember(queenStack); - String queenUID = queen.getGenome().getPrimary().getUID(); + IAlleleBeeSpecies queenSpecies = BeeGenome.getSpecies(queenStack); + if (queenSpecies == null) return; - if (Objects.equals(queenUID, BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { + if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { addToContainer(aspect, Config.thaumcraftEssentiaBeePhialingCabinetAmount); increment = 0; } From c79503d669d7af1ac5087749c591813255d13584 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 01:45:11 +0100 Subject: [PATCH 17/66] remove stubs --- .../tileentity/TileEntityPhialingCabinet.java | 91 ++++++------------- 1 file changed, 30 insertions(+), 61 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 8977a084..85bd963f 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -20,11 +20,11 @@ public class TileEntityPhialingCabinet extends TileEntity implements IAspectCont public static final String tileEntityName = "Phialing Cabinet"; - // added directly from the crucible of souls - public AspectList myAspects = new AspectList(); public Aspect aspect; + public AspectList essentia = new AspectList(); + public int amount = 0; - public int maxAmount = Config.thaumcraftEssentiaBeePhialingCabinetCapacity; + public final int maxAmount = Config.thaumcraftEssentiaBeePhialingCabinetCapacity; private int increment = 0; @@ -58,26 +58,21 @@ public void updateEntity() { increment++; } - // added directly from the crucible of souls @Override public AspectList getAspects() { - // TODO Auto-generated method stub - return this.myAspects; + return this.essentia; } - // added directly from the crucible of souls @Override public void setAspects(AspectList aspects) { - this.myAspects = aspects; + this.essentia = aspects; } - // added directly from the crucible of souls @Override public boolean doesContainerAccept(Aspect tag) { return false; } - // added directly from the crucible of souls @Override public int addToContainer(Aspect tag, int am) { if (am != 0) { @@ -91,21 +86,19 @@ public int addToContainer(Aspect tag, int am) { return am; } - // added directly from the crucible of souls @Override public boolean takeFromContainer(Aspect tag, int amount) { if (!this.worldObj.isRemote) { this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } - if (this.myAspects.getAmount(tag) >= amount) { - this.myAspects.reduce(tag, amount); + if (this.essentia.getAmount(tag) >= amount) { + this.essentia.reduce(tag, amount); return true; } else { return false; } } - // added directly from the crucible of souls @Override public boolean takeFromContainer(AspectList ot) { // TODO Auto-generated method stub @@ -114,11 +107,11 @@ public boolean takeFromContainer(AspectList ot) { this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } for (Aspect next : ot.aspects.keySet()) { - if (this.myAspects.getAmount(next) < ot.getAmount(next)) hasIt = false; + if (this.essentia.getAmount(next) < ot.getAmount(next)) hasIt = false; } if (hasIt) { for (Aspect next : ot.aspects.keySet()) { - myAspects.reduce(next, ot.getAmount(next)); + essentia.reduce(next, ot.getAmount(next)); } return true; } else { @@ -126,121 +119,97 @@ public boolean takeFromContainer(AspectList ot) { } } - // added directly from the crucible of souls @Override public boolean doesContainerContainAmount(Aspect tag, int amount) { - // TODO Auto-generated method stub - return (this.myAspects.getAmount(tag) > amount); + return this.essentia.getAmount(tag) >= amount; } - // added directly from the crucible of souls @Override public boolean doesContainerContain(AspectList ot) { boolean hasIt = true; for (Aspect next : ot.aspects.keySet()) { - if (this.myAspects.getAmount(next) < ot.getAmount(next)) hasIt = false; + if (this.essentia.getAmount(next) < ot.getAmount(next)) hasIt = false; } return hasIt; } - // added directly from the crucible of souls @Override public int containerContains(Aspect tag) { - return this.myAspects.getAmount(tag); + return this.essentia.getAmount(tag); } - // added directly from the crucible of souls @Override public boolean isConnectable(ForgeDirection face) { return (face != ForgeDirection.UP); } - // added directly from the crucible of souls @Override public boolean canInputFrom(ForgeDirection face) { return false; } - // added directly from the crucible of souls @Override public boolean canOutputTo(ForgeDirection face) { return (face != ForgeDirection.UP); } - // added directly from the crucible of souls - @Override - public void setSuction(Aspect aspect, int amount) { - // TODO Auto-generated method stub - - } - - // added directly from the crucible of souls @Override public int takeEssentia(Aspect aspect, int amount, ForgeDirection face) { if (face != ForgeDirection.UP) { if (!this.worldObj.isRemote) { this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } - if (amount > this.myAspects.getAmount(aspect)) { - int total = this.myAspects.getAmount(aspect); - this.myAspects.reduce(aspect, total); + if (amount > this.essentia.getAmount(aspect)) { + int total = this.essentia.getAmount(aspect); + this.essentia.reduce(aspect, total); return total; } else { - this.myAspects.reduce(aspect, amount); + this.essentia.reduce(aspect, amount); return amount; } } else { return 0; } - } - // added directly from the crucible of souls + @Override + public void setSuction(Aspect aspect, int amount) {} + @Override public int getMinimumSuction() { - // TODO Auto-generated method stub - return 0; + return -1; + } + + @Override + public int getSuctionAmount(ForgeDirection face) { + return -1; } - // added directly from the crucible of souls @Override public boolean renderExtendedTube() { - // TODO Auto-generated method stub return false; - // NEW AFTER THIS LINE } - // added directly from the crucible of souls @Override public Aspect getSuctionType(ForgeDirection face) { return null; } - // added directly from the crucible of souls - @Override - public int getSuctionAmount(ForgeDirection face) { - return 0; - } - - // added directly from the crucible of souls @Override public Aspect getEssentiaType(ForgeDirection face) { - return this.myAspects.size() > 0 - ? this.myAspects.getAspects()[this.worldObj.rand.nextInt(this.myAspects.getAspects().length)] + return this.essentia.size() > 0 + ? this.essentia.getAspects()[this.worldObj.rand.nextInt(this.essentia.getAspects().length)] : null; } - // added directly from the crucible of souls @Override public int getEssentiaAmount(ForgeDirection face) { - return this.myAspects.visSize(); + return this.essentia.visSize(); } - // added directly from the crucible of souls @Override - public int addEssentia(Aspect aspect, int amount, ForgeDirection arg2) { - // TODO Auto-generated method stub - return 0; + public int addEssentia(Aspect aspect, int amount, ForgeDirection face) { + return this.canInputFrom(face) ? amount - this.addToContainer(aspect, amount) : 0; } } From e7e5292526734a75c4cd337cc1ceaf964df878ec Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 08:57:32 +0100 Subject: [PATCH 18/66] read and write nbt --- .../client/gui/ContainerPhialingCabinet.java | 33 ------------------- .../tileentity/TileEntityPhialingCabinet.java | 33 ++++++++++++++++--- 2 files changed, 28 insertions(+), 38 deletions(-) delete mode 100644 src/main/java/magicbees/client/gui/ContainerPhialingCabinet.java diff --git a/src/main/java/magicbees/client/gui/ContainerPhialingCabinet.java b/src/main/java/magicbees/client/gui/ContainerPhialingCabinet.java deleted file mode 100644 index 23033fd4..00000000 --- a/src/main/java/magicbees/client/gui/ContainerPhialingCabinet.java +++ /dev/null @@ -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); } - */ -// } diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 85bd963f..4c2e6bfb 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -2,7 +2,9 @@ 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 void updateEntity() { 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 boolean doesContainerAccept(Aspect tag) { @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 int getEssentiaAmount(ForgeDirection face) { 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"); + } } From f366dcdfc6fef7979c3ee7440d2c70011e37790b Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 18:26:17 +0100 Subject: [PATCH 19/66] finish up cabinet logic --- .../magicbees/block/BlockPhialingCabinet.java | 35 +++++++++++++++++-- .../tileentity/TileEntityPhialingCabinet.java | 26 +++++++++----- 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/src/main/java/magicbees/block/BlockPhialingCabinet.java b/src/main/java/magicbees/block/BlockPhialingCabinet.java index 694b54c8..0f67f14d 100644 --- a/src/main/java/magicbees/block/BlockPhialingCabinet.java +++ b/src/main/java/magicbees/block/BlockPhialingCabinet.java @@ -4,7 +4,10 @@ import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.IIcon; import net.minecraft.world.World; @@ -13,6 +16,8 @@ import magicbees.main.CommonProxy; import magicbees.main.utils.TabMagicBees; import magicbees.tileentity.TileEntityPhialingCabinet; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.IEssentiaContainerItem; public class BlockPhialingCabinet extends BlockContainer { @@ -36,9 +41,35 @@ public TileEntity createNewTileEntity(World world, int metadata) { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { - boolean activate = false; + if (world.isRemote) { + return false; + } else { + TileEntity tile = world.getTileEntity(x, y, z); + if (tile instanceof TileEntityPhialingCabinet) { + ItemStack tItemStack = player.getHeldItem(); + if (tItemStack != null) { + Item tItem = tItemStack.getItem(); + if (tItem instanceof IEssentiaContainerItem + && ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()) != null + && ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).size() > 0) { + Aspect tLocked = ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()) + .getAspects()[0]; + ((TileEntityPhialingCabinet) tile).setAspect(tLocked); + + // TODO: improve text + player.addChatMessage( + new ChatComponentTranslation("Producing " + tLocked.getLocalizedDescription())); + } + } else { + ((TileEntityPhialingCabinet) tile).setAspect(null); - return activate; + // TODO: improve text + player.addChatMessage(new ChatComponentTranslation("Cleared production specifier")); + } + world.markBlockForUpdate(x, y, z); + return true; + } else return false; + } } @Override diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 4c2e6bfb..c8661d2f 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -2,10 +2,11 @@ import java.util.Objects; -import magicbees.main.utils.ChunkCoords; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; import net.minecraftforge.common.util.ForgeDirection; import forestry.api.apiculture.IAlleleBeeSpecies; @@ -29,6 +30,10 @@ public class TileEntityPhialingCabinet extends TileEntity implements IAspectCont private int increment = 0; + public void setAspect(Aspect sAspect) { + aspect = sAspect; + } + @Override public void updateEntity() { // If there's no stored aspect we shouldn't even check for the above block. @@ -53,7 +58,9 @@ public void updateEntity() { increment = 0; } } - } catch (Exception ignored) {} + } catch (Exception ignored) { + MinecraftServer.getServer().addChatMessage(new ChatComponentText(ignored.toString())); + } } increment++; @@ -76,14 +83,15 @@ public boolean doesContainerAccept(Aspect tag) { @Override public int addToContainer(Aspect tag, int am) { - if (am != 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 - amount); - am -= added; - } + int toAdd = Math.min(maxAmount - essentia.visSize(), am); + + if (aspect.equals(tag) && toAdd > 0) { + essentia.add(aspect, toAdd); + markDirty(); + return am - toAdd; } + + markDirty(); return am; } From 974e459311cf54a2150f88d3996fa66c76d9cc94 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 18:31:40 +0100 Subject: [PATCH 20/66] oops --- .../magicbees/tileentity/TileEntityPhialingCabinet.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index c8661d2f..17ca91de 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -4,9 +4,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; import net.minecraftforge.common.util.ForgeDirection; import forestry.api.apiculture.IAlleleBeeSpecies; @@ -58,9 +56,7 @@ public void updateEntity() { increment = 0; } } - } catch (Exception ignored) { - MinecraftServer.getServer().addChatMessage(new ChatComponentText(ignored.toString())); - } + } catch (Exception ignored) {} } increment++; From b19979e88b3041643b1b88dd28895058662fce8c Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 19:48:11 +0100 Subject: [PATCH 21/66] revert container slots --- src/main/java/magicbees/client/gui/ContainerMagicApiary.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/magicbees/client/gui/ContainerMagicApiary.java b/src/main/java/magicbees/client/gui/ContainerMagicApiary.java index d95d9abe..dceb5459 100644 --- a/src/main/java/magicbees/client/gui/ContainerMagicApiary.java +++ b/src/main/java/magicbees/client/gui/ContainerMagicApiary.java @@ -20,8 +20,8 @@ public class ContainerMagicApiary extends ContainerMB { private static final int SLOT_QUEEN = 0; private static final int SLOT_DRONE = 1; private static final int SLOT_FRAME_START = 2; - private static final int SLOT_INVENTORY_START = 2; - private static final int SLOT_FRAME_COUNT = 5; + private static final int SLOT_INVENTORY_START = 5; + private static final int SLOT_FRAME_COUNT = 3; private static final int SLOT_INVENTORY_COUNT = 7; public ContainerMagicApiary(InventoryPlayer inventoryPlayer, TileEntityMagicApiary thaumicApiary) { From e88eb1756cf6a6aa28f56c25e356ae1be7c5f421 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 23:04:10 +0100 Subject: [PATCH 22/66] lower potential operations if the cabinet is full --- .../java/magicbees/tileentity/TileEntityPhialingCabinet.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 17ca91de..be3329f5 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -35,7 +35,8 @@ public void setAspect(Aspect sAspect) { @Override public void updateEntity() { // If there's no stored aspect we shouldn't even check for the above block. - if (aspect == null) return; + // We also don't need to run all the logic if the cabinet is full. + if (aspect == null || essentia.visSize() == maxAmount) return; if (increment % Config.thaumcraftEssentiaBeePhialingCabinetTimeBetween == 0) { try { @@ -53,10 +54,10 @@ public void updateEntity() { if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { addToContainer(aspect, Config.thaumcraftEssentiaBeePhialingCabinetAmount); - increment = 0; } } } catch (Exception ignored) {} + increment = 0; } increment++; From af2d06aa7be8eea04998ac07cf4b7326af0e3cd1 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 23:18:00 +0100 Subject: [PATCH 23/66] take into account the production multiplier --- .../tileentity/TileEntityPhialingCabinet.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index be3329f5..6ec3f52f 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -2,13 +2,13 @@ import java.util.Objects; +import forestry.api.apiculture.*; +import magicbees.bees.BeeManager; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -import forestry.api.apiculture.IAlleleBeeSpecies; -import forestry.api.apiculture.IBeeHousing; import forestry.apiculture.genetics.BeeGenome; import magicbees.bees.BeeSpecies; import magicbees.main.Config; @@ -43,17 +43,24 @@ public void updateEntity() { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); if (IBeeHousing.class.isAssignableFrom(above.getClass())) { IBeeHousing beeHousing = (IBeeHousing) above; + IBeekeepingLogic beekeepingLogic = beeHousing.getBeekeepingLogic(); // 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; + if (!beekeepingLogic.canWork()) return; ItemStack queenStack = beeHousing.getBeeInventory().getQueen(); IAlleleBeeSpecies queenSpecies = BeeGenome.getSpecies(queenStack); if (queenSpecies == null) return; if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { - addToContainer(aspect, Config.thaumcraftEssentiaBeePhialingCabinetAmount); + IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing); + IBeeGenome queenGenome = BeeManager.beeRoot.getMember(queenStack).getGenome(); + float productionMultiplier = Math.abs(modifier.getProductionModifier(queenGenome, 1.0F)); + + int amount = Math.round(Config.thaumcraftEssentiaBeePhialingCabinetAmount * productionMultiplier); + + addToContainer(aspect, amount); } } } catch (Exception ignored) {} From 98c0810820b0a5a6691053c860551faf4b0f0082 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 9 Dec 2023 23:21:54 +0100 Subject: [PATCH 24/66] sa --- .../tileentity/TileEntityPhialingCabinet.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 6ec3f52f..e96f7fcc 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -2,14 +2,18 @@ import java.util.Objects; -import forestry.api.apiculture.*; -import magicbees.bees.BeeManager; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; +import forestry.api.apiculture.IAlleleBeeSpecies; +import forestry.api.apiculture.IBeeGenome; +import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IBeeModifier; +import forestry.api.apiculture.IBeekeepingLogic; import forestry.apiculture.genetics.BeeGenome; +import magicbees.bees.BeeManager; import magicbees.bees.BeeSpecies; import magicbees.main.Config; import thaumcraft.api.aspects.Aspect; @@ -58,7 +62,8 @@ public void updateEntity() { IBeeGenome queenGenome = BeeManager.beeRoot.getMember(queenStack).getGenome(); float productionMultiplier = Math.abs(modifier.getProductionModifier(queenGenome, 1.0F)); - int amount = Math.round(Config.thaumcraftEssentiaBeePhialingCabinetAmount * productionMultiplier); + int amount = Math + .round(Config.thaumcraftEssentiaBeePhialingCabinetAmount * productionMultiplier); addToContainer(aspect, amount); } From 2935df3409bc7f15e77bcaae1c0911eafa596dfa Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 10 Dec 2023 00:17:30 +0100 Subject: [PATCH 25/66] fix multiplication by 0 issue --- .../java/magicbees/tileentity/TileEntityPhialingCabinet.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index e96f7fcc..2bfbe4c0 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -62,8 +62,9 @@ public void updateEntity() { IBeeGenome queenGenome = BeeManager.beeRoot.getMember(queenStack).getGenome(); float productionMultiplier = Math.abs(modifier.getProductionModifier(queenGenome, 1.0F)); - int amount = Math - .round(Config.thaumcraftEssentiaBeePhialingCabinetAmount * productionMultiplier); + int amount = (int) Math.ceil( + Config.thaumcraftEssentiaBeePhialingCabinetAmount + * Math.max(productionMultiplier, 1.0F)); addToContainer(aspect, amount); } From ac68e40b9fdef20f51500c5f1ddcad30d209ed08 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 10 Dec 2023 10:34:30 +0100 Subject: [PATCH 26/66] add lang strings for phialing cabinet and essentia bee --- src/main/java/magicbees/main/Config.java | 2 +- .../java/magicbees/tileentity/TileEntityPhialingCabinet.java | 3 --- src/main/resources/assets/magicbees/lang/en_US.lang | 3 +++ 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 6ffa8ff6..e1a697ee 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -505,7 +505,7 @@ private void setupThaumcraftBlocks() { phialingCabinet = new BlockPhialingCabinet(); GameRegistry.registerBlock(phialingCabinet, "phialingCabinet"); - GameRegistry.registerTileEntity(TileEntityPhialingCabinet.class, TileEntityPhialingCabinet.tileEntityName); + GameRegistry.registerTileEntity(TileEntityPhialingCabinet.class, "phialingCabinet"); } } diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 2bfbe4c0..ad8352f1 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -22,9 +22,6 @@ import thaumcraft.api.aspects.IEssentiaTransport; public class TileEntityPhialingCabinet extends TileEntity implements IAspectContainer, IEssentiaTransport { - - public static final String tileEntityName = "Phialing Cabinet"; - public Aspect aspect; public AspectList essentia = new AspectList(); diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index d11776f8..0facfe03 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -38,6 +38,7 @@ item.beeRing.name=Collector's Bee Ring tile.effectJar.name=Bee Collector's Jar tile.magicApiary.name=Magic Apiary tile.visAuraProvider.name=Vis Apiary Booster +tile.phialingCabinet.name=Phialing Cabinet tile.manaAuraProvider.name=Mana Apiary Booster tile.hive.curious.name=Curious Hive tile.hive.unusual.name=Unusual Hive @@ -403,6 +404,8 @@ magicbees.speciesTCOrder=Ordered magicbees.speciesTCOrder.description=Their combs are nearly perfect, each part mirroring the pattern of the whole.|Apinomicon magicbees.speciesTCChaos=Chaotic magicbees.speciesTCChaos.description=The social structure of their hives seems to vary day by day, making it more flexible and resillient than others, but significantly more unpredictable.|Apinomicon +magicbees.speciesTCEssentia=Essentia +magicbees.speciesTCEssentia.description="Why spam Essentia Condensers when you can just use bees?"|Quantumly, Condenser Enjoyer magicbees.speciesTCVis=Vis magicbees.speciesTCVis.description="They can feel changes in the aura, but are not yet able to affect it."|Azanor, research notes magicbees.speciesTCRejuvenating=Rejuvenating From aa25a5086d52f20a30964ca2f223299c555aa70e Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 10 Dec 2023 19:14:04 +0100 Subject: [PATCH 27/66] sa --- .../main/utils/compat/ThaumcraftHelper.java | 449 ++++++++++-------- .../tileentity/TileEntityPhialingCabinet.java | 1 + 2 files changed, 239 insertions(+), 211 deletions(-) diff --git a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java index abf9dbac..37fcf6f8 100644 --- a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java +++ b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java @@ -36,148 +36,7 @@ public class ThaumcraftHelper implements IModHelper { - public enum MiscResource { - ALUMENTUM, - NITOR, - THAUMIUM, - QUICKSILVER, - MAGIC_TALLOW, - BRAIN_DEPRECATED, - AMBER, - ENCHANTED_FABRIC, - VIS_FILTER, - KNOWLEDGE_FRAGMENT, - MIRRORED_GLASS, - TAINTED_GOO, - TAINTED_TENDRIL, - JAR_LABEL, - SALIS, - CHARM, - VOID_INGOT, - VOID_SEED, - COIN,; - } - - public enum NuggetType { - IRON, - COPPER, - TIN, - SILVER, - LEAD, - QUICKSILVER, - THAUMIUM, - VOID_METAL, - _8, - _9, - _10, - _11, - _12, - _13, - _14, - _15, - NATIVE_IRON, - NATIVE_COPPER, - NATIVE_TIN, - NATIVE_SILVER, - NATIVE_LEAD, - NATIVE_CINNABAR, - _22, - _23, - _24, - _25, - _26, - _27, - _28, - _29, - _30, - NATIVE_GOLD,; - } - - public enum ShardType { - AIR, - FIRE, - WATER, - EARTH, - ORDER, - CHAOS, - BALANCED,; - } - - public enum MetalDeviceType { - CRUCIBLE, - ALEMBIC, - VIS_CHARGE_RELAY, - ADVANCED_ALCHEMICAL_CONSTRUCT, - _4, - ITEM_GRATE, - _6, - ARCANE_LAMP, - LAMP_OF_GROWTH, - ALCHEMICAL_CONSTRUCT, - THAUMATORIUM, - _11, - MNEMONIC_MATRIX, - LAMP_OF_FERTILITY, - VIS_RELAY,; - } - - public enum WoodenDeviceType { - BELLOWS, - EAR, - PRESSURE_PLATE, - PRESSURE_PLATE_B, - BORE_BASE, - BORE, - PLANKS_GREATWOOD, - PLANKS_SILVERWOOD, - BANNER,; - } - - public enum AiryBlockType { - NODE, - NITOR, - _2, - _3, - WARDING_STONE_FENCE, - ENERGIZED_NODE,; - } - - public enum Entity { - - BRAINY_ZOMBIE("entBrainyZombie", "EntityBrainyZombie"), - GIANT_BRAINY_ZOMBIE("entGiantBrainyZombie", "EntityGiantBrainyZombie"), - WISP("entWisp", "EntityWisp"), - FIREBAT("entFirebat", "EntityFireBat"),; - - private static String packageName = "thaumcraft.common.entities.monster."; - - public String entityID; - private String className; - - private Entity(String id, String clazz) { - this.entityID = id; - this.className = clazz; - } - - public String getClassName() { - return packageName + this.className; - } - } - - public enum BlockPlant { - GREATWOOD_SAPLING, - SILVERWOOD_SAPLING, - SHIMMERLEAF, - CINDERPEARL, - PURIFYING_PLANT, - VISHROOM,; - } - - public enum TreeType { - GREATWOOD, - SILVERWOOD,; - } - + public static final String Name = "Thaumcraft"; public static Block plant; public static Block candle; public static Block crystal; @@ -191,7 +50,6 @@ public enum TreeType { public static Block airy; public static Block fluxGas; public static Block fluxGoo; - public static Item filledJar; public static Item miscResource; public static Item shard; @@ -201,63 +59,17 @@ public enum TreeType { public static Item nuggetBeef; public static Item nuggetPork; public static Item zombieBrain; - public static ResearchItem bloodFramePage; public static ResearchPage bloodFrame1; public static ResearchPage bloodFrame2; - public static ResearchItem frenzyFramePage; public static ResearchPage frenzyFrame1; public static ResearchPage frenzyFrame2; - public static Class nodeClass; - - public static final String Name = "Thaumcraft"; + public static Object bloodFrame; + public static Object frenziedFrame; private static boolean isThaumcraftPresent = false; - - public static boolean isActive() { - return isThaumcraftPresent; - } - - public void preInit() { - if (Loader.isModLoaded(Name) && Config.thaumcraftActive) { - isThaumcraftPresent = true; - aspectTime = new Aspect( - "tempus", - 0xB68CFF, - new Aspect[] { Aspect.VOID, Aspect.ORDER }, - new ResourceLocation(CommonProxy.DOMAIN, CommonProxy.TEXTURE + "aspects/tempus.png"), - 1); - MagicBeesAPI.thaumcraftAspectTempus = aspectTime; - } else { - // Switch off TC-dependant items. - ResourceType.LORE_FRAGMENT.setHidden(); - ResourceType.TC_DUST_AIR.setHidden(); - ResourceType.TC_DUST_CHAOS.setHidden(); - ResourceType.TC_DUST_EARTH.setHidden(); - ResourceType.TC_DUST_FIRE.setHidden(); - ResourceType.TC_DUST_ORDER.setHidden(); - ResourceType.TC_DUST_WATER.setHidden(); - } - } - - public void init() { - if (isActive()) { - getBlocks(); - getItems(); - } - } - - public void postInit() { - if (isActive()) { - setupItemAspects(); - setupCrafting(); - setupResearch(); - } - } - private static Object aspectTime; - private static Object frameMagic; private static Object thaumScoop; private static Object thaumGrafter; @@ -271,13 +83,13 @@ public void postInit() { private static Object essenceTime; private static Object essenceOblivion; private static Object visAuraProvider; - - public static Object bloodFrame; - public static Object frenziedFrame; - private static Object voidScoop; private static Object voidGrafter; + public static boolean isActive() { + return isThaumcraftPresent; + } + private static void getBlocks() { plant = BlockInterface.getBlock(Name, "blockCustomPlant"); candle = BlockInterface.getBlock(Name, "blockCandle"); @@ -340,32 +152,56 @@ private static void setupCrafting() { "MB_Scoop", new ItemStack(Config.thaumiumScoop), new AspectList().add(Aspect.ORDER, 2), - new Object[] { "sWs", "sTs", " T ", 's', Items.stick, 'W', Blocks.wool, 'T', - new ItemStack(miscResource, 1, MiscResource.THAUMIUM.ordinal()) }); + "sWs", + "sTs", + " T ", + 's', + Items.stick, + 'W', + Blocks.wool, + 'T', + new ItemStack(miscResource, 1, MiscResource.THAUMIUM.ordinal())); thaumGrafter = ThaumcraftApi.addArcaneCraftingRecipe( "MB_Grafter", new ItemStack(Config.thaumiumGrafter), new AspectList().add(Aspect.ORDER, 5), - new Object[] { " T", " s ", "s ", 's', Items.stick, 'T', - new ItemStack(miscResource, 1, MiscResource.THAUMIUM.ordinal()) }); + " T", + " s ", + "s ", + 's', + Items.stick, + 'T', + new ItemStack(miscResource, 1, MiscResource.THAUMIUM.ordinal())); frameMagic = ThaumcraftApi.addArcaneCraftingRecipe( "MB_FrameMagic", new ItemStack(Config.hiveFrameMagic), new AspectList().add(Aspect.ORDER, 5).add(Aspect.AIR, 2).add(Aspect.EARTH, 2), - new Object[] { "sss", "sCs", "sss", 's', Items.stick, 'C', - new ItemStack(miscResource, 1, MiscResource.ENCHANTED_FABRIC.ordinal()) }); + "sss", + "sCs", + "sss", + 's', + Items.stick, + 'C', + new ItemStack(miscResource, 1, MiscResource.ENCHANTED_FABRIC.ordinal())); visAuraProvider = ThaumcraftApi.addArcaneCraftingRecipe( "MB_VisAuraProvider", new ItemStack(Config.visAuraProvider), new AspectList().add(Aspect.ORDER, 60).add(Aspect.AIR, 60).add(Aspect.ENTROPY, 60) .add(Aspect.WATER, 60), - new Object[] { "ngn", "gvg", "npn", 'n', Items.gold_nugget, 'g', - new ItemStack(wooden, 1, WoodenDeviceType.PLANKS_GREATWOOD.ordinal()), 'v', - new ItemStack(metal, 1, MetalDeviceType.VIS_RELAY.ordinal()), 'p', - Config.pollen.getStackForType(PollenType.UNUSUAL) }); + "ngn", + "gvg", + "npn", + 'n', + Items.gold_nugget, + 'g', + new ItemStack(wooden, 1, WoodenDeviceType.PLANKS_GREATWOOD.ordinal()), + 'v', + new ItemStack(metal, 1, MetalDeviceType.VIS_RELAY.ordinal()), + 'p', + Config.pollen.getStackForType(PollenType.UNUSUAL)); essenceLife = ThaumcraftApi.addCrucibleRecipe( "MB_EssenceLife", @@ -426,22 +262,34 @@ private static void setupCrafting() { "MB_EssenceOblivion", Config.miscResources.getStackForType(ResourceType.ESSENCE_SCORNFUL_OBLIVION), new AspectList().add(Aspect.ENTROPY, 25).add(Aspect.AIR, 40).add(Aspect.ORDER, 15), - new Object[] { Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY), - Blocks.dragon_egg, }); + Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY), + Blocks.dragon_egg); voidScoop = ThaumcraftApi.addArcaneCraftingRecipe( "MB_ScoopVoid", new ItemStack(Config.voidScoop), new AspectList().add(Aspect.ORDER, 2), - new Object[] { "sWs", "sTs", " T ", 's', Items.stick, 'W', Blocks.wool, 'T', - new ItemStack(miscResource, 1, MiscResource.VOID_INGOT.ordinal()) }); + "sWs", + "sTs", + " T ", + 's', + Items.stick, + 'W', + Blocks.wool, + 'T', + new ItemStack(miscResource, 1, MiscResource.VOID_INGOT.ordinal())); voidGrafter = ThaumcraftApi.addArcaneCraftingRecipe( "MB_GrafterVoid", new ItemStack(Config.voidGrafter), new AspectList().add(Aspect.ORDER, 5), - new Object[] { " T", " s ", "s ", 's', Items.stick, 'T', - new ItemStack(miscResource, 1, MiscResource.VOID_INGOT.ordinal()) }); + " T", + " s ", + "s ", + 's', + Items.stick, + 'T', + new ItemStack(miscResource, 1, MiscResource.VOID_INGOT.ordinal())); } private static void setupResearch() { @@ -883,4 +731,183 @@ private static void setupItemAspects() { new AspectList().add(Aspect.VOID, 6).add((Aspect) aspectTime, 8)); } + + public void preInit() { + if (Loader.isModLoaded(Name) && Config.thaumcraftActive) { + isThaumcraftPresent = true; + aspectTime = new Aspect( + "tempus", + 0xB68CFF, + new Aspect[] { Aspect.VOID, Aspect.ORDER }, + new ResourceLocation(CommonProxy.DOMAIN, CommonProxy.TEXTURE + "aspects/tempus.png"), + 1); + MagicBeesAPI.thaumcraftAspectTempus = aspectTime; + } else { + // Switch off TC-dependant items. + ResourceType.LORE_FRAGMENT.setHidden(); + ResourceType.TC_DUST_AIR.setHidden(); + ResourceType.TC_DUST_CHAOS.setHidden(); + ResourceType.TC_DUST_EARTH.setHidden(); + ResourceType.TC_DUST_FIRE.setHidden(); + ResourceType.TC_DUST_ORDER.setHidden(); + ResourceType.TC_DUST_WATER.setHidden(); + } + } + + public void init() { + if (isActive()) { + getBlocks(); + getItems(); + } + } + + public void postInit() { + if (isActive()) { + setupItemAspects(); + setupCrafting(); + setupResearch(); + } + } + + public enum MiscResource { + ALUMENTUM, + NITOR, + THAUMIUM, + QUICKSILVER, + MAGIC_TALLOW, + BRAIN_DEPRECATED, + AMBER, + ENCHANTED_FABRIC, + VIS_FILTER, + KNOWLEDGE_FRAGMENT, + MIRRORED_GLASS, + TAINTED_GOO, + TAINTED_TENDRIL, + JAR_LABEL, + SALIS, + CHARM, + VOID_INGOT, + VOID_SEED, + COIN, + } + + public enum NuggetType { + IRON, + COPPER, + TIN, + SILVER, + LEAD, + QUICKSILVER, + THAUMIUM, + VOID_METAL, + _8, + _9, + _10, + _11, + _12, + _13, + _14, + _15, + NATIVE_IRON, + NATIVE_COPPER, + NATIVE_TIN, + NATIVE_SILVER, + NATIVE_LEAD, + NATIVE_CINNABAR, + _22, + _23, + _24, + _25, + _26, + _27, + _28, + _29, + _30, + NATIVE_GOLD, + } + + public enum ShardType { + AIR, + FIRE, + WATER, + EARTH, + ORDER, + CHAOS, + BALANCED, + } + + public enum MetalDeviceType { + CRUCIBLE, + ALEMBIC, + VIS_CHARGE_RELAY, + ADVANCED_ALCHEMICAL_CONSTRUCT, + _4, + ITEM_GRATE, + _6, + ARCANE_LAMP, + LAMP_OF_GROWTH, + ALCHEMICAL_CONSTRUCT, + THAUMATORIUM, + _11, + MNEMONIC_MATRIX, + LAMP_OF_FERTILITY, + VIS_RELAY, + } + + public enum WoodenDeviceType { + BELLOWS, + EAR, + PRESSURE_PLATE, + PRESSURE_PLATE_B, + BORE_BASE, + BORE, + PLANKS_GREATWOOD, + PLANKS_SILVERWOOD, + BANNER, + } + + public enum AiryBlockType { + NODE, + NITOR, + _2, + _3, + WARDING_STONE_FENCE, + ENERGIZED_NODE, + } + + public enum Entity { + + BRAINY_ZOMBIE("entBrainyZombie", "EntityBrainyZombie"), + GIANT_BRAINY_ZOMBIE("entGiantBrainyZombie", "EntityGiantBrainyZombie"), + WISP("entWisp", "EntityWisp"), + FIREBAT("entFirebat", "EntityFireBat"),; + + private static final String packageName = "thaumcraft.common.entities.monster."; + + public String entityID; + private final String className; + + Entity(String id, String clazz) { + this.entityID = id; + this.className = clazz; + } + + public String getClassName() { + return packageName + this.className; + } + } + + public enum BlockPlant { + GREATWOOD_SAPLING, + SILVERWOOD_SAPLING, + SHIMMERLEAF, + CINDERPEARL, + PURIFYING_PLANT, + VISHROOM, + } + + public enum TreeType { + GREATWOOD, + SILVERWOOD, + } } diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index ad8352f1..aac1dc82 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -22,6 +22,7 @@ import thaumcraft.api.aspects.IEssentiaTransport; public class TileEntityPhialingCabinet extends TileEntity implements IAspectContainer, IEssentiaTransport { + public Aspect aspect; public AspectList essentia = new AspectList(); From 27ea81cd09ead683065be5310b80b19b95582f2a Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Tue, 12 Dec 2023 09:35:26 +0100 Subject: [PATCH 28/66] handle null aspect --- .../java/magicbees/tileentity/TileEntityPhialingCabinet.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index aac1dc82..5c56c019 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -236,7 +236,7 @@ public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); this.essentia.writeToNBT(compound); - compound.setString("aspect", aspect.getTag()); + if (aspect != null) compound.setString("aspect", aspect.getTag()); compound.setInteger("increment", increment); } @@ -248,7 +248,7 @@ public void readFromNBT(NBTTagCompound compound) { if (this.essentia.visSize() > this.maxAmount) { this.essentia = new AspectList(); } - aspect = Aspect.getAspect(compound.getString("aspect")); + if (compound.hasKey("aspect")) aspect = Aspect.getAspect(compound.getString("aspect")); increment = compound.getInteger("increment"); } } From ae736770fb942d38676238eb3a10e4da31d358ac Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Tue, 12 Dec 2023 10:35:42 +0100 Subject: [PATCH 29/66] age queen for every essentia generated --- .../tileentity/TileEntityPhialingCabinet.java | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 5c56c019..3038cc95 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -1,17 +1,14 @@ package magicbees.tileentity; +import java.lang.reflect.Field; import java.util.Objects; +import forestry.api.apiculture.*; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -import forestry.api.apiculture.IAlleleBeeSpecies; -import forestry.api.apiculture.IBeeGenome; -import forestry.api.apiculture.IBeeHousing; -import forestry.api.apiculture.IBeeModifier; -import forestry.api.apiculture.IBeekeepingLogic; import forestry.apiculture.genetics.BeeGenome; import magicbees.bees.BeeManager; import magicbees.bees.BeeSpecies; @@ -53,11 +50,12 @@ public void updateEntity() { ItemStack queenStack = beeHousing.getBeeInventory().getQueen(); IAlleleBeeSpecies queenSpecies = BeeGenome.getSpecies(queenStack); - if (queenSpecies == null) return; + if (queenSpecies == null || BeeManager.beeRoot.getType(queenStack) != EnumBeeType.QUEEN) return; if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing); - IBeeGenome queenGenome = BeeManager.beeRoot.getMember(queenStack).getGenome(); + IBee queen = BeeManager.beeRoot.getMember(queenStack); + IBeeGenome queenGenome = queen.getGenome(); float productionMultiplier = Math.abs(modifier.getProductionModifier(queenGenome, 1.0F)); int amount = (int) Math.ceil( @@ -65,6 +63,10 @@ public void updateEntity() { * Math.max(productionMultiplier, 1.0F)); addToContainer(aspect, amount); + + try { + drainQueen(beeHousing, beekeepingLogic, modifier, queen); + } catch (Exception ignored) {} } } } catch (Exception ignored) {} @@ -74,6 +76,24 @@ public void updateEntity() { increment++; } + private void drainQueen(IBeeHousing housing, IBeekeepingLogic beekeepingLogic, IBeeModifier modifier, IBee queen) throws NoSuchFieldException, IllegalAccessException { + float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f); + queen.age(housing.getWorld(), lifespanModifier); + + // Write the changed queen back into the item stack. + NBTTagCompound nbttagcompound = new NBTTagCompound(); + queen.writeToNBT(nbttagcompound); + housing.getBeeInventory().getQueen().setTagCompound(nbttagcompound); + + Field beeProgress = beekeepingLogic.getClass().getDeclaredField("beeProgress"); + beeProgress.setAccessible(true); + Field beeProgressMax = beekeepingLogic.getClass().getDeclaredField("beeProgressMax"); + beeProgressMax.setAccessible(true); + + beeProgress.set(beekeepingLogic, queen.getHealth()); + beeProgressMax.set(beekeepingLogic, queen.getMaxHealth()); + } + @Override public AspectList getAspects() { return this.essentia; From 906b97064eda4591d0e8f42e984d09a045142e2b Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Tue, 12 Dec 2023 10:36:47 +0100 Subject: [PATCH 30/66] remove queen aging --- dependencies.gradle | 4 ++-- .../tileentity/TileEntityPhialingCabinet.java | 23 ------------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 493ea46f..9eb24e3b 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -5,9 +5,9 @@ dependencies { compileOnly('com.github.GTNewHorizons:BloodMagic:1.4.3:dev') compileOnly('com.github.GTNewHorizons:ThaumicHorizons:1.4.0:dev') - compileOnly('com.github.GTNewHorizons:Baubles:1.0.3:dev') {transitive = false} + compile('com.github.GTNewHorizons:Baubles:1.0.3:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Botania:1.10.3-GTNH:api') {transitive = false} - compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} + compile('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.101:dev') { transitive = false } } diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 3038cc95..cb7fa128 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -1,6 +1,5 @@ package magicbees.tileentity; -import java.lang.reflect.Field; import java.util.Objects; import forestry.api.apiculture.*; @@ -63,10 +62,6 @@ public void updateEntity() { * Math.max(productionMultiplier, 1.0F)); addToContainer(aspect, amount); - - try { - drainQueen(beeHousing, beekeepingLogic, modifier, queen); - } catch (Exception ignored) {} } } } catch (Exception ignored) {} @@ -76,24 +71,6 @@ public void updateEntity() { increment++; } - private void drainQueen(IBeeHousing housing, IBeekeepingLogic beekeepingLogic, IBeeModifier modifier, IBee queen) throws NoSuchFieldException, IllegalAccessException { - float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f); - queen.age(housing.getWorld(), lifespanModifier); - - // Write the changed queen back into the item stack. - NBTTagCompound nbttagcompound = new NBTTagCompound(); - queen.writeToNBT(nbttagcompound); - housing.getBeeInventory().getQueen().setTagCompound(nbttagcompound); - - Field beeProgress = beekeepingLogic.getClass().getDeclaredField("beeProgress"); - beeProgress.setAccessible(true); - Field beeProgressMax = beekeepingLogic.getClass().getDeclaredField("beeProgressMax"); - beeProgressMax.setAccessible(true); - - beeProgress.set(beekeepingLogic, queen.getHealth()); - beeProgressMax.set(beekeepingLogic, queen.getMaxHealth()); - } - @Override public AspectList getAspects() { return this.essentia; From 121fe1c0a93dea34fefde9c0c02d14518fbadb1d Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Tue, 12 Dec 2023 10:40:48 +0100 Subject: [PATCH 31/66] sa --- .../magicbees/tileentity/TileEntityPhialingCabinet.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index cb7fa128..1dc01e91 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -2,12 +2,18 @@ import java.util.Objects; -import forestry.api.apiculture.*; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; +import forestry.api.apiculture.EnumBeeType; +import forestry.api.apiculture.IAlleleBeeSpecies; +import forestry.api.apiculture.IBee; +import forestry.api.apiculture.IBeeGenome; +import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IBeeModifier; +import forestry.api.apiculture.IBeekeepingLogic; import forestry.apiculture.genetics.BeeGenome; import magicbees.bees.BeeManager; import magicbees.bees.BeeSpecies; From 4c64395e21937cd5859a1bcfb9624886204751b8 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Tue, 12 Dec 2023 11:46:22 +0100 Subject: [PATCH 32/66] tweak default config values --- dependencies.gradle | 4 ++-- src/main/java/magicbees/main/Config.java | 6 +++--- .../magicbees/tileentity/TileEntityPhialingCabinet.java | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 9eb24e3b..493ea46f 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -5,9 +5,9 @@ dependencies { compileOnly('com.github.GTNewHorizons:BloodMagic:1.4.3:dev') compileOnly('com.github.GTNewHorizons:ThaumicHorizons:1.4.0:dev') - compile('com.github.GTNewHorizons:Baubles:1.0.3:dev') {transitive = false} + compileOnly('com.github.GTNewHorizons:Baubles:1.0.3:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Botania:1.10.3-GTNH:api') {transitive = false} - compile('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} + compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.101:dev') { transitive = false } } diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index e1a697ee..1033a2b4 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -345,7 +345,7 @@ private void doGeneralConfigs() { "The time in ticks between Phialing Cabinet essentia generation", 1, 32767); - thaumcraftEssentiaBeePhialingCabinetTimeBetween = p.getInt(10); + thaumcraftEssentiaBeePhialingCabinetTimeBetween = p.getInt(200); p = configuration.get( CATEGORY_GENERAL, "thaumcraftEssentiaBeePhialingCabinetAmount", @@ -353,7 +353,7 @@ private void doGeneralConfigs() { "The amount that the Phialing Cabinet generates on every round", 1, 32767); - thaumcraftEssentiaBeePhialingCabinetAmount = p.getInt(2); + thaumcraftEssentiaBeePhialingCabinetAmount = p.getInt(1); p = configuration.get( CATEGORY_GENERAL, "thaumcraftEssentiaBeePhialingCabinetCapacity", @@ -361,7 +361,7 @@ private void doGeneralConfigs() { "The amount that the Phialing Cabinet can hold of each aspect", 1, 32767); - thaumcraftEssentiaBeePhialingCabinetCapacity = p.getInt(64); + thaumcraftEssentiaBeePhialingCabinetCapacity = p.getInt(256); p = configuration.get(CATEGORY_GENERAL, "moonDialShowText", false); p.comment = "set to true to show the current moon phase in mouse-over text."; diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 1dc01e91..9fb22100 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -42,7 +42,8 @@ public void updateEntity() { // We also don't need to run all the logic if the cabinet is full. if (aspect == null || essentia.visSize() == maxAmount) return; - if (increment % Config.thaumcraftEssentiaBeePhialingCabinetTimeBetween == 0) { + if (increment >= Config.thaumcraftEssentiaBeePhialingCabinetTimeBetween) { + increment = 0; try { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); if (IBeeHousing.class.isAssignableFrom(above.getClass())) { @@ -71,7 +72,6 @@ public void updateEntity() { } } } catch (Exception ignored) {} - increment = 0; } increment++; From fc9ebd66d9c72dbcc3aa2e30785f0c1cbf57f641 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Tue, 12 Dec 2023 13:10:10 +0100 Subject: [PATCH 33/66] add phialing cabinet research --- .../main/utils/compat/ThaumcraftHelper.java | 21 +++++++++++++++++++ .../assets/magicbees/lang/en_US.lang | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java index 37fcf6f8..40fdc770 100644 --- a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java +++ b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java @@ -85,6 +85,7 @@ public class ThaumcraftHelper implements IModHelper { private static Object visAuraProvider; private static Object voidScoop; private static Object voidGrafter; + private static InfusionRecipe phialingCabinet; public static boolean isActive() { return isThaumcraftPresent; @@ -290,6 +291,14 @@ private static void setupCrafting() { Items.stick, 'T', new ItemStack(miscResource, 1, MiscResource.VOID_INGOT.ordinal())); + + phialingCabinet = ThaumcraftApi.addInfusionCraftingRecipe( + "MB_PhialingCabinet", + new ItemStack(Config.phialingCabinet), + 6, + new AspectList().add(Aspect.ELDRITCH, 10).add(Aspect.EXCHANGE, 20).add(Aspect.VOID, 15), + Config.propolis.getStackForType(PropolisType.UNSTABLE), + new ItemStack[] { input, input, in2 }); } private static void setupResearch() { @@ -534,6 +543,18 @@ private static void setupResearch() { new ResearchPage((IArcaneRecipe) visAuraProvider)) .setParentsHidden("VISPOWER").registerResearchItem(); + new ResearchItem( + "MB_PhialingCabinet", + category, + new AspectList().add(Aspect.ELDRITCH, 1).add(Aspect.HARVEST, 1).add(Aspect.MAGIC, 1) + .add((Aspect) aspectTime, 1), + -3, + 5, + 4, + new ItemStack(Config.phialingCabinet)) + .setPages(getResearchPage("MB_PhialingCabinet.1"), new ResearchPage(phialingCabinet)) + .setParentsHidden("VOIDMETAL", "ESSENTIARESERVOIR").setConcealed().registerResearchItem(); + } private static ResearchPage getResearchPage(String ident) { diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index 0facfe03..3a6b5bd2 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -685,6 +685,10 @@ tc.research_name.MB_VisAuraProvider=Vis Apiary Booster tc.research_text.MB_VisAuraProvider=Vis? What about Bis? tc.research_page.MB_VisAuraProvider.1=Infusing Unusual Pollen with vis and combining it with gold creates an unusual crystal that, when fed centivis from an aura node, creates an energizing aura that bees are naturally attracted to when attuned to the environment within a Magic Apiary.§3Aqua§0 CV will double mutation rate
§8Perditio§0 CV will halve lifespan
§6Aer§0 CV will double production rate +tc.research_name.MB_PhialingCabinet=Phialing Cabinet +tc.research_text.MB_PhialingCabinet=How long will your queen last? +tc.research_page.MB_PhialingCabinet.1= + tc.research_name.MB_ScoopVoid=Void Scoop tc.research_text.MB_ScoopVoid=The dark net tc.research_page.MB_ScoopVoid.1=Void metal is a curious thing, and it's time to see what it can bring to Apimancy. Its self-regenerative properties have seeped their way into the net as well, creating a most unsettling mesh.
Hopefully it won't affect the bees too much... From 89acb72f0b39f70e1d3dd47cfedaf7dd76bbe60f Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Tue, 12 Dec 2023 19:29:38 +0100 Subject: [PATCH 34/66] add textures --- .../magicbees/block/BlockPhialingCabinet.java | 12 ++++-------- .../textures/blocks/phialingcabinet.0.png | Bin 0 -> 348 bytes .../textures/blocks/phialingcabinet.1.png | Bin 0 -> 348 bytes .../textures/blocks/phialingcabinet.2.png | Bin 0 -> 378 bytes 4 files changed, 4 insertions(+), 8 deletions(-) create mode 100644 src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.0.png create mode 100644 src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.1.png create mode 100644 src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.2.png diff --git a/src/main/java/magicbees/block/BlockPhialingCabinet.java b/src/main/java/magicbees/block/BlockPhialingCabinet.java index 0f67f14d..f72bd7f7 100644 --- a/src/main/java/magicbees/block/BlockPhialingCabinet.java +++ b/src/main/java/magicbees/block/BlockPhialingCabinet.java @@ -71,7 +71,6 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } else return false; } } - @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { @@ -80,10 +79,8 @@ public IIcon getIcon(int side, int meta) { return icons[0]; } else if (side == 1) { return icons[1]; - } else if (side == 2 || side == 3) { - return icons[2]; } else { - return icons[3]; + return icons[2]; } } @@ -92,9 +89,8 @@ public IIcon getIcon(int side, int meta) { public void registerBlockIcons(IIconRegister register) { icons = new IIcon[4]; - icons[0] = register.registerIcon(CommonProxy.DOMAIN + ":stripped_tainted_birch_log_top"); - icons[1] = register.registerIcon(CommonProxy.DOMAIN + ":stripped_tainted_birch_log_top"); - icons[2] = register.registerIcon(CommonProxy.DOMAIN + ":stripped_tainted_birch_log"); - icons[3] = register.registerIcon(CommonProxy.DOMAIN + ":stripped_tainted_birch_wood"); + icons[0] = register.registerIcon(CommonProxy.DOMAIN + ":phialingcabinet.0"); + icons[1] = register.registerIcon(CommonProxy.DOMAIN + ":phialingcabinet.1"); + icons[2] = register.registerIcon(CommonProxy.DOMAIN + ":phialingcabinet.2"); } } diff --git a/src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.0.png b/src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.0.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6197a6e0f153f6bd0239c5d9706b8ad63d7aa5 GIT binary patch literal 348 zcmV-i0i*tjP)Px$7D+@wR5*=&Q^9J(FbsVQIRvSU5=ak)($doy^#A{6Yz%go!Gur=-?~GQD=THX zM3()Y{FLXH_qWRpAvVmh1OT{-tZKanG12OPs5W&bf~Z!qK7whuch@2iRZQaq07yC2 z+~24(Ru8t$|A7tDS;2#~NCjvSFcGv!T{km`1Jfd)fw6rZ0ib^8CD%PWw_$z^(U=YV z^ZSjDuTKEL`FO&9cfhmg{KCsHaLl8O)eNG>7+yw0phX(+`FL989xSQ=oRRDnS_Jcw zvELmU-Sd)bo^q;&>aTMDO~yAAJFSa96XOqJDY!GV|Nou<0000Px$7D+@wR5*=&Q^9J(FbsVQIRvSU5=ak)($doy^#A{6Yz%go!Gur=-?~GQD=THX zM3()Y{FLXH_qWRpAvVmh1OT{-tZKanG12OPs5W&bf~Z!qK7whuch@2iRZQaq07yC2 z+~24(Ru8t$|A7tDS;2#~NCjvSFcGv!T{km`1Jfd)fw6rZ0ib^8CD%PWw_$z^(U=YV z^ZSjDuTKEL`FO&9cfhmg{KCsHaLl8O)eNG>7+yw0phX(+`FL989xSQ=oRRDnS_Jcw zvELmU-Sd)bo^q;&>aTMDO~yAAJFSa96XOqJDY!GV|Nou<0000Px$G)Y83R5*=&lfg>EKoEw%h8)U9N(pQWg5X6A#ri(JioSt(^HIF_;!}thK@gIK zP)c{ntscT`XE*2%fz8bR|4jaw%r?#TM23s1%0mDgy`RKNO{$EUT<{?z@yZx{2vMxe z$!0!Q4}-^tfUPY6u6OaQJ1Rs~lcn;1WZ@JN&}7#;Zmw@xE^5Ny<5@b>D99iLfc>H8 za&?vD%)Cm9l{yJT!spiqt?K|-+ZDF93GvSke!6e=ho07TJUu+}{_FuF6zlAXkTD7`sn>Au(mdm1>(9uh(fN6p>^(T zVm?L*e9RceFu-sh{VyO3NI5Lb0&5z`}+^Wi_@%07*qoM6N<$g0Lg72mk;8 literal 0 HcmV?d00001 From ec4491994c6fdfb6ae53a06880c3ba98d334c421 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Tue, 12 Dec 2023 21:30:11 +0100 Subject: [PATCH 35/66] add bee ageing --- .../java/magicbees/block/BlockPhialingCabinet.java | 1 + src/main/java/magicbees/main/Config.java | 4 ++-- .../tileentity/TileEntityPhialingCabinet.java | 13 ++++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/magicbees/block/BlockPhialingCabinet.java b/src/main/java/magicbees/block/BlockPhialingCabinet.java index f72bd7f7..c21c7803 100644 --- a/src/main/java/magicbees/block/BlockPhialingCabinet.java +++ b/src/main/java/magicbees/block/BlockPhialingCabinet.java @@ -71,6 +71,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } else return false; } } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 1033a2b4..cb2ecaea 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -341,7 +341,7 @@ private void doGeneralConfigs() { p = configuration.get( CATEGORY_GENERAL, "thaumcraftEssentiaBeePhialingCabinetTimeBetween", - 10, + 200, "The time in ticks between Phialing Cabinet essentia generation", 1, 32767); @@ -349,7 +349,7 @@ private void doGeneralConfigs() { p = configuration.get( CATEGORY_GENERAL, "thaumcraftEssentiaBeePhialingCabinetAmount", - 2, + 1, "The amount that the Phialing Cabinet generates on every round", 1, 32767); diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 9fb22100..95f78965 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -62,13 +62,14 @@ public void updateEntity() { IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing); IBee queen = BeeManager.beeRoot.getMember(queenStack); IBeeGenome queenGenome = queen.getGenome(); - float productionMultiplier = Math.abs(modifier.getProductionModifier(queenGenome, 1.0F)); + float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F); int amount = (int) Math.ceil( Config.thaumcraftEssentiaBeePhialingCabinetAmount * Math.max(productionMultiplier, 1.0F)); addToContainer(aspect, amount); + drainQueen(beeHousing, modifier, queen); } } } catch (Exception ignored) {} @@ -77,6 +78,16 @@ public void updateEntity() { increment++; } + private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) { + float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f); + queen.age(housing.getWorld(), lifespanModifier); + + // Write the changed queen back into the item stack. + NBTTagCompound nbttagcompound = new NBTTagCompound(); + queen.writeToNBT(nbttagcompound); + housing.getBeeInventory().getQueen().setTagCompound(nbttagcompound); + } + @Override public AspectList getAspects() { return this.essentia; From b7a928bb068ee3b063f253a243cf6a2903df975f Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 06:59:25 +0100 Subject: [PATCH 36/66] debug --- .../tileentity/TileEntityPhialingCabinet.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 95f78965..0e7f66be 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -2,9 +2,12 @@ import java.util.Objects; +import magicbees.main.utils.LogHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; import net.minecraftforge.common.util.ForgeDirection; import forestry.api.apiculture.EnumBeeType; @@ -47,18 +50,24 @@ public void updateEntity() { try { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); if (IBeeHousing.class.isAssignableFrom(above.getClass())) { + LogHelper.warn("is housing"); IBeeHousing beeHousing = (IBeeHousing) above; IBeekeepingLogic beekeepingLogic = beeHousing.getBeekeepingLogic(); // This performs all the checks to see if the bee is a living queen and if the species conditions // are met. if (!beekeepingLogic.canWork()) return; + LogHelper.warn("can work"); ItemStack queenStack = beeHousing.getBeeInventory().getQueen(); IAlleleBeeSpecies queenSpecies = BeeGenome.getSpecies(queenStack); - if (queenSpecies == null || BeeManager.beeRoot.getType(queenStack) != EnumBeeType.QUEEN) return; + if (queenSpecies == null) return; + LogHelper.warn("has species"); + if (BeeManager.beeRoot.getType(queenStack) != EnumBeeType.QUEEN) return; + LogHelper.warn("is queen"); if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { + LogHelper.warn("is essentia"); IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing); IBee queen = BeeManager.beeRoot.getMember(queenStack); IBeeGenome queenGenome = queen.getGenome(); From 2ade3e5705002bdfa503195b38c204d73bde730b Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 07:09:14 +0100 Subject: [PATCH 37/66] use instanceof --- .../java/magicbees/tileentity/TileEntityPhialingCabinet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 0e7f66be..ea890c01 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -49,7 +49,7 @@ public void updateEntity() { increment = 0; try { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); - if (IBeeHousing.class.isAssignableFrom(above.getClass())) { + if (above instanceof IBeeHousing) { LogHelper.warn("is housing"); IBeeHousing beeHousing = (IBeeHousing) above; IBeekeepingLogic beekeepingLogic = beeHousing.getBeekeepingLogic(); From ff20b5f6003e3d377c74ff5e9a17b545291b96c5 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 07:31:10 +0100 Subject: [PATCH 38/66] change housing detection --- .../tileentity/TileEntityPhialingCabinet.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index ea890c01..2578c9ab 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -1,15 +1,16 @@ package magicbees.tileentity; import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; -import magicbees.main.utils.LogHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentText; import net.minecraftforge.common.util.ForgeDirection; +import org.apache.commons.lang3.ClassUtils; + import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBee; @@ -21,6 +22,7 @@ import magicbees.bees.BeeManager; import magicbees.bees.BeeSpecies; import magicbees.main.Config; +import magicbees.main.utils.LogHelper; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; import thaumcraft.api.aspects.IAspectContainer; @@ -49,7 +51,9 @@ public void updateEntity() { increment = 0; try { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); - if (above instanceof IBeeHousing) { + Set classes = ClassUtils.getAllInterfaces(above.getClass()).stream().map(Class::getName) + .collect(Collectors.toSet()); + if (classes.contains("forestry.api.apiculture.IBeeHousing")) { LogHelper.warn("is housing"); IBeeHousing beeHousing = (IBeeHousing) above; IBeekeepingLogic beekeepingLogic = beeHousing.getBeekeepingLogic(); From fb98d686fb52b3d7a44641c31737a099df37833a Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 08:32:13 +0100 Subject: [PATCH 39/66] create method for detecting if housing is present --- .../tileentity/TileEntityPhialingCabinet.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 2578c9ab..52299e6b 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -50,12 +50,9 @@ public void updateEntity() { if (increment >= Config.thaumcraftEssentiaBeePhialingCabinetTimeBetween) { increment = 0; try { - TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); - Set classes = ClassUtils.getAllInterfaces(above.getClass()).stream().map(Class::getName) - .collect(Collectors.toSet()); - if (classes.contains("forestry.api.apiculture.IBeeHousing")) { + IBeeHousing beeHousing = beeHousing(); + if (beeHousing != null) { LogHelper.warn("is housing"); - IBeeHousing beeHousing = (IBeeHousing) above; IBeekeepingLogic beekeepingLogic = beeHousing.getBeekeepingLogic(); // This performs all the checks to see if the bee is a living queen and if the species conditions @@ -91,6 +88,16 @@ public void updateEntity() { increment++; } + protected IBeeHousing beeHousing() { + TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); + // TODO: Revert once Industrial Apiary is working + Set classes = ClassUtils.getAllInterfaces(above.getClass()).stream().map(Class::getName) + .collect(Collectors.toSet()); + LogHelper.warn(classes); + + return classes.contains("forestry.api.apiculture.IBeeHousing") ? above : null; + } + private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) { float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f); queen.age(housing.getWorld(), lifespanModifier); From b965d50bbc75189f4d3d0fa15187f34661de7251 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 08:32:34 +0100 Subject: [PATCH 40/66] oops --- .../java/magicbees/tileentity/TileEntityPhialingCabinet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java index 52299e6b..582bb46c 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java @@ -95,7 +95,7 @@ protected IBeeHousing beeHousing() { .collect(Collectors.toSet()); LogHelper.warn(classes); - return classes.contains("forestry.api.apiculture.IBeeHousing") ? above : null; + return classes.contains("forestry.api.apiculture.IBeeHousing") ? (IBeeHousing) above : null; } private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) { From 6e6cbbab48d12ceb16000ae0e065ecb116c313f8 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 08:56:47 +0100 Subject: [PATCH 41/66] rename phialing cabinet to apiamancers drainer --- ...inet.java => BlockApiamancersDrainer.java} | 26 ++++++------- src/main/java/magicbees/main/Config.java | 36 +++++++++--------- .../main/utils/compat/ThaumcraftHelper.java | 14 +++---- ...java => TileEntityApiamancersDrainer.java} | 12 +++--- .../assets/magicbees/lang/en_US.lang | 8 ++-- ...cabinet.0.png => apiamancersdrainer.0.png} | Bin ...cabinet.1.png => apiamancersdrainer.1.png} | Bin ...cabinet.2.png => apiamancersdrainer.2.png} | Bin 8 files changed, 47 insertions(+), 49 deletions(-) rename src/main/java/magicbees/block/{BlockPhialingCabinet.java => BlockApiamancersDrainer.java} (82%) rename src/main/java/magicbees/tileentity/{TileEntityPhialingCabinet.java => TileEntityApiamancersDrainer.java} (94%) rename src/main/resources/assets/magicbees/textures/blocks/{phialingcabinet.0.png => apiamancersdrainer.0.png} (100%) rename src/main/resources/assets/magicbees/textures/blocks/{phialingcabinet.1.png => apiamancersdrainer.1.png} (100%) rename src/main/resources/assets/magicbees/textures/blocks/{phialingcabinet.2.png => apiamancersdrainer.2.png} (100%) diff --git a/src/main/java/magicbees/block/BlockPhialingCabinet.java b/src/main/java/magicbees/block/BlockApiamancersDrainer.java similarity index 82% rename from src/main/java/magicbees/block/BlockPhialingCabinet.java rename to src/main/java/magicbees/block/BlockApiamancersDrainer.java index c21c7803..1768b5b3 100644 --- a/src/main/java/magicbees/block/BlockPhialingCabinet.java +++ b/src/main/java/magicbees/block/BlockApiamancersDrainer.java @@ -15,27 +15,27 @@ import cpw.mods.fml.relauncher.SideOnly; import magicbees.main.CommonProxy; import magicbees.main.utils.TabMagicBees; -import magicbees.tileentity.TileEntityPhialingCabinet; +import magicbees.tileentity.TileEntityApiamancersDrainer; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.IEssentiaContainerItem; -public class BlockPhialingCabinet extends BlockContainer { +public class BlockApiamancersDrainer extends BlockContainer { @SideOnly(Side.CLIENT) private IIcon[] icons; - public BlockPhialingCabinet() { - super(Material.wood); + public BlockApiamancersDrainer() { + super(Material.rock); this.setCreativeTab(TabMagicBees.tabMagicBees); - this.setBlockName("phialingCabinet"); + this.setBlockName("apiamancersDrainer"); this.setHardness(1f); this.setResistance(1.5f); - this.setHarvestLevel("axe", 0); + this.setHarvestLevel("pickaxe", 0); } @Override public TileEntity createNewTileEntity(World world, int metadata) { - return new TileEntityPhialingCabinet(); + return new TileEntityApiamancersDrainer(); } @Override @@ -45,7 +45,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return false; } else { TileEntity tile = world.getTileEntity(x, y, z); - if (tile instanceof TileEntityPhialingCabinet) { + if (tile instanceof TileEntityApiamancersDrainer) { ItemStack tItemStack = player.getHeldItem(); if (tItemStack != null) { Item tItem = tItemStack.getItem(); @@ -54,14 +54,14 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p && ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).size() > 0) { Aspect tLocked = ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()) .getAspects()[0]; - ((TileEntityPhialingCabinet) tile).setAspect(tLocked); + ((TileEntityApiamancersDrainer) tile).setAspect(tLocked); // TODO: improve text player.addChatMessage( new ChatComponentTranslation("Producing " + tLocked.getLocalizedDescription())); } } else { - ((TileEntityPhialingCabinet) tile).setAspect(null); + ((TileEntityApiamancersDrainer) tile).setAspect(null); // TODO: improve text player.addChatMessage(new ChatComponentTranslation("Cleared production specifier")); @@ -90,8 +90,8 @@ public IIcon getIcon(int side, int meta) { public void registerBlockIcons(IIconRegister register) { icons = new IIcon[4]; - icons[0] = register.registerIcon(CommonProxy.DOMAIN + ":phialingcabinet.0"); - icons[1] = register.registerIcon(CommonProxy.DOMAIN + ":phialingcabinet.1"); - icons[2] = register.registerIcon(CommonProxy.DOMAIN + ":phialingcabinet.2"); + icons[0] = register.registerIcon(CommonProxy.DOMAIN + ":apiamancersdrainer.0"); + icons[1] = register.registerIcon(CommonProxy.DOMAIN + ":apiamancersdrainer.1"); + icons[2] = register.registerIcon(CommonProxy.DOMAIN + ":apiamancersdrainer.2"); } } diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index cb2ecaea..aa1433e6 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -20,12 +20,12 @@ import forestry.api.apiculture.BeeManager; import forestry.api.storage.BackpackManager; import forestry.api.storage.EnumBackpackType; +import magicbees.block.BlockApiamancersDrainer; import magicbees.block.BlockEffectJar; import magicbees.block.BlockEnchantedEarth; import magicbees.block.BlockHive; import magicbees.block.BlockMagicApiary; import magicbees.block.BlockManaAuraProvider; -import magicbees.block.BlockPhialingCabinet; import magicbees.block.BlockVisAuraProvider; import magicbees.block.types.HiveType; import magicbees.item.ItemCapsule; @@ -57,10 +57,10 @@ import magicbees.main.utils.compat.BotaniaHelper; import magicbees.main.utils.compat.ThaumcraftHelper; import magicbees.storage.BackpackDefinition; +import magicbees.tileentity.TileEntityApiamancersDrainer; import magicbees.tileentity.TileEntityEffectJar; import magicbees.tileentity.TileEntityMagicApiary; import magicbees.tileentity.TileEntityManaAuraProvider; -import magicbees.tileentity.TileEntityPhialingCabinet; import magicbees.tileentity.TileEntityVisAuraProvider; /** @@ -91,9 +91,9 @@ public class Config { public static double thaumcraftSaplingDroprate; public static int aromaticLumpSwarmerRate; public static int thaumcraftNodeMaxSize; - public static int thaumcraftEssentiaBeePhialingCabinetTimeBetween; - public static int thaumcraftEssentiaBeePhialingCabinetAmount; - public static int thaumcraftEssentiaBeePhialingCabinetCapacity; + public static int drainerTimeBetween; + public static int drainerAmount; + public static int drainerCapacity; public static boolean arsMagicaActive; public static boolean baublesActive; @@ -117,7 +117,7 @@ public class Config { public static BlockEffectJar effectJar; public static BlockHive hive; public static BlockMagicApiary magicApiary; - public static BlockPhialingCabinet phialingCabinet; + public static BlockApiamancersDrainer apiamancersDrainer; public static BlockManaAuraProvider manaAuraProvider; public static BlockVisAuraProvider visAuraProvider; @@ -340,28 +340,28 @@ private void doGeneralConfigs() { p = configuration.get( CATEGORY_GENERAL, - "thaumcraftEssentiaBeePhialingCabinetTimeBetween", + "drainerTimeBetween", 200, - "The time in ticks between Phialing Cabinet essentia generation", + "The time in ticks between Apiamancer's Drainer essentia generation", 1, 32767); - thaumcraftEssentiaBeePhialingCabinetTimeBetween = p.getInt(200); + drainerTimeBetween = p.getInt(200); p = configuration.get( CATEGORY_GENERAL, - "thaumcraftEssentiaBeePhialingCabinetAmount", + "drainerAmount", 1, - "The amount that the Phialing Cabinet generates on every round", + "The amount that the Apiamancer's Drainer generates on every round", 1, 32767); - thaumcraftEssentiaBeePhialingCabinetAmount = p.getInt(1); + drainerAmount = p.getInt(1); p = configuration.get( CATEGORY_GENERAL, - "thaumcraftEssentiaBeePhialingCabinetCapacity", + "drainerCapacity", 64, - "The amount that the Phialing Cabinet can hold of each aspect", + "The amount that the Apiamancer's Drainer can hold of each aspect", 1, 32767); - thaumcraftEssentiaBeePhialingCabinetCapacity = p.getInt(256); + drainerCapacity = p.getInt(256); p = configuration.get(CATEGORY_GENERAL, "moonDialShowText", false); p.comment = "set to true to show the current moon phase in mouse-over text."; @@ -503,9 +503,9 @@ private void setupThaumcraftBlocks() { GameRegistry.registerBlock(visAuraProvider, "visAuraProvider"); GameRegistry.registerTileEntity(TileEntityVisAuraProvider.class, "visAuraProvider"); - phialingCabinet = new BlockPhialingCabinet(); - GameRegistry.registerBlock(phialingCabinet, "phialingCabinet"); - GameRegistry.registerTileEntity(TileEntityPhialingCabinet.class, "phialingCabinet"); + apiamancersDrainer = new BlockApiamancersDrainer(); + GameRegistry.registerBlock(apiamancersDrainer, "apiamancersDrainer"); + GameRegistry.registerTileEntity(TileEntityApiamancersDrainer.class, "apiamancersDrainer"); } } diff --git a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java index 40fdc770..34ef4b8a 100644 --- a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java +++ b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java @@ -85,7 +85,7 @@ public class ThaumcraftHelper implements IModHelper { private static Object visAuraProvider; private static Object voidScoop; private static Object voidGrafter; - private static InfusionRecipe phialingCabinet; + private static InfusionRecipe apiamancersDrainer; public static boolean isActive() { return isThaumcraftPresent; @@ -292,9 +292,9 @@ private static void setupCrafting() { 'T', new ItemStack(miscResource, 1, MiscResource.VOID_INGOT.ordinal())); - phialingCabinet = ThaumcraftApi.addInfusionCraftingRecipe( - "MB_PhialingCabinet", - new ItemStack(Config.phialingCabinet), + apiamancersDrainer = ThaumcraftApi.addInfusionCraftingRecipe( + "MB_ApiamancersDrainer", + new ItemStack(Config.apiamancersDrainer), 6, new AspectList().add(Aspect.ELDRITCH, 10).add(Aspect.EXCHANGE, 20).add(Aspect.VOID, 15), Config.propolis.getStackForType(PropolisType.UNSTABLE), @@ -544,15 +544,15 @@ private static void setupResearch() { .setParentsHidden("VISPOWER").registerResearchItem(); new ResearchItem( - "MB_PhialingCabinet", + "MB_ApiamancersDrainer", category, new AspectList().add(Aspect.ELDRITCH, 1).add(Aspect.HARVEST, 1).add(Aspect.MAGIC, 1) .add((Aspect) aspectTime, 1), -3, 5, 4, - new ItemStack(Config.phialingCabinet)) - .setPages(getResearchPage("MB_PhialingCabinet.1"), new ResearchPage(phialingCabinet)) + new ItemStack(Config.apiamancersDrainer)) + .setPages(getResearchPage("MB_ApiamancersDrainer.1"), new ResearchPage(apiamancersDrainer)) .setParentsHidden("VOIDMETAL", "ESSENTIARESERVOIR").setConcealed().registerResearchItem(); } diff --git a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java similarity index 94% rename from src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java rename to src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java index 582bb46c..49dbf90b 100644 --- a/src/main/java/magicbees/tileentity/TileEntityPhialingCabinet.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java @@ -28,12 +28,12 @@ import thaumcraft.api.aspects.IAspectContainer; import thaumcraft.api.aspects.IEssentiaTransport; -public class TileEntityPhialingCabinet extends TileEntity implements IAspectContainer, IEssentiaTransport { +public class TileEntityApiamancersDrainer extends TileEntity implements IAspectContainer, IEssentiaTransport { public Aspect aspect; public AspectList essentia = new AspectList(); - public final int maxAmount = Config.thaumcraftEssentiaBeePhialingCabinetCapacity; + public final int maxAmount = Config.drainerCapacity; private int increment = 0; @@ -47,7 +47,7 @@ public void updateEntity() { // We also don't need to run all the logic if the cabinet is full. if (aspect == null || essentia.visSize() == maxAmount) return; - if (increment >= Config.thaumcraftEssentiaBeePhialingCabinetTimeBetween) { + if (increment >= Config.drainerTimeBetween) { increment = 0; try { IBeeHousing beeHousing = beeHousing(); @@ -74,9 +74,7 @@ public void updateEntity() { IBeeGenome queenGenome = queen.getGenome(); float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F); - int amount = (int) Math.ceil( - Config.thaumcraftEssentiaBeePhialingCabinetAmount - * Math.max(productionMultiplier, 1.0F)); + int amount = (int) Math.ceil(Config.drainerAmount * Math.max(productionMultiplier, 1.0F)); addToContainer(aspect, amount); drainQueen(beeHousing, modifier, queen); @@ -92,7 +90,7 @@ protected IBeeHousing beeHousing() { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); // TODO: Revert once Industrial Apiary is working Set classes = ClassUtils.getAllInterfaces(above.getClass()).stream().map(Class::getName) - .collect(Collectors.toSet()); + .collect(Collectors.toSet()); LogHelper.warn(classes); return classes.contains("forestry.api.apiculture.IBeeHousing") ? (IBeeHousing) above : null; diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index 3a6b5bd2..1198b8cc 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -38,7 +38,7 @@ item.beeRing.name=Collector's Bee Ring tile.effectJar.name=Bee Collector's Jar tile.magicApiary.name=Magic Apiary tile.visAuraProvider.name=Vis Apiary Booster -tile.phialingCabinet.name=Phialing Cabinet +tile.apiamancersdrainer.name=Apiamancer's Drainer tile.manaAuraProvider.name=Mana Apiary Booster tile.hive.curious.name=Curious Hive tile.hive.unusual.name=Unusual Hive @@ -685,9 +685,9 @@ tc.research_name.MB_VisAuraProvider=Vis Apiary Booster tc.research_text.MB_VisAuraProvider=Vis? What about Bis? tc.research_page.MB_VisAuraProvider.1=Infusing Unusual Pollen with vis and combining it with gold creates an unusual crystal that, when fed centivis from an aura node, creates an energizing aura that bees are naturally attracted to when attuned to the environment within a Magic Apiary.§3Aqua§0 CV will double mutation rate
§8Perditio§0 CV will halve lifespan
§6Aer§0 CV will double production rate -tc.research_name.MB_PhialingCabinet=Phialing Cabinet -tc.research_text.MB_PhialingCabinet=How long will your queen last? -tc.research_page.MB_PhialingCabinet.1= +tc.research_name.MB_ApiamancersDrainer=Apiamancer's Drainer +tc.research_text.MB_ApiamancersDrainer=How long will your queen last? +tc.research_page.MB_ApiamancersDrainer.1= tc.research_name.MB_ScoopVoid=Void Scoop tc.research_text.MB_ScoopVoid=The dark net diff --git a/src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.0.png b/src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.0.png similarity index 100% rename from src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.0.png rename to src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.0.png diff --git a/src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.1.png b/src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.1.png similarity index 100% rename from src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.1.png rename to src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.1.png diff --git a/src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.2.png b/src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.2.png similarity index 100% rename from src/main/resources/assets/magicbees/textures/blocks/phialingcabinet.2.png rename to src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.2.png From 123ff123029e8b65fd1bd8b85e427b653256b92b Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 09:19:05 +0100 Subject: [PATCH 42/66] implement alternative housing checker for industrial apiary --- .../block/BlockApiamancersDrainer.java | 12 +++--- src/main/java/magicbees/main/Config.java | 11 +++-- ...> TileEntityApiamancersDrainerCommon.java} | 2 +- .../TileEntityApiamancersDrainerGT.java | 41 +++++++++++++++++++ 4 files changed, 54 insertions(+), 12 deletions(-) rename src/main/java/magicbees/tileentity/{TileEntityApiamancersDrainer.java => TileEntityApiamancersDrainerCommon.java} (98%) create mode 100644 src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java diff --git a/src/main/java/magicbees/block/BlockApiamancersDrainer.java b/src/main/java/magicbees/block/BlockApiamancersDrainer.java index 1768b5b3..db9cb947 100644 --- a/src/main/java/magicbees/block/BlockApiamancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApiamancersDrainer.java @@ -15,7 +15,8 @@ import cpw.mods.fml.relauncher.SideOnly; import magicbees.main.CommonProxy; import magicbees.main.utils.TabMagicBees; -import magicbees.tileentity.TileEntityApiamancersDrainer; +import magicbees.tileentity.TileEntityApiamancersDrainerCommon; +import magicbees.tileentity.TileEntityApiamancersDrainerGT; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.IEssentiaContainerItem; @@ -35,7 +36,8 @@ public BlockApiamancersDrainer() { @Override public TileEntity createNewTileEntity(World world, int metadata) { - return new TileEntityApiamancersDrainer(); + return TileEntityApiamancersDrainerGT.isGTLoaded ? new TileEntityApiamancersDrainerGT() + : new TileEntityApiamancersDrainerCommon(); } @Override @@ -45,7 +47,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return false; } else { TileEntity tile = world.getTileEntity(x, y, z); - if (tile instanceof TileEntityApiamancersDrainer) { + if (tile instanceof TileEntityApiamancersDrainerCommon) { ItemStack tItemStack = player.getHeldItem(); if (tItemStack != null) { Item tItem = tItemStack.getItem(); @@ -54,14 +56,14 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p && ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).size() > 0) { Aspect tLocked = ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()) .getAspects()[0]; - ((TileEntityApiamancersDrainer) tile).setAspect(tLocked); + ((TileEntityApiamancersDrainerCommon) tile).setAspect(tLocked); // TODO: improve text player.addChatMessage( new ChatComponentTranslation("Producing " + tLocked.getLocalizedDescription())); } } else { - ((TileEntityApiamancersDrainer) tile).setAspect(null); + ((TileEntityApiamancersDrainerCommon) tile).setAspect(null); // TODO: improve text player.addChatMessage(new ChatComponentTranslation("Cleared production specifier")); diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index aa1433e6..64ce033b 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -57,11 +57,7 @@ import magicbees.main.utils.compat.BotaniaHelper; import magicbees.main.utils.compat.ThaumcraftHelper; import magicbees.storage.BackpackDefinition; -import magicbees.tileentity.TileEntityApiamancersDrainer; -import magicbees.tileentity.TileEntityEffectJar; -import magicbees.tileentity.TileEntityMagicApiary; -import magicbees.tileentity.TileEntityManaAuraProvider; -import magicbees.tileentity.TileEntityVisAuraProvider; +import magicbees.tileentity.*; /** * A class to hold some data related to mod state & functions. @@ -505,7 +501,10 @@ private void setupThaumcraftBlocks() { apiamancersDrainer = new BlockApiamancersDrainer(); GameRegistry.registerBlock(apiamancersDrainer, "apiamancersDrainer"); - GameRegistry.registerTileEntity(TileEntityApiamancersDrainer.class, "apiamancersDrainer"); + GameRegistry.registerTileEntity( + TileEntityApiamancersDrainerGT.isGTLoaded ? TileEntityApiamancersDrainerGT.class + : TileEntityApiamancersDrainerCommon.class, + "apiamancersDrainer"); } } diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java similarity index 98% rename from src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java rename to src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java index 49dbf90b..95a9e73d 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainer.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java @@ -28,7 +28,7 @@ import thaumcraft.api.aspects.IAspectContainer; import thaumcraft.api.aspects.IEssentiaTransport; -public class TileEntityApiamancersDrainer extends TileEntity implements IAspectContainer, IEssentiaTransport { +public class TileEntityApiamancersDrainerCommon extends TileEntity implements IAspectContainer, IEssentiaTransport { public Aspect aspect; public AspectList essentia = new AspectList(); diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java new file mode 100644 index 00000000..c4292180 --- /dev/null +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -0,0 +1,41 @@ +package magicbees.tileentity; + +import java.util.Set; +import java.util.stream.Collectors; + +import net.minecraft.tileentity.TileEntity; + +import org.apache.commons.lang3.ClassUtils; + +import cpw.mods.fml.common.Loader; +import forestry.api.apiculture.*; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.metatileentity.BaseMetaTileEntity; +import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_IndustrialApiary; +import magicbees.main.utils.LogHelper; + +public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainerCommon { + + public static boolean isGTLoaded = Loader.isModLoaded("gregtech"); + + @Override + protected IBeeHousing beeHousing() { + TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); + boolean isGTMetaTileEntity = above instanceof BaseMetaTileEntity; + + if (isGTMetaTileEntity) { + BaseMetaTileEntity metaTileEntity = (BaseMetaTileEntity) above; + IMetaTileEntity underlyingMetaTileEntity = metaTileEntity.getMetaTileEntity(); + + if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; + + Set classes = ClassUtils.getAllInterfaces(underlyingMetaTileEntity.getClass()).stream() + .map(Class::getName).collect(Collectors.toSet()); + LogHelper.warn(classes); + + return (IBeeHousing) underlyingMetaTileEntity; + } + + return null; + } +} From 65b698face6a7b113e3e18774e4adf54ce968672 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 09:43:43 +0100 Subject: [PATCH 43/66] perform standard check alongside gt check --- dependencies.gradle | 3 +-- .../tileentity/TileEntityApiamancersDrainerCommon.java | 6 +++--- .../tileentity/TileEntityApiamancersDrainerGT.java | 6 ++++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 493ea46f..59f86815 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -8,7 +8,6 @@ dependencies { compileOnly('com.github.GTNewHorizons:Baubles:1.0.3:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Botania:1.10.3-GTNH:api') {transitive = false} compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.101:dev') { transitive = false } - + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.101:dev') } diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java index 95a9e73d..800525dc 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java @@ -50,7 +50,8 @@ public void updateEntity() { if (increment >= Config.drainerTimeBetween) { increment = 0; try { - IBeeHousing beeHousing = beeHousing(); + TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); + IBeeHousing beeHousing = beeHousing(above); if (beeHousing != null) { LogHelper.warn("is housing"); IBeekeepingLogic beekeepingLogic = beeHousing.getBeekeepingLogic(); @@ -86,8 +87,7 @@ public void updateEntity() { increment++; } - protected IBeeHousing beeHousing() { - TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); + protected IBeeHousing beeHousing(TileEntity above) { // TODO: Revert once Industrial Apiary is working Set classes = ClassUtils.getAllInterfaces(above.getClass()).stream().map(Class::getName) .collect(Collectors.toSet()); diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java index c4292180..1ee764be 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -19,8 +19,10 @@ public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainer public static boolean isGTLoaded = Loader.isModLoaded("gregtech"); @Override - protected IBeeHousing beeHousing() { - TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); + protected IBeeHousing beeHousing(TileEntity above) { + IBeeHousing regularCheck = super.beeHousing(above); + if (regularCheck != null) return regularCheck; + boolean isGTMetaTileEntity = above instanceof BaseMetaTileEntity; if (isGTMetaTileEntity) { From f55a9f7643bfdf6cf24af4e3cc3732ac8ea29519 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 09:58:59 +0100 Subject: [PATCH 44/66] address review --- .../block/BlockApiamancersDrainer.java | 15 +++------ .../TileEntityApiamancersDrainerCommon.java | 25 ++++++--------- .../TileEntityApiamancersDrainerGT.java | 31 ++++++++++--------- .../assets/magicbees/lang/en_US.lang | 2 +- 4 files changed, 31 insertions(+), 42 deletions(-) diff --git a/src/main/java/magicbees/block/BlockApiamancersDrainer.java b/src/main/java/magicbees/block/BlockApiamancersDrainer.java index db9cb947..2485399b 100644 --- a/src/main/java/magicbees/block/BlockApiamancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApiamancersDrainer.java @@ -77,14 +77,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { - - if (side == 0) { - return icons[0]; - } else if (side == 1) { - return icons[1]; - } else { - return icons[2]; - } + return icons[side <= 1 ? side : 2]; } @Override @@ -92,8 +85,8 @@ public IIcon getIcon(int side, int meta) { public void registerBlockIcons(IIconRegister register) { icons = new IIcon[4]; - icons[0] = register.registerIcon(CommonProxy.DOMAIN + ":apiamancersdrainer.0"); - icons[1] = register.registerIcon(CommonProxy.DOMAIN + ":apiamancersdrainer.1"); - icons[2] = register.registerIcon(CommonProxy.DOMAIN + ":apiamancersdrainer.2"); + for (int i = 0; i < icons.length; i++) { + icons[i] = register.registerIcon(CommonProxy.DOMAIN + ":apiamancersdrainer." + i); + } } } diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java index 800525dc..d129d95e 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java @@ -1,16 +1,12 @@ package magicbees.tileentity; import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -import org.apache.commons.lang3.ClassUtils; - import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBee; @@ -35,7 +31,7 @@ public class TileEntityApiamancersDrainerCommon extends TileEntity implements IA public final int maxAmount = Config.drainerCapacity; - private int increment = 0; + protected int increment = 0; public void setAspect(Aspect sAspect) { aspect = sAspect; @@ -54,11 +50,10 @@ public void updateEntity() { IBeeHousing beeHousing = beeHousing(above); if (beeHousing != null) { LogHelper.warn("is housing"); - IBeekeepingLogic beekeepingLogic = beeHousing.getBeekeepingLogic(); // This performs all the checks to see if the bee is a living queen and if the species conditions // are met. - if (!beekeepingLogic.canWork()) return; + if (!canWork(beeHousing, above)) return; LogHelper.warn("can work"); ItemStack queenStack = beeHousing.getBeeInventory().getQueen(); @@ -88,12 +83,12 @@ public void updateEntity() { } protected IBeeHousing beeHousing(TileEntity above) { - // TODO: Revert once Industrial Apiary is working - Set classes = ClassUtils.getAllInterfaces(above.getClass()).stream().map(Class::getName) - .collect(Collectors.toSet()); - LogHelper.warn(classes); + return above instanceof IBeeHousing ? (IBeeHousing) above : null; + } - return classes.contains("forestry.api.apiculture.IBeeHousing") ? (IBeeHousing) above : null; + protected boolean canWork(IBeeHousing beeHousing, TileEntity above) { + IBeekeepingLogic beekeepingLogic = beeHousing.getBeekeepingLogic(); + return beekeepingLogic.canWork(); } private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) { @@ -143,9 +138,8 @@ public boolean takeFromContainer(Aspect tag, int amount) { if (this.essentia.getAmount(tag) >= amount) { this.essentia.reduce(tag, amount); return true; - } else { - return false; } + return false; } @Override @@ -163,9 +157,8 @@ public boolean takeFromContainer(AspectList ot) { essentia.reduce(next, ot.getAmount(next)); } return true; - } else { - return false; } + return false; } @Override diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java index 1ee764be..200df05a 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -1,18 +1,12 @@ package magicbees.tileentity; -import java.util.Set; -import java.util.stream.Collectors; - import net.minecraft.tileentity.TileEntity; -import org.apache.commons.lang3.ClassUtils; - import cpw.mods.fml.common.Loader; import forestry.api.apiculture.*; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.metatileentity.BaseMetaTileEntity; import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_IndustrialApiary; -import magicbees.main.utils.LogHelper; public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainerCommon { @@ -23,21 +17,30 @@ protected IBeeHousing beeHousing(TileEntity above) { IBeeHousing regularCheck = super.beeHousing(above); if (regularCheck != null) return regularCheck; - boolean isGTMetaTileEntity = above instanceof BaseMetaTileEntity; + BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(above); - if (isGTMetaTileEntity) { - BaseMetaTileEntity metaTileEntity = (BaseMetaTileEntity) above; - IMetaTileEntity underlyingMetaTileEntity = metaTileEntity.getMetaTileEntity(); + if (GTMetaTileEntity != null) { + IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity(); if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; - Set classes = ClassUtils.getAllInterfaces(underlyingMetaTileEntity.getClass()).stream() - .map(Class::getName).collect(Collectors.toSet()); - LogHelper.warn(classes); - return (IBeeHousing) underlyingMetaTileEntity; } return null; } + + @Override + protected boolean canWork(IBeeHousing beeHousing, TileEntity te) { + boolean canNormallyWork = super.canWork(beeHousing, te); + BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te); + + return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : canNormallyWork; + } + + private BaseMetaTileEntity GTTileEntity(TileEntity te) { + boolean isGTMetaTileEntity = te instanceof BaseMetaTileEntity; + + return isGTMetaTileEntity ? (BaseMetaTileEntity) te : null; + } } diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index 1198b8cc..526c2458 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -38,7 +38,7 @@ item.beeRing.name=Collector's Bee Ring tile.effectJar.name=Bee Collector's Jar tile.magicApiary.name=Magic Apiary tile.visAuraProvider.name=Vis Apiary Booster -tile.apiamancersdrainer.name=Apiamancer's Drainer +tile.ApiamancersDrainer.name=Apiamancer's Drainer tile.manaAuraProvider.name=Mana Apiary Booster tile.hive.curious.name=Curious Hive tile.hive.unusual.name=Unusual Hive From 4823e447939b09973b3dbdad4e494b4612140086 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 12:04:15 +0100 Subject: [PATCH 45/66] add some scanner data --- .../TileEntityApiamancersDrainerGT.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java index 200df05a..5827fedb 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -1,17 +1,45 @@ package magicbees.tileentity; +import java.util.stream.Collectors; + import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; import cpw.mods.fml.common.Loader; -import forestry.api.apiculture.*; +import forestry.api.apiculture.IBeeHousing; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechDeviceInformation; import gregtech.api.metatileentity.BaseMetaTileEntity; import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_IndustrialApiary; -public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainerCommon { +public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainerCommon + implements IGregTechDeviceInformation { public static boolean isGTLoaded = Loader.isModLoaded("gregtech"); + @Override + public boolean isGivingInformation() { + return true; + } + + @Override + public String[] getInfoData() { + String aspects = essentia.aspects.entrySet().stream() + .map( + e -> EnumChatFormatting.LIGHT_PURPLE + e.getKey().getName() + + ": " + + EnumChatFormatting.GREEN + + e.getValue()) + .collect(Collectors.joining(EnumChatFormatting.RESET + ", " + EnumChatFormatting.RESET)); + + return new String[] { // + EnumChatFormatting.DARK_PURPLE + "Apiamancer's Drainer" + EnumChatFormatting.RESET, // + aspect != null ? "Attuned: " + aspect.getName() : "Not attuned", // + "Stored Essentia:", // + aspects // + }; + } + @Override protected IBeeHousing beeHousing(TileEntity above) { IBeeHousing regularCheck = super.beeHousing(above); From 06571c1eb429c84440cb1f4c0536e4b070ec4fba Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Wed, 13 Dec 2023 22:41:09 +0100 Subject: [PATCH 46/66] check for queen in industrial apiary --- .../TileEntityApiamancersDrainerCommon.java | 18 ++++++++--------- .../TileEntityApiamancersDrainerGT.java | 20 ++++++++++++++++--- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java index d129d95e..4704c5a3 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java @@ -18,7 +18,6 @@ import magicbees.bees.BeeManager; import magicbees.bees.BeeSpecies; import magicbees.main.Config; -import magicbees.main.utils.LogHelper; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; import thaumcraft.api.aspects.IAspectContainer; @@ -49,27 +48,24 @@ public void updateEntity() { TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord); IBeeHousing beeHousing = beeHousing(above); if (beeHousing != null) { - LogHelper.warn("is housing"); - // This performs all the checks to see if the bee is a living queen and if the species conditions // are met. if (!canWork(beeHousing, above)) return; - LogHelper.warn("can work"); - ItemStack queenStack = beeHousing.getBeeInventory().getQueen(); + // The beeRoot.isMember call will treat null the same as EnumBeeType.NONE which leads getSpecies to + // return null. + ItemStack queenStack = getQueen(beeHousing, above); IAlleleBeeSpecies queenSpecies = BeeGenome.getSpecies(queenStack); if (queenSpecies == null) return; - LogHelper.warn("has species"); + if (BeeManager.beeRoot.getType(queenStack) != EnumBeeType.QUEEN) return; - LogHelper.warn("is queen"); if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { - LogHelper.warn("is essentia"); IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing); IBee queen = BeeManager.beeRoot.getMember(queenStack); IBeeGenome queenGenome = queen.getGenome(); - float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F); + float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F); int amount = (int) Math.ceil(Config.drainerAmount * Math.max(productionMultiplier, 1.0F)); addToContainer(aspect, amount); @@ -91,6 +87,10 @@ protected boolean canWork(IBeeHousing beeHousing, TileEntity above) { return beekeepingLogic.canWork(); } + protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) { + return beeHousing.getBeeInventory().getQueen(); + } + private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) { float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f); queen.age(housing.getWorld(), lifespanModifier); diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java index 5827fedb..15af8dee 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -2,6 +2,7 @@ import java.util.stream.Collectors; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; @@ -49,7 +50,6 @@ protected IBeeHousing beeHousing(TileEntity above) { if (GTMetaTileEntity != null) { IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity(); - if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; return (IBeeHousing) underlyingMetaTileEntity; @@ -60,10 +60,24 @@ protected IBeeHousing beeHousing(TileEntity above) { @Override protected boolean canWork(IBeeHousing beeHousing, TileEntity te) { - boolean canNormallyWork = super.canWork(beeHousing, te); BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te); - return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : canNormallyWork; + return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : super.canWork(beeHousing, te); + } + + @Override + protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) { + BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te); + + if (GTMetaTileEntity != null) { + IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity(); + if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; + GT_MetaTileEntity_IndustrialApiary industrialApiary = (GT_MetaTileEntity_IndustrialApiary) underlyingMetaTileEntity; + + return industrialApiary.getUsedQueen(); + } + + return super.getQueen(beeHousing, te); } private BaseMetaTileEntity GTTileEntity(TileEntity te) { From edf3ff74232b6b16625c8347b0d438453f1cca6c Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Thu, 14 Dec 2023 07:39:02 +0100 Subject: [PATCH 47/66] add prod multiplier based on industrial apiary speed --- src/main/java/magicbees/main/Config.java | 4 +- .../TileEntityApiamancersDrainerCommon.java | 12 ++++-- .../TileEntityApiamancersDrainerGT.java | 39 +++++++++++++------ 3 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 64ce033b..c0f18b66 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -353,11 +353,11 @@ private void doGeneralConfigs() { p = configuration.get( CATEGORY_GENERAL, "drainerCapacity", - 64, + 512, "The amount that the Apiamancer's Drainer can hold of each aspect", 1, 32767); - drainerCapacity = p.getInt(256); + drainerCapacity = p.getInt(512); p = configuration.get(CATEGORY_GENERAL, "moonDialShowText", false); p.comment = "set to true to show the current moon phase in mouse-over text."; diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java index 4704c5a3..28da4420 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java @@ -63,10 +63,8 @@ public void updateEntity() { if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing); IBee queen = BeeManager.beeRoot.getMember(queenStack); - IBeeGenome queenGenome = queen.getGenome(); - float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F); - int amount = (int) Math.ceil(Config.drainerAmount * Math.max(productionMultiplier, 1.0F)); + int amount = Config.drainerAmount * getProductionMultiplier(modifier, queen, above); addToContainer(aspect, amount); drainQueen(beeHousing, modifier, queen); @@ -91,6 +89,14 @@ protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) { return beeHousing.getBeeInventory().getQueen(); } + protected int getProductionMultiplier(IBeeModifier modifier, IBee queen, TileEntity te) { + IBeeGenome queenGenome = queen.getGenome(); + float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F); + float minimum = Math.max(productionMultiplier, 1.0F); + + return (int) Math.ceil(minimum); + } + private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) { float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f); queen.age(housing.getWorld(), lifespanModifier); diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java index 15af8dee..6d0732c5 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -7,7 +7,9 @@ import net.minecraft.util.EnumChatFormatting; import cpw.mods.fml.common.Loader; +import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IBeeModifier; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechDeviceInformation; import gregtech.api.metatileentity.BaseMetaTileEntity; @@ -46,7 +48,7 @@ protected IBeeHousing beeHousing(TileEntity above) { IBeeHousing regularCheck = super.beeHousing(above); if (regularCheck != null) return regularCheck; - BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(above); + BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(above); if (GTMetaTileEntity != null) { IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity(); @@ -60,29 +62,44 @@ protected IBeeHousing beeHousing(TileEntity above) { @Override protected boolean canWork(IBeeHousing beeHousing, TileEntity te) { - BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te); + BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te); return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : super.canWork(beeHousing, te); } @Override protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) { - BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te); + BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te); + GT_MetaTileEntity_IndustrialApiary industrialApiary = getGTIndustrialApiary(GTMetaTileEntity); - if (GTMetaTileEntity != null) { - IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity(); - if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; - GT_MetaTileEntity_IndustrialApiary industrialApiary = (GT_MetaTileEntity_IndustrialApiary) underlyingMetaTileEntity; + return industrialApiary != null ? industrialApiary.getUsedQueen() : super.getQueen(beeHousing, te); + } - return industrialApiary.getUsedQueen(); - } + @Override + protected int getProductionMultiplier(IBeeModifier modifier, IBee queen, TileEntity te) { + BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te); + GT_MetaTileEntity_IndustrialApiary industrialApiary = getGTIndustrialApiary(GTMetaTileEntity); + + int housingProductionMultiplier = super.getProductionMultiplier(modifier, queen, te); - return super.getQueen(beeHousing, te); + return industrialApiary != null + ? housingProductionMultiplier * (int) Math.ceil(Math.sqrt(industrialApiary.mSpeed)) + : housingProductionMultiplier; } - private BaseMetaTileEntity GTTileEntity(TileEntity te) { + private BaseMetaTileEntity getGTTileEntity(TileEntity te) { boolean isGTMetaTileEntity = te instanceof BaseMetaTileEntity; return isGTMetaTileEntity ? (BaseMetaTileEntity) te : null; } + + private GT_MetaTileEntity_IndustrialApiary getGTIndustrialApiary(BaseMetaTileEntity bmte) { + if (bmte != null) { + IMetaTileEntity underlyingMetaTileEntity = bmte.getMetaTileEntity(); + if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; + + return (GT_MetaTileEntity_IndustrialApiary) underlyingMetaTileEntity; + } + return null; + } } From b5165b3e58c9923c8ce2aef1604ffcecd77dd2ca Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Sun, 24 Dec 2023 21:00:38 +0100 Subject: [PATCH 48/66] Update Config.java --- src/main/java/magicbees/main/Config.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index c0f18b66..097614ea 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -353,7 +353,7 @@ private void doGeneralConfigs() { p = configuration.get( CATEGORY_GENERAL, "drainerCapacity", - 512, + 512, "The amount that the Apiamancer's Drainer can hold of each aspect", 1, 32767); From df0761c9af2deb77b71f32e9c68abe860e88bd73 Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Sun, 24 Dec 2023 21:02:53 +0100 Subject: [PATCH 49/66] Update dependencies.gradle --- dependencies.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 59f86815..cad2374f 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,13 +1,13 @@ // Add your dependencies here dependencies { - compile('com.github.GTNewHorizons:ForestryMC:4.7.0:dev') + compile('com.github.GTNewHorizons:ForestryMC:4.7.1:dev') compileOnly('com.github.GTNewHorizons:BloodMagic:1.4.3:dev') - compileOnly('com.github.GTNewHorizons:ThaumicHorizons:1.4.0:dev') + compileOnly('com.github.GTNewHorizons:ThaumicHorizons:1.4.2:dev') compileOnly('com.github.GTNewHorizons:Baubles:1.0.3:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Botania:1.10.3-GTNH:api') {transitive = false} compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.44.101:dev') + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.45.07:dev') } From 4f5358bea6edf7a554a3a59aae107ac74ae50fc2 Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Sun, 24 Dec 2023 21:15:17 +0100 Subject: [PATCH 50/66] Update Config.java --- src/main/java/magicbees/main/Config.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 097614ea..791f209a 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -57,7 +57,12 @@ import magicbees.main.utils.compat.BotaniaHelper; import magicbees.main.utils.compat.ThaumcraftHelper; import magicbees.storage.BackpackDefinition; -import magicbees.tileentity.*; +import magicbees.tileentity.TileEntityApiamancersDrainerCommon; +import magicbees.tileentity.TileEntityApiamancersDrainerGT; +import magicbees.tileentity.TileEntityEffectJar; +import magicbees.tileentity.TileEntityMagicApiary; +import magicbees.tileentity.TileEntityManaAuraProvider; +import magicbees.tileentity.TileEntityVisAuraProvider; /** * A class to hold some data related to mod state & functions. From b82ce5e15fc2af2733770f70715451ed6cd5920a Mon Sep 17 00:00:00 2001 From: Martin Robertz Date: Sun, 31 Dec 2023 14:44:27 +0100 Subject: [PATCH 51/66] update --- build.gradle | 8 +++++--- dependencies.gradle | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 8507c7df..50c3291c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1701530445 +//version: 1702141377 /* DO NOT CHANGE THIS FILE! Also, you may replace this file at any time if there is an update available. @@ -54,7 +54,7 @@ plugins { id 'com.diffplug.spotless' version '6.13.0' apply false // 6.13.0 is the last jvm8 supporting version id 'com.modrinth.minotaur' version '2.+' apply false id 'com.matthewprenger.cursegradle' version '1.4.0' apply false - id 'com.gtnewhorizons.retrofuturagradle' version '1.3.24' + id 'com.gtnewhorizons.retrofuturagradle' version '1.3.26' } print("You might want to check out './gradlew :faq' if your build fails.\n") @@ -613,7 +613,7 @@ repositories { } maven { name = "ic2" - url = getURL("https://maven.ic2.player.to/", "https://maven2.ic2.player.to/") + url = getURL("https://maven2.ic2.player.to/", "https://maven.ic2.player.to/") content { includeGroup "net.industrial-craft" } @@ -672,6 +672,8 @@ configurations.all { substitute module('com.github.GTNewHorizons:SpongePoweredMixin') using module(mixinProviderSpecNoClassifer) withClassifier("dev") because("Unimixins replaces other mixin mods") substitute module('com.github.GTNewHorizons:SpongeMixins') using module(mixinProviderSpecNoClassifer) withClassifier("dev") because("Unimixins replaces other mixin mods") substitute module('io.github.legacymoddingmc:unimixins') using module(mixinProviderSpecNoClassifer) withClassifier("dev") because("Our previous unimixins upload was missing the dev classifier") + + substitute module('org.scala-lang:scala-library:2.11.1') using module('org.scala-lang:scala-library:2.11.5') because('To allow mixing with Java 8 targets') } } diff --git a/dependencies.gradle b/dependencies.gradle index cad2374f..c7f7dcf9 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,13 +1,13 @@ // Add your dependencies here dependencies { - compile('com.github.GTNewHorizons:ForestryMC:4.7.1:dev') + compile('com.github.GTNewHorizons:ForestryMC:4.8.1:dev') compileOnly('com.github.GTNewHorizons:BloodMagic:1.4.3:dev') compileOnly('com.github.GTNewHorizons:ThaumicHorizons:1.4.2:dev') compileOnly('com.github.GTNewHorizons:Baubles:1.0.3:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Botania:1.10.3-GTNH:api') {transitive = false} compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.45.07:dev') + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.45.15:dev') } From 9d3616525952d6414f02d465f37d7e28e1842e99 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 31 Dec 2023 15:03:38 +0100 Subject: [PATCH 52/66] cursed shit --- .../java/magicbees/block/BlockApiamancersDrainer.java | 10 +++++++--- src/main/java/magicbees/main/Config.java | 11 ++++++----- .../tileentity/TileEntityApiamancersDrainerGT.java | 3 --- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/java/magicbees/block/BlockApiamancersDrainer.java b/src/main/java/magicbees/block/BlockApiamancersDrainer.java index 2485399b..b4344d51 100644 --- a/src/main/java/magicbees/block/BlockApiamancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApiamancersDrainer.java @@ -16,7 +16,6 @@ import magicbees.main.CommonProxy; import magicbees.main.utils.TabMagicBees; import magicbees.tileentity.TileEntityApiamancersDrainerCommon; -import magicbees.tileentity.TileEntityApiamancersDrainerGT; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.IEssentiaContainerItem; @@ -25,6 +24,8 @@ public class BlockApiamancersDrainer extends BlockContainer { @SideOnly(Side.CLIENT) private IIcon[] icons; + public static Class drainer = TileEntityApiamancersDrainerCommon.class; + public BlockApiamancersDrainer() { super(Material.rock); this.setCreativeTab(TabMagicBees.tabMagicBees); @@ -36,8 +37,11 @@ public BlockApiamancersDrainer() { @Override public TileEntity createNewTileEntity(World world, int metadata) { - return TileEntityApiamancersDrainerGT.isGTLoaded ? new TileEntityApiamancersDrainerGT() - : new TileEntityApiamancersDrainerCommon(); + try { + return drainer.newInstance(); + } catch (Exception e) { + return null; + } } @Override diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 791f209a..2aaffc2e 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -14,6 +14,7 @@ import net.minecraftforge.oredict.OreDictionary; import cpw.mods.fml.client.event.ConfigChangedEvent; +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.registry.GameRegistry; @@ -57,7 +58,6 @@ import magicbees.main.utils.compat.BotaniaHelper; import magicbees.main.utils.compat.ThaumcraftHelper; import magicbees.storage.BackpackDefinition; -import magicbees.tileentity.TileEntityApiamancersDrainerCommon; import magicbees.tileentity.TileEntityApiamancersDrainerGT; import magicbees.tileentity.TileEntityEffectJar; import magicbees.tileentity.TileEntityMagicApiary; @@ -163,6 +163,9 @@ public class Config { // ----- Config State info ---------------------------------- public static Configuration configuration; + // ---- Loaded mods ----------------------------------------- + public static boolean isGTLoaded = Loader.isModLoaded("gregtech"); + public Config(File configFile) { configuration = new Configuration(configFile); configuration.load(); @@ -504,12 +507,10 @@ private void setupThaumcraftBlocks() { GameRegistry.registerBlock(visAuraProvider, "visAuraProvider"); GameRegistry.registerTileEntity(TileEntityVisAuraProvider.class, "visAuraProvider"); + if (isGTLoaded) BlockApiamancersDrainer.drainer = TileEntityApiamancersDrainerGT.class; apiamancersDrainer = new BlockApiamancersDrainer(); GameRegistry.registerBlock(apiamancersDrainer, "apiamancersDrainer"); - GameRegistry.registerTileEntity( - TileEntityApiamancersDrainerGT.isGTLoaded ? TileEntityApiamancersDrainerGT.class - : TileEntityApiamancersDrainerCommon.class, - "apiamancersDrainer"); + GameRegistry.registerTileEntity(BlockApiamancersDrainer.drainer, "apiamancersDrainer"); } } diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java index 6d0732c5..9cd81037 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -6,7 +6,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; -import cpw.mods.fml.common.Loader; import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeHousing; import forestry.api.apiculture.IBeeModifier; @@ -18,8 +17,6 @@ public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainerCommon implements IGregTechDeviceInformation { - public static boolean isGTLoaded = Loader.isModLoaded("gregtech"); - @Override public boolean isGivingInformation() { return true; From 3da4083bba608f0f10b1083a994d9dde4cf87e56 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 31 Dec 2023 15:04:53 +0100 Subject: [PATCH 53/66] localize --- src/main/resources/assets/magicbees/lang/en_US.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index 526c2458..f77cec46 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -38,7 +38,7 @@ item.beeRing.name=Collector's Bee Ring tile.effectJar.name=Bee Collector's Jar tile.magicApiary.name=Magic Apiary tile.visAuraProvider.name=Vis Apiary Booster -tile.ApiamancersDrainer.name=Apiamancer's Drainer +tile.apiamancersDrainer.name=Apiamancer's Drainer tile.manaAuraProvider.name=Mana Apiary Booster tile.hive.curious.name=Curious Hive tile.hive.unusual.name=Unusual Hive @@ -687,7 +687,7 @@ tc.research_page.MB_VisAuraProvider.1=Infusing Unusual Pollen with vis and combi tc.research_name.MB_ApiamancersDrainer=Apiamancer's Drainer tc.research_text.MB_ApiamancersDrainer=How long will your queen last? -tc.research_page.MB_ApiamancersDrainer.1= +tc.research_page.MB_ApiamancersDrainer.1=The Apiamancer's Drainer is an innovative device in the field of Apimancy, designed to extract essentia from the life force of bees. It is placed beneath an apiary, establishing a direct connection with the hive above.
To determine the type of essentia it produces, the Drainer is attuned by inserting a container filled with the desired essentia. This attunement process aligns the Drainer with the essence in the container, setting the specific type of essentia it will generate.
Once attuned, the Drainer converts the life energy of the bees into the selected essentia... tc.research_name.MB_ScoopVoid=Void Scoop tc.research_text.MB_ScoopVoid=The dark net From 9fb5e3d8fb103286eae8cd1ee087f8f7b425f559 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 31 Dec 2023 15:08:34 +0100 Subject: [PATCH 54/66] reword --- src/main/resources/assets/magicbees/lang/en_US.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index f77cec46..17b1886d 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -687,7 +687,7 @@ tc.research_page.MB_VisAuraProvider.1=Infusing Unusual Pollen with vis and combi tc.research_name.MB_ApiamancersDrainer=Apiamancer's Drainer tc.research_text.MB_ApiamancersDrainer=How long will your queen last? -tc.research_page.MB_ApiamancersDrainer.1=The Apiamancer's Drainer is an innovative device in the field of Apimancy, designed to extract essentia from the life force of bees. It is placed beneath an apiary, establishing a direct connection with the hive above.
To determine the type of essentia it produces, the Drainer is attuned by inserting a container filled with the desired essentia. This attunement process aligns the Drainer with the essence in the container, setting the specific type of essentia it will generate.
Once attuned, the Drainer converts the life energy of the bees into the selected essentia... +tc.research_page.MB_ApiamancersDrainer.1=The Apiamancer's Drainer is an innovative device in the field of Apimancy, designed to extract essentia from the life force of bees. It is placed beneath an apiary, establishing a direct connection with the apiary above.
To determine the type of essentia it produces, the Drainer is attuned by tapping it with the desired essentia.
Once attuned, the Drainer converts the life energy of the queen into the selected essentia... tc.research_name.MB_ScoopVoid=Void Scoop tc.research_text.MB_ScoopVoid=The dark net From 25c04cedcbe1940f403806cef281b2495518e6e3 Mon Sep 17 00:00:00 2001 From: Alastors <78517796+Alastors@users.noreply.github.com> Date: Sun, 21 Jan 2024 14:32:54 -0500 Subject: [PATCH 55/66] Update dependencies.gradle --- dependencies.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index c209af96..1d10176e 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -4,11 +4,11 @@ dependencies { compile('com.github.GTNewHorizons:ForestryMC:4.8.2:dev') compileOnly('com.github.GTNewHorizons:BloodMagic:1.5.0:dev') - compileOnly('com.github.GTNewHorizons:ThaumicHorizons:1.5.0:dev') + compileOnly('com.github.GTNewHorizons:ThaumicHorizons:1.5.1:dev') compileOnly('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:Botania:1.10.4-GTNH:api') {transitive = false} + compileOnly('com.github.GTNewHorizons:Botania:1.10.5-GTNH:api') {transitive = false} compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.45.25:dev') { transitive = false } + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.45.41:dev') { transitive = false } } From 9bae32761c2985a14cb551775935b4e4c4b3eb76 Mon Sep 17 00:00:00 2001 From: Alastors <78517796+Alastors@users.noreply.github.com> Date: Sun, 21 Jan 2024 14:33:30 -0500 Subject: [PATCH 56/66] Update build.gradle --- build.gradle | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 3eb19a26..6274cb25 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -//version: 1704751096 +//version: 1705357285 /* DO NOT CHANGE THIS FILE! Also, you may replace this file at any time if there is an update available. @@ -122,6 +122,7 @@ propertyDefaultIfUnset("modrinthProjectId", "") propertyDefaultIfUnset("modrinthRelations", "") propertyDefaultIfUnset("curseForgeProjectId", "") propertyDefaultIfUnset("curseForgeRelations", "") +propertyDefaultIfUnset("versionPattern", "") propertyDefaultIfUnset("minimizeShadowedDependencies", true) propertyDefaultIfUnset("relocateShadowedDependencies", true) // Deprecated properties (kept for backwards compat) @@ -370,6 +371,7 @@ catch (Exception ignored) { // Pulls version first from the VERSION env and then git tag String identifiedVersion String versionOverride = System.getenv("VERSION") ?: null +boolean checkVersion = false try { // Produce a version based on the tag, or for branches something like 0.2.2-configurable-maven-and-extras.38+43090270b6-dirty if (versionOverride == null) { @@ -388,6 +390,8 @@ try { } } else if (isDirty) { identifiedVersion += "-${branchName}+${gitDetails.gitHash}-dirty" + } else { + checkVersion = true } } else { identifiedVersion = versionOverride @@ -409,6 +413,8 @@ ext { if (identifiedVersion == versionOverride) { out.style(Style.Failure).text('Override version to ').style(Style.Identifier).text(modVersion).style(Style.Failure).println('!\7') +} else if (checkVersion && versionPattern && !(identifiedVersion ==~ versionPattern)) { + throw new GradleException("Invalid version: '$identifiedVersion' does not match version pattern '$versionPattern'") } group = "com.github.GTNewHorizons" @@ -428,18 +434,31 @@ minecraft { for (f in replaceGradleTokenInFile.split(',')) { tagReplacementFiles.add f } + out.style(Style.Info).text('replaceGradleTokenInFile is deprecated! Consider using generateGradleTokenClass.').println() } if (gradleTokenModId) { - injectedTags.put gradleTokenModId, modId + if (replaceGradleTokenInFile) { + injectedTags.put gradleTokenModId, modId + } else { + out.style(Style.Failure).text('gradleTokenModId is deprecated! The field will no longer be generated.').println() + } } if (gradleTokenModName) { - injectedTags.put gradleTokenModName, modName + if (replaceGradleTokenInFile) { + injectedTags.put gradleTokenModName, modName + } else { + out.style(Style.Failure).text('gradleTokenModName is deprecated! The field will no longer be generated.').println() + } } if (gradleTokenVersion) { injectedTags.put gradleTokenVersion, modVersion } if (gradleTokenGroupName) { - injectedTags.put gradleTokenGroupName, modGroup + if (replaceGradleTokenInFile) { + injectedTags.put gradleTokenGroupName, modGroup + } else { + out.style(Style.Failure).text('gradleTokenGroupName is deprecated! The field will no longer be generated.').println() + } } if (enableGenericInjection.toBoolean()) { injectMissingGenerics.set(true) From aed51fbd9a87fb9abd56b060d81ee399167fd915 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 21 Jan 2024 20:35:40 +0100 Subject: [PATCH 57/66] add infusion recipe --- .../main/utils/compat/ThaumcraftHelper.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java index 34ef4b8a..036d3a26 100644 --- a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java +++ b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java @@ -33,6 +33,7 @@ import thaumcraft.api.research.ResearchCategories; import thaumcraft.api.research.ResearchItem; import thaumcraft.api.research.ResearchPage; +import thaumcraft.common.config.ConfigBlocks; public class ThaumcraftHelper implements IModHelper { @@ -292,13 +293,26 @@ private static void setupCrafting() { 'T', new ItemStack(miscResource, 1, MiscResource.VOID_INGOT.ordinal())); + ItemStack centrifuge = new ItemStack(ConfigBlocks.blockTube); + centrifuge.setItemDamage(2); apiamancersDrainer = ThaumcraftApi.addInfusionCraftingRecipe( "MB_ApiamancersDrainer", new ItemStack(Config.apiamancersDrainer), 6, - new AspectList().add(Aspect.ELDRITCH, 10).add(Aspect.EXCHANGE, 20).add(Aspect.VOID, 15), - Config.propolis.getStackForType(PropolisType.UNSTABLE), - new ItemStack[] { input, input, in2 }); + new AspectList() + .add(Aspect.MAGIC, 40) + .add(Aspect.HARVEST, 20) + .add(Aspect.EXCHANGE, 20) + .add(Aspect.ELDRITCH, 20), + new ItemStack(ConfigBlocks.blockEssentiaReservoir), + new ItemStack[] { + centrifuge, + Config.pollen.getStackForType(PollenType.UNUSUAL), + Config.pollen.getStackForType(PollenType.PHASED), + Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY), + Config.pollen.getStackForType(PollenType.UNUSUAL), + Config.pollen.getStackForType(PollenType.PHASED) + }); } private static void setupResearch() { @@ -553,7 +567,7 @@ private static void setupResearch() { 4, new ItemStack(Config.apiamancersDrainer)) .setPages(getResearchPage("MB_ApiamancersDrainer.1"), new ResearchPage(apiamancersDrainer)) - .setParentsHidden("VOIDMETAL", "ESSENTIARESERVOIR").setConcealed().registerResearchItem(); + .setParentsHidden("VOIDMETAL", "ESSENTIARESERVOIR").setParents("MB_EssenceUnstable").setConcealed().registerResearchItem(); } From a9948fcf26036746f4986e00d038e5c280833355 Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 21 Jan 2024 20:37:50 +0100 Subject: [PATCH 58/66] sa --- .../main/utils/compat/ThaumcraftHelper.java | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java index 036d3a26..4cd978cb 100644 --- a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java +++ b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java @@ -299,20 +299,14 @@ private static void setupCrafting() { "MB_ApiamancersDrainer", new ItemStack(Config.apiamancersDrainer), 6, - new AspectList() - .add(Aspect.MAGIC, 40) - .add(Aspect.HARVEST, 20) - .add(Aspect.EXCHANGE, 20) - .add(Aspect.ELDRITCH, 20), + new AspectList().add(Aspect.MAGIC, 40).add(Aspect.HARVEST, 20).add(Aspect.EXCHANGE, 20) + .add(Aspect.ELDRITCH, 20), new ItemStack(ConfigBlocks.blockEssentiaReservoir), - new ItemStack[] { - centrifuge, - Config.pollen.getStackForType(PollenType.UNUSUAL), - Config.pollen.getStackForType(PollenType.PHASED), - Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY), - Config.pollen.getStackForType(PollenType.UNUSUAL), - Config.pollen.getStackForType(PollenType.PHASED) - }); + new ItemStack[] { centrifuge, Config.pollen.getStackForType(PollenType.UNUSUAL), + Config.pollen.getStackForType(PollenType.PHASED), + Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY), + Config.pollen.getStackForType(PollenType.UNUSUAL), + Config.pollen.getStackForType(PollenType.PHASED) }); } private static void setupResearch() { @@ -567,7 +561,8 @@ private static void setupResearch() { 4, new ItemStack(Config.apiamancersDrainer)) .setPages(getResearchPage("MB_ApiamancersDrainer.1"), new ResearchPage(apiamancersDrainer)) - .setParentsHidden("VOIDMETAL", "ESSENTIARESERVOIR").setParents("MB_EssenceUnstable").setConcealed().registerResearchItem(); + .setParentsHidden("VOIDMETAL", "ESSENTIARESERVOIR").setParents("MB_EssenceUnstable") + .setConcealed().registerResearchItem(); } From b0116884f1b7b6b34788b7a82087ad7603b32fce Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 21 Jan 2024 20:47:26 +0100 Subject: [PATCH 59/66] GTu no transitive --- dependencies.gradle | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 1d10176e..1a6d1d24 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -8,7 +8,6 @@ dependencies { compileOnly('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive = false} compileOnly('com.github.GTNewHorizons:Botania:1.10.5-GTNH:api') {transitive = false} compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.45.41:dev') { transitive = false } - + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.45.41:dev') } From e2080bc5425253846dff2ddc7a99799b6e143e2d Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 21 Jan 2024 20:55:01 +0100 Subject: [PATCH 60/66] sa --- .../java/magicbees/block/BlockApiamancersDrainer.java | 3 --- .../tileentity/TileEntityApiamancersDrainerGT.java | 8 ++------ 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/magicbees/block/BlockApiamancersDrainer.java b/src/main/java/magicbees/block/BlockApiamancersDrainer.java index b4344d51..92dc09fa 100644 --- a/src/main/java/magicbees/block/BlockApiamancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApiamancersDrainer.java @@ -62,14 +62,11 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p .getAspects()[0]; ((TileEntityApiamancersDrainerCommon) tile).setAspect(tLocked); - // TODO: improve text player.addChatMessage( new ChatComponentTranslation("Producing " + tLocked.getLocalizedDescription())); } } else { ((TileEntityApiamancersDrainerCommon) tile).setAspect(null); - - // TODO: improve text player.addChatMessage(new ChatComponentTranslation("Cleared production specifier")); } world.markBlockForUpdate(x, y, z); diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java index 9cd81037..bc523084 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java @@ -32,12 +32,8 @@ public String[] getInfoData() { + e.getValue()) .collect(Collectors.joining(EnumChatFormatting.RESET + ", " + EnumChatFormatting.RESET)); - return new String[] { // - EnumChatFormatting.DARK_PURPLE + "Apiamancer's Drainer" + EnumChatFormatting.RESET, // - aspect != null ? "Attuned: " + aspect.getName() : "Not attuned", // - "Stored Essentia:", // - aspects // - }; + return new String[] { EnumChatFormatting.DARK_PURPLE + "Apiamancer's Drainer" + EnumChatFormatting.RESET, + aspect != null ? "Attuned: " + aspect.getName() : "Not attuned", "Stored Essentia:", aspects }; } @Override From 67dfeb7daadce62eb22d31e2e7d100b5afc4277a Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 21 Jan 2024 20:55:21 +0100 Subject: [PATCH 61/66] requested changes --- src/main/java/magicbees/main/Config.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 2aaffc2e..86f98805 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -346,7 +346,7 @@ private void doGeneralConfigs() { CATEGORY_GENERAL, "drainerTimeBetween", 200, - "The time in ticks between Apiamancer's Drainer essentia generation", + "The time in ticks between Apimancer's Drainer essentia generation", 1, 32767); drainerTimeBetween = p.getInt(200); @@ -354,7 +354,7 @@ private void doGeneralConfigs() { CATEGORY_GENERAL, "drainerAmount", 1, - "The amount that the Apiamancer's Drainer generates on every round", + "The amount that the Apimancer's Drainer generates on every round", 1, 32767); drainerAmount = p.getInt(1); @@ -362,7 +362,7 @@ private void doGeneralConfigs() { CATEGORY_GENERAL, "drainerCapacity", 512, - "The amount that the Apiamancer's Drainer can hold of each aspect", + "The amount that the Apimancer's Drainer can hold of each aspect", 1, 32767); drainerCapacity = p.getInt(512); From 9d2c667c3582a5c6f21bd2a59ed0a999be93c89d Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sun, 21 Jan 2024 21:01:57 +0100 Subject: [PATCH 62/66] the grand rename --- ...ainer.java => BlockApimancersDrainer.java} | 18 +++++++++--------- src/main/java/magicbees/main/Config.java | 14 +++++++------- .../main/utils/compat/ThaumcraftHelper.java | 14 +++++++------- ...=> TileEntityApimancersDrainerCommon.java} | 2 +- ...ava => TileEntityApimancersDrainerGT.java} | 4 ++-- .../assets/magicbees/lang/en_US.lang | 8 ++++---- ...sdrainer.0.png => apimancersdrainer.0.png} | Bin ...sdrainer.1.png => apimancersdrainer.1.png} | Bin ...sdrainer.2.png => apimancersdrainer.2.png} | Bin 9 files changed, 30 insertions(+), 30 deletions(-) rename src/main/java/magicbees/block/{BlockApiamancersDrainer.java => BlockApimancersDrainer.java} (85%) rename src/main/java/magicbees/tileentity/{TileEntityApiamancersDrainerCommon.java => TileEntityApimancersDrainerCommon.java} (98%) rename src/main/java/magicbees/tileentity/{TileEntityApiamancersDrainerGT.java => TileEntityApimancersDrainerGT.java} (96%) rename src/main/resources/assets/magicbees/textures/blocks/{apiamancersdrainer.0.png => apimancersdrainer.0.png} (100%) rename src/main/resources/assets/magicbees/textures/blocks/{apiamancersdrainer.1.png => apimancersdrainer.1.png} (100%) rename src/main/resources/assets/magicbees/textures/blocks/{apiamancersdrainer.2.png => apimancersdrainer.2.png} (100%) diff --git a/src/main/java/magicbees/block/BlockApiamancersDrainer.java b/src/main/java/magicbees/block/BlockApimancersDrainer.java similarity index 85% rename from src/main/java/magicbees/block/BlockApiamancersDrainer.java rename to src/main/java/magicbees/block/BlockApimancersDrainer.java index 92dc09fa..742541e6 100644 --- a/src/main/java/magicbees/block/BlockApiamancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApimancersDrainer.java @@ -15,21 +15,21 @@ import cpw.mods.fml.relauncher.SideOnly; import magicbees.main.CommonProxy; import magicbees.main.utils.TabMagicBees; -import magicbees.tileentity.TileEntityApiamancersDrainerCommon; +import magicbees.tileentity.TileEntityApimancersDrainerCommon; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.IEssentiaContainerItem; -public class BlockApiamancersDrainer extends BlockContainer { +public class BlockApimancersDrainer extends BlockContainer { @SideOnly(Side.CLIENT) private IIcon[] icons; - public static Class drainer = TileEntityApiamancersDrainerCommon.class; + public static Class drainer = TileEntityApimancersDrainerCommon.class; - public BlockApiamancersDrainer() { + public BlockApimancersDrainer() { super(Material.rock); this.setCreativeTab(TabMagicBees.tabMagicBees); - this.setBlockName("apiamancersDrainer"); + this.setBlockName("apimancersDrainer"); this.setHardness(1f); this.setResistance(1.5f); this.setHarvestLevel("pickaxe", 0); @@ -51,7 +51,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return false; } else { TileEntity tile = world.getTileEntity(x, y, z); - if (tile instanceof TileEntityApiamancersDrainerCommon) { + if (tile instanceof TileEntityApimancersDrainerCommon) { ItemStack tItemStack = player.getHeldItem(); if (tItemStack != null) { Item tItem = tItemStack.getItem(); @@ -60,13 +60,13 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p && ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()).size() > 0) { Aspect tLocked = ((IEssentiaContainerItem) tItem).getAspects(player.getHeldItem()) .getAspects()[0]; - ((TileEntityApiamancersDrainerCommon) tile).setAspect(tLocked); + ((TileEntityApimancersDrainerCommon) tile).setAspect(tLocked); player.addChatMessage( new ChatComponentTranslation("Producing " + tLocked.getLocalizedDescription())); } } else { - ((TileEntityApiamancersDrainerCommon) tile).setAspect(null); + ((TileEntityApimancersDrainerCommon) tile).setAspect(null); player.addChatMessage(new ChatComponentTranslation("Cleared production specifier")); } world.markBlockForUpdate(x, y, z); @@ -87,7 +87,7 @@ public void registerBlockIcons(IIconRegister register) { icons = new IIcon[4]; for (int i = 0; i < icons.length; i++) { - icons[i] = register.registerIcon(CommonProxy.DOMAIN + ":apiamancersdrainer." + i); + icons[i] = register.registerIcon(CommonProxy.DOMAIN + ":apimancersdrainer." + i); } } } diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 86f98805..ad97dde0 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -21,7 +21,7 @@ import forestry.api.apiculture.BeeManager; import forestry.api.storage.BackpackManager; import forestry.api.storage.EnumBackpackType; -import magicbees.block.BlockApiamancersDrainer; +import magicbees.block.BlockApimancersDrainer; import magicbees.block.BlockEffectJar; import magicbees.block.BlockEnchantedEarth; import magicbees.block.BlockHive; @@ -58,7 +58,7 @@ import magicbees.main.utils.compat.BotaniaHelper; import magicbees.main.utils.compat.ThaumcraftHelper; import magicbees.storage.BackpackDefinition; -import magicbees.tileentity.TileEntityApiamancersDrainerGT; +import magicbees.tileentity.TileEntityApimancersDrainerGT; import magicbees.tileentity.TileEntityEffectJar; import magicbees.tileentity.TileEntityMagicApiary; import magicbees.tileentity.TileEntityManaAuraProvider; @@ -118,7 +118,7 @@ public class Config { public static BlockEffectJar effectJar; public static BlockHive hive; public static BlockMagicApiary magicApiary; - public static BlockApiamancersDrainer apiamancersDrainer; + public static BlockApimancersDrainer apimancersDrainer; public static BlockManaAuraProvider manaAuraProvider; public static BlockVisAuraProvider visAuraProvider; @@ -507,10 +507,10 @@ private void setupThaumcraftBlocks() { GameRegistry.registerBlock(visAuraProvider, "visAuraProvider"); GameRegistry.registerTileEntity(TileEntityVisAuraProvider.class, "visAuraProvider"); - if (isGTLoaded) BlockApiamancersDrainer.drainer = TileEntityApiamancersDrainerGT.class; - apiamancersDrainer = new BlockApiamancersDrainer(); - GameRegistry.registerBlock(apiamancersDrainer, "apiamancersDrainer"); - GameRegistry.registerTileEntity(BlockApiamancersDrainer.drainer, "apiamancersDrainer"); + if (isGTLoaded) BlockApimancersDrainer.drainer = TileEntityApimancersDrainerGT.class; + apimancersDrainer = new BlockApimancersDrainer(); + GameRegistry.registerBlock(apimancersDrainer, "apimancersDrainer"); + GameRegistry.registerTileEntity(BlockApimancersDrainer.drainer, "apimancersDrainer"); } } diff --git a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java index 4cd978cb..70fb15f7 100644 --- a/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java +++ b/src/main/java/magicbees/main/utils/compat/ThaumcraftHelper.java @@ -86,7 +86,7 @@ public class ThaumcraftHelper implements IModHelper { private static Object visAuraProvider; private static Object voidScoop; private static Object voidGrafter; - private static InfusionRecipe apiamancersDrainer; + private static InfusionRecipe apimancersDrainer; public static boolean isActive() { return isThaumcraftPresent; @@ -295,9 +295,9 @@ private static void setupCrafting() { ItemStack centrifuge = new ItemStack(ConfigBlocks.blockTube); centrifuge.setItemDamage(2); - apiamancersDrainer = ThaumcraftApi.addInfusionCraftingRecipe( - "MB_ApiamancersDrainer", - new ItemStack(Config.apiamancersDrainer), + apimancersDrainer = ThaumcraftApi.addInfusionCraftingRecipe( + "MB_ApimancersDrainer", + new ItemStack(Config.apimancersDrainer), 6, new AspectList().add(Aspect.MAGIC, 40).add(Aspect.HARVEST, 20).add(Aspect.EXCHANGE, 20) .add(Aspect.ELDRITCH, 20), @@ -552,15 +552,15 @@ private static void setupResearch() { .setParentsHidden("VISPOWER").registerResearchItem(); new ResearchItem( - "MB_ApiamancersDrainer", + "MB_ApimancersDrainer", category, new AspectList().add(Aspect.ELDRITCH, 1).add(Aspect.HARVEST, 1).add(Aspect.MAGIC, 1) .add((Aspect) aspectTime, 1), -3, 5, 4, - new ItemStack(Config.apiamancersDrainer)) - .setPages(getResearchPage("MB_ApiamancersDrainer.1"), new ResearchPage(apiamancersDrainer)) + new ItemStack(Config.apimancersDrainer)) + .setPages(getResearchPage("MB_ApimancersDrainer.1"), new ResearchPage(apimancersDrainer)) .setParentsHidden("VOIDMETAL", "ESSENTIARESERVOIR").setParents("MB_EssenceUnstable") .setConcealed().registerResearchItem(); diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java b/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerCommon.java similarity index 98% rename from src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java rename to src/main/java/magicbees/tileentity/TileEntityApimancersDrainerCommon.java index 28da4420..30ffe914 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerCommon.java +++ b/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerCommon.java @@ -23,7 +23,7 @@ import thaumcraft.api.aspects.IAspectContainer; import thaumcraft.api.aspects.IEssentiaTransport; -public class TileEntityApiamancersDrainerCommon extends TileEntity implements IAspectContainer, IEssentiaTransport { +public class TileEntityApimancersDrainerCommon extends TileEntity implements IAspectContainer, IEssentiaTransport { public Aspect aspect; public AspectList essentia = new AspectList(); diff --git a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerGT.java similarity index 96% rename from src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java rename to src/main/java/magicbees/tileentity/TileEntityApimancersDrainerGT.java index bc523084..25ce7254 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApiamancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerGT.java @@ -14,7 +14,7 @@ import gregtech.api.metatileentity.BaseMetaTileEntity; import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_IndustrialApiary; -public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainerCommon +public class TileEntityApimancersDrainerGT extends TileEntityApimancersDrainerCommon implements IGregTechDeviceInformation { @Override @@ -32,7 +32,7 @@ public String[] getInfoData() { + e.getValue()) .collect(Collectors.joining(EnumChatFormatting.RESET + ", " + EnumChatFormatting.RESET)); - return new String[] { EnumChatFormatting.DARK_PURPLE + "Apiamancer's Drainer" + EnumChatFormatting.RESET, + return new String[] { EnumChatFormatting.DARK_PURPLE + "Apimancer's Drainer" + EnumChatFormatting.RESET, aspect != null ? "Attuned: " + aspect.getName() : "Not attuned", "Stored Essentia:", aspects }; } diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index 17b1886d..f271190f 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -38,7 +38,7 @@ item.beeRing.name=Collector's Bee Ring tile.effectJar.name=Bee Collector's Jar tile.magicApiary.name=Magic Apiary tile.visAuraProvider.name=Vis Apiary Booster -tile.apiamancersDrainer.name=Apiamancer's Drainer +tile.apimancersDrainer.name=Apimancer's Drainer tile.manaAuraProvider.name=Mana Apiary Booster tile.hive.curious.name=Curious Hive tile.hive.unusual.name=Unusual Hive @@ -685,9 +685,9 @@ tc.research_name.MB_VisAuraProvider=Vis Apiary Booster tc.research_text.MB_VisAuraProvider=Vis? What about Bis? tc.research_page.MB_VisAuraProvider.1=Infusing Unusual Pollen with vis and combining it with gold creates an unusual crystal that, when fed centivis from an aura node, creates an energizing aura that bees are naturally attracted to when attuned to the environment within a Magic Apiary.§3Aqua§0 CV will double mutation rate
§8Perditio§0 CV will halve lifespan
§6Aer§0 CV will double production rate -tc.research_name.MB_ApiamancersDrainer=Apiamancer's Drainer -tc.research_text.MB_ApiamancersDrainer=How long will your queen last? -tc.research_page.MB_ApiamancersDrainer.1=The Apiamancer's Drainer is an innovative device in the field of Apimancy, designed to extract essentia from the life force of bees. It is placed beneath an apiary, establishing a direct connection with the apiary above.
To determine the type of essentia it produces, the Drainer is attuned by tapping it with the desired essentia.
Once attuned, the Drainer converts the life energy of the queen into the selected essentia... +tc.research_name.MB_ApimancersDrainer=Apimancer's Drainer +tc.research_text.MB_ApimancersDrainer=How long will your queen last? +tc.research_page.MB_ApimancersDrainer.1=The Apimancer's Drainer is an innovative device in the field of Apimancy, designed to extract essentia from the life force of bees. It is placed beneath an apiary, establishing a direct connection with the apiary above.
To determine the type of essentia it produces, the Drainer is attuned by tapping it with the desired essentia.
Once attuned, the Drainer converts the life energy of the queen into the selected essentia... tc.research_name.MB_ScoopVoid=Void Scoop tc.research_text.MB_ScoopVoid=The dark net diff --git a/src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.0.png b/src/main/resources/assets/magicbees/textures/blocks/apimancersdrainer.0.png similarity index 100% rename from src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.0.png rename to src/main/resources/assets/magicbees/textures/blocks/apimancersdrainer.0.png diff --git a/src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.1.png b/src/main/resources/assets/magicbees/textures/blocks/apimancersdrainer.1.png similarity index 100% rename from src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.1.png rename to src/main/resources/assets/magicbees/textures/blocks/apimancersdrainer.1.png diff --git a/src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.2.png b/src/main/resources/assets/magicbees/textures/blocks/apimancersdrainer.2.png similarity index 100% rename from src/main/resources/assets/magicbees/textures/blocks/apiamancersdrainer.2.png rename to src/main/resources/assets/magicbees/textures/blocks/apimancersdrainer.2.png From fb43f46bb8545bb3fe8ec24a5a89bdd1cf75904b Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 27 Jan 2024 11:22:20 +0100 Subject: [PATCH 63/66] fix: check for gtnh coremod to determine drainer functionality --- src/main/java/magicbees/main/Config.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index ad97dde0..32fd247f 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -165,6 +165,7 @@ public class Config { // ---- Loaded mods ----------------------------------------- public static boolean isGTLoaded = Loader.isModLoaded("gregtech"); + public static boolean isGTNHCoreModLoaded = Loader.isModLoaded("gregtech") && Loader.isModLoaded("dreamcraft"); public Config(File configFile) { configuration = new Configuration(configFile); @@ -507,7 +508,7 @@ private void setupThaumcraftBlocks() { GameRegistry.registerBlock(visAuraProvider, "visAuraProvider"); GameRegistry.registerTileEntity(TileEntityVisAuraProvider.class, "visAuraProvider"); - if (isGTLoaded) BlockApimancersDrainer.drainer = TileEntityApimancersDrainerGT.class; + if (isGTNHCoreModLoaded) BlockApimancersDrainer.drainer = TileEntityApimancersDrainerGT.class; apimancersDrainer = new BlockApimancersDrainer(); GameRegistry.registerBlock(apimancersDrainer, "apimancersDrainer"); GameRegistry.registerTileEntity(BlockApimancersDrainer.drainer, "apimancersDrainer"); From a64bd5f4371cb105b9ec71d6cba0413670e97b8a Mon Sep 17 00:00:00 2001 From: Quantumlyy Date: Sat, 27 Jan 2024 11:36:09 +0100 Subject: [PATCH 64/66] check that block side is not top --- src/main/java/magicbees/block/BlockApimancersDrainer.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/magicbees/block/BlockApimancersDrainer.java b/src/main/java/magicbees/block/BlockApimancersDrainer.java index 742541e6..c14d95c9 100644 --- a/src/main/java/magicbees/block/BlockApimancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApimancersDrainer.java @@ -45,13 +45,13 @@ public TileEntity createNewTileEntity(World world, int metadata) { } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float par7, float par8, float par9) { if (world.isRemote) { return false; } else { TileEntity tile = world.getTileEntity(x, y, z); - if (tile instanceof TileEntityApimancersDrainerCommon) { + if (tile instanceof TileEntityApimancersDrainerCommon && side != 0) { ItemStack tItemStack = player.getHeldItem(); if (tItemStack != null) { Item tItem = tItemStack.getItem(); @@ -71,7 +71,9 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } world.markBlockForUpdate(x, y, z); return true; - } else return false; + } else { + return false; + } } } From 38bc8a151ce29b9594d09fa200bd2e8ab51413ec Mon Sep 17 00:00:00 2001 From: Alastors <78517796+Alastors@users.noreply.github.com> Date: Sun, 28 Jan 2024 02:38:26 -0500 Subject: [PATCH 65/66] fixing the block side --- src/main/java/magicbees/block/BlockApimancersDrainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/magicbees/block/BlockApimancersDrainer.java b/src/main/java/magicbees/block/BlockApimancersDrainer.java index c14d95c9..5e22d479 100644 --- a/src/main/java/magicbees/block/BlockApimancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApimancersDrainer.java @@ -51,7 +51,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return false; } else { TileEntity tile = world.getTileEntity(x, y, z); - if (tile instanceof TileEntityApimancersDrainerCommon && side != 0) { + if (tile instanceof TileEntityApimancersDrainerCommon && side != 1) { ItemStack tItemStack = player.getHeldItem(); if (tItemStack != null) { Item tItem = tItemStack.getItem(); From 99c3cb68eb60c2683f66796c1b1bc3e9aa633789 Mon Sep 17 00:00:00 2001 From: Alastors <78517796+Alastors@users.noreply.github.com> Date: Sun, 28 Jan 2024 02:49:57 -0500 Subject: [PATCH 66/66] minor cleanup --- .../magicbees/bees/MagicApiaryInventory.java | 26 +++++-------------- .../block/BlockApimancersDrainer.java | 4 +-- .../TileEntityApimancersDrainerCommon.java | 19 +++----------- .../TileEntityApimancersDrainerGT.java | 9 ------- 4 files changed, 10 insertions(+), 48 deletions(-) diff --git a/src/main/java/magicbees/bees/MagicApiaryInventory.java b/src/main/java/magicbees/bees/MagicApiaryInventory.java index e8cb7c6f..4ac5b881 100644 --- a/src/main/java/magicbees/bees/MagicApiaryInventory.java +++ b/src/main/java/magicbees/bees/MagicApiaryInventory.java @@ -61,9 +61,8 @@ public boolean addProduct(ItemStack product, boolean all) { if (all) { return countAdded == product.stackSize; - } else { - return countAdded > 0; } + return countAdded > 0; } public int getSizeInventory() { @@ -76,7 +75,6 @@ public ItemStack getStackInSlot(int i) { public void setInventorySlotContents(int i, ItemStack itemStack) { items[i] = itemStack; - if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } @@ -85,13 +83,12 @@ public void setInventorySlotContents(int i, ItemStack itemStack) { public int[] getAccessibleSlotsFromSide(int side) { if (side == 0 || side == 1) { return new int[] { SLOT_QUEEN, SLOT_DRONE }; - } else { - int[] slots = new int[SLOT_PRODUCTS_COUNT]; - for (int i = 0, slot = SLOT_PRODUCTS_START; i < SLOT_PRODUCTS_COUNT; ++i, ++slot) { - slots[i] = slot; - } - return slots; } + int[] slots = new int[SLOT_PRODUCTS_COUNT]; + for (int i = 0, slot = SLOT_PRODUCTS_START; i < SLOT_PRODUCTS_COUNT; ++i, ++slot) { + slots[i] = slot; + } + return slots; } public boolean canInsertItem(int slot, ItemStack itemStack, int side) { @@ -113,7 +110,6 @@ public int getInventoryStackLimit() { public Collection getFrames() { Collection hiveFrames = new ArrayList(SLOT_FRAME_COUNT); - for (int i = SLOT_FRAME_START; i < SLOT_FRAME_START + SLOT_FRAME_COUNT; i++) { ItemStack stackInSlot = magicApiary.getStackInSlot(i); if (stackInSlot == null) { @@ -125,42 +121,34 @@ public Collection getFrames() { hiveFrames.add((IHiveFrame) itemInSlot); } } - return hiveFrames; } public void wearOutFrames(IBeeHousing beeHousing, int amount) { IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(magicApiary.getWorldObj()); int wear = Math.round(amount * beekeepingMode.getWearModifier()); - for (int i = MagicApiaryInventory.SLOT_FRAME_START; i < MagicApiaryInventory.SLOT_FRAME_START + MagicApiaryInventory.SLOT_FRAME_COUNT; i++) { ItemStack hiveFrameStack = magicApiary.getStackInSlot(i); if (hiveFrameStack == null) { continue; } - Item hiveFrameItem = hiveFrameStack.getItem(); if (!(hiveFrameItem instanceof IHiveFrame)) { continue; } - IHiveFrame hiveFrame = (IHiveFrame) hiveFrameItem; - ItemStack queenStack = magicApiary.getBeeInventory().getQueen(); IBee queen = BeeManager.beeRoot.getMember(queenStack); ItemStack usedFrame = hiveFrame.frameUsed(magicApiary, hiveFrameStack, queen, wear); - magicApiary.setInventorySlotContents(i, usedFrame); } } public void writeToNBT(NBTTagCompound compound) { NBTTagList itemsNBT = new NBTTagList(); - for (int i = 0; i < items.length; i++) { ItemStack itemStack = items[i]; - if (itemStack != null) { NBTTagCompound item = new NBTTagCompound(); item.setByte("Slot", (byte) i); @@ -173,11 +161,9 @@ public void writeToNBT(NBTTagCompound compound) { public void readFromNBT(NBTTagCompound compound) { NBTTagList items = compound.getTagList("Items", Constants.NBT.TAG_COMPOUND); - for (int i = 0; i < items.tagCount(); i++) { NBTTagCompound item = items.getCompoundTagAt(i); int slot = item.getByte("Slot"); - if (slot >= 0 && slot < getSizeInventory()) { setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(item)); } diff --git a/src/main/java/magicbees/block/BlockApimancersDrainer.java b/src/main/java/magicbees/block/BlockApimancersDrainer.java index 5e22d479..2c42ff1f 100644 --- a/src/main/java/magicbees/block/BlockApimancersDrainer.java +++ b/src/main/java/magicbees/block/BlockApimancersDrainer.java @@ -71,9 +71,8 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } world.markBlockForUpdate(x, y, z); return true; - } else { - return false; } + return false; } } @@ -87,7 +86,6 @@ public IIcon getIcon(int side, int meta) { @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { icons = new IIcon[4]; - for (int i = 0; i < icons.length; i++) { icons[i] = register.registerIcon(CommonProxy.DOMAIN + ":apimancersdrainer." + i); } diff --git a/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerCommon.java b/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerCommon.java index 30ffe914..5692f1e6 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerCommon.java +++ b/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerCommon.java @@ -51,21 +51,16 @@ public void updateEntity() { // This performs all the checks to see if the bee is a living queen and if the species conditions // are met. if (!canWork(beeHousing, above)) return; - // The beeRoot.isMember call will treat null the same as EnumBeeType.NONE which leads getSpecies to // return null. ItemStack queenStack = getQueen(beeHousing, above); IAlleleBeeSpecies queenSpecies = BeeGenome.getSpecies(queenStack); if (queenSpecies == null) return; - if (BeeManager.beeRoot.getType(queenStack) != EnumBeeType.QUEEN) return; - if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) { IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing); IBee queen = BeeManager.beeRoot.getMember(queenStack); - int amount = Config.drainerAmount * getProductionMultiplier(modifier, queen, above); - addToContainer(aspect, amount); drainQueen(beeHousing, modifier, queen); } @@ -93,14 +88,12 @@ protected int getProductionMultiplier(IBeeModifier modifier, IBee queen, TileEnt IBeeGenome queenGenome = queen.getGenome(); float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F); float minimum = Math.max(productionMultiplier, 1.0F); - return (int) Math.ceil(minimum); } private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) { float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f); queen.age(housing.getWorld(), lifespanModifier); - // Write the changed queen back into the item stack. NBTTagCompound nbttagcompound = new NBTTagCompound(); queen.writeToNBT(nbttagcompound); @@ -125,13 +118,11 @@ public boolean doesContainerAccept(Aspect tag) { @Override public int addToContainer(Aspect tag, int am) { int toAdd = Math.min(maxAmount - essentia.visSize(), am); - if (aspect.equals(tag) && toAdd > 0) { essentia.add(aspect, toAdd); markDirty(); return am - toAdd; } - markDirty(); return am; } @@ -211,14 +202,11 @@ public int takeEssentia(Aspect aspect, int amount, ForgeDirection face) { int total = this.essentia.getAmount(aspect); this.essentia.reduce(aspect, total); return total; - } else { - this.essentia.reduce(aspect, amount); - return amount; } - - } else { - return 0; + this.essentia.reduce(aspect, amount); + return amount; } + return 0; } @Override @@ -274,7 +262,6 @@ public void writeToNBT(NBTTagCompound compound) { @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); - this.essentia.readFromNBT(compound); if (this.essentia.visSize() > this.maxAmount) { this.essentia = new AspectList(); diff --git a/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerGT.java b/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerGT.java index 25ce7254..373da1c3 100644 --- a/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerGT.java +++ b/src/main/java/magicbees/tileentity/TileEntityApimancersDrainerGT.java @@ -40,13 +40,10 @@ public String[] getInfoData() { protected IBeeHousing beeHousing(TileEntity above) { IBeeHousing regularCheck = super.beeHousing(above); if (regularCheck != null) return regularCheck; - BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(above); - if (GTMetaTileEntity != null) { IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity(); if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; - return (IBeeHousing) underlyingMetaTileEntity; } @@ -56,7 +53,6 @@ protected IBeeHousing beeHousing(TileEntity above) { @Override protected boolean canWork(IBeeHousing beeHousing, TileEntity te) { BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te); - return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : super.canWork(beeHousing, te); } @@ -64,7 +60,6 @@ protected boolean canWork(IBeeHousing beeHousing, TileEntity te) { protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) { BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te); GT_MetaTileEntity_IndustrialApiary industrialApiary = getGTIndustrialApiary(GTMetaTileEntity); - return industrialApiary != null ? industrialApiary.getUsedQueen() : super.getQueen(beeHousing, te); } @@ -72,9 +67,7 @@ protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) { protected int getProductionMultiplier(IBeeModifier modifier, IBee queen, TileEntity te) { BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te); GT_MetaTileEntity_IndustrialApiary industrialApiary = getGTIndustrialApiary(GTMetaTileEntity); - int housingProductionMultiplier = super.getProductionMultiplier(modifier, queen, te); - return industrialApiary != null ? housingProductionMultiplier * (int) Math.ceil(Math.sqrt(industrialApiary.mSpeed)) : housingProductionMultiplier; @@ -82,7 +75,6 @@ protected int getProductionMultiplier(IBeeModifier modifier, IBee queen, TileEnt private BaseMetaTileEntity getGTTileEntity(TileEntity te) { boolean isGTMetaTileEntity = te instanceof BaseMetaTileEntity; - return isGTMetaTileEntity ? (BaseMetaTileEntity) te : null; } @@ -90,7 +82,6 @@ private GT_MetaTileEntity_IndustrialApiary getGTIndustrialApiary(BaseMetaTileEnt if (bmte != null) { IMetaTileEntity underlyingMetaTileEntity = bmte.getMetaTileEntity(); if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null; - return (GT_MetaTileEntity_IndustrialApiary) underlyingMetaTileEntity; } return null;