Compare commits

..
13 Commits
Author SHA1 Message Date
mezz 4708ba94a8 Fix #877 TileStairs NullPointerException 2015-10-08 18:06:23 -07:00
mezz 141a1493a8 Bump version to 3.6.11 2015-10-06 21:29:45 -07:00
mezz b6c93ef188 Fix #870 Analyzer turns pollen into saplings
(cherry picked from commit 01245f32c5)

Conflicts:
	src/main/java/forestry/core/gadgets/TileAnalyzer.java
2015-10-06 21:29:28 -07:00
mezz e0fc9cbb64 Bump version to 3.6.10 2015-10-03 00:27:05 -07:00
mezz e9e48cea77 Fix #861 Worktable client crash 2015-10-03 00:27:01 -07:00
mezz 27b9b7bc57 Fix Carpenter output Dupe bug 2015-09-26 23:06:56 -07:00
Nirek-K 06b1f9fabf Allow Biogas Engine fuel tank to be drained externally.
(cherry picked from commit 81d2c1971c)
2015-09-26 19:51:33 -07:00
Nirek-K b00f92ab76 Fix #847 TradeStation not outputting items to automation (also fix insertion filtering)
(cherry picked from commit 9478ffb7c1)
2015-09-26 14:45:04 -07:00
mezz 83a41d41d3 Bump version to 3.6.8 2015-09-24 01:47:11 -07:00
Nirek-K a47fab4579 Make plantball value slightly less terrible (equal to 9 wheat, so 'slightly' better to combine wheat, still worse for things like saplings)
(cherry picked from commit 31bd1e82fd)
2015-09-24 01:46:48 -07:00
Nirek-K 07389fe1dc Fix #829 IC2 plantballs not working in fermenter
(cherry picked from commit b56a299f63)
2015-09-24 01:46:42 -07:00
mezz b276c5bb38 Fix #750 Worktable not working properly with GT Tools
(cherry picked from commit 37dd0efee2)
2015-09-24 01:09:19 -07:00
mezz b630540a26 Fix #834 Fix machine fluid handling for IFluidContainerItem
(cherry picked from commit f49bcfd020)
2015-09-22 23:20:04 -07:00
11 changed files with 86 additions and 90 deletions

No files matched your search

+1 -1
View File
@@ -2,4 +2,4 @@ mcversion=1.7.10
forgeversion=10.13.3.1370-1.7.10
version_major=3
version_minor=6
version_patch=6
version_patch=11
@@ -122,7 +122,7 @@ public class BlockArbStairs extends BlockStairs {
TileStairs stairs = getStairTile(world, x, y, z);
NBTTagCompound nbttagcompound = new NBTTagCompound();
if (stairs == null || stairs.getWoodType() == null) {
if (stairs == null) {
return nbttagcompound;
}
@@ -141,7 +141,7 @@ public class BlockArbStairs extends BlockStairs {
@Override
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
TileStairs stairs = getStairTile(world, x, y, z);
if (stairs != null && stairs.getWoodType() != null) {
if (stairs != null) {
return stairs.getWoodType().getPlankIcon();
} else {
return WoodType.LARCH.getPlankIcon();
@@ -10,6 +10,7 @@
******************************************************************************/
package forestry.arboriculture.gadgets;
import javax.annotation.Nonnull;
import java.io.IOException;
import net.minecraft.nbt.NBTTagCompound;
@@ -25,13 +26,15 @@ import forestry.core.proxy.Proxies;
public class TileStairs extends TileEntity implements IStreamable {
private WoodType woodType;
@Nonnull
private WoodType woodType = WoodType.LARCH;
@Nonnull
public WoodType getWoodType() {
return this.woodType;
}
public void setWoodType(WoodType woodType) {
public void setWoodType(@Nonnull WoodType woodType) {
this.woodType = woodType;
sendNetworkUpdate();
}
@@ -49,10 +52,7 @@ public class TileStairs extends TileEntity implements IStreamable {
@Override
public void writeToNBT(NBTTagCompound nbttagcompound) {
super.writeToNBT(nbttagcompound);
if (woodType != null) {
nbttagcompound.setShort("WT", (short) woodType.ordinal());
}
nbttagcompound.setShort("WT", (short) woodType.ordinal());
}
/* UPDATING */
@@ -29,7 +29,7 @@ import net.minecraftforge.fluids.IFluidBlock;
import net.minecraftforge.fluids.IFluidContainerItem;
import net.minecraftforge.fluids.IFluidHandler;
import forestry.core.fluids.tanks.StandardTank;
import forestry.core.config.Defaults;
import forestry.core.inventory.InvTools;
import forestry.core.utils.StackUtils;
@@ -103,36 +103,6 @@ public final class FluidHelper {
return false;
}
public static void processContainers(StandardTank tank, IInventory inv, int inputSlot, int outputSlot) {
processContainers(tank, inv, inputSlot, outputSlot, tank.getFluidType(), true, true);
}
public static void processContainers(StandardTank tank, IInventory inv, int inputSlot, int outputSlot, Fluid fluidToFill, boolean processFilled, boolean processEmpty) {
TankManager tankManger = new TankManager();
tankManger.add(tank);
processContainers(tankManger, inv, inputSlot, outputSlot, fluidToFill, processFilled, processEmpty);
}
public static void processContainers(TankManager tank, IInventory inv, int inputSlot, int outputSlot, Fluid fluidToFill) {
processContainers(tank, inv, inputSlot, outputSlot, fluidToFill, true, true);
}
public static void processContainers(IFluidHandler fluidHandler, IInventory inv, int inputSlot, int outputSlot, Fluid fluidToFill, boolean processFilled, boolean processEmpty) {
ItemStack input = inv.getStackInSlot(inputSlot);
if (input == null) {
return;
}
if (processFilled && drainContainers(fluidHandler, inv, inputSlot, outputSlot)) {
return;
}
if (processEmpty && fluidToFill != null) {
fillContainers(fluidHandler, inv, inputSlot, outputSlot, fluidToFill);
}
}
public static boolean fillContainers(IFluidHandler fluidHandler, IInventory inv, int inputSlot, int outputSlot, Fluid fluidToFill) {
return fillContainers(fluidHandler, inv, inputSlot, outputSlot, fluidToFill, true);
}
@@ -161,10 +131,10 @@ public final class FluidHelper {
}
public static boolean drainContainers(IFluidHandler fluidHandler, IInventory inv, int slot) {
return drainContainers(fluidHandler, inv, slot, slot);
return drainContainers(fluidHandler, inv, slot, slot, Defaults.BUCKET_VOLUME);
}
public static boolean drainContainers(IFluidHandler fluidHandler, IInventory inv, int inputSlot, int outputSlot) {
public static boolean drainContainers(IFluidHandler fluidHandler, IInventory inv, int inputSlot, int outputSlot, int maxAmount) {
ItemStack input = inv.getStackInSlot(inputSlot);
ItemStack output = inv.getStackInSlot(outputSlot);
@@ -176,36 +146,39 @@ public final class FluidHelper {
if (fluidInContainer == null) {
return false;
}
if (fluidInContainer.amount > maxAmount) {
fluidInContainer.amount = maxAmount;
}
int used = fluidHandler.fill(ForgeDirection.UNKNOWN, fluidInContainer, false);
if (used < fluidInContainer.amount) {
ItemStack drainedItem = getDrainedContainer(input, used);
if (ItemStack.areItemStacksEqual(input, drainedItem)) {
return false;
}
ItemStack emptyItem = getEmptyContainer(input);
if (output != null && emptyItem != null) {
if (output != null && drainedItem != null) {
if (outputSlot == inputSlot) {
if (input.stackSize > 1) {
return false;
}
} else if (!StackUtils.isIdenticalItem(output, emptyItem)) {
} else if (!StackUtils.isIdenticalItem(output, drainedItem)) {
return false;
} else if (output.stackSize + emptyItem.stackSize > output.getMaxStackSize()) {
} else if (output.stackSize + drainedItem.stackSize > output.getMaxStackSize()) {
return false;
}
}
fluidHandler.fill(ForgeDirection.UNKNOWN, fluidInContainer, true);
if (emptyItem != null) {
if (drainedItem != null) {
if (outputSlot == inputSlot) {
inv.setInventorySlotContents(outputSlot, emptyItem);
inv.setInventorySlotContents(outputSlot, drainedItem);
return true;
}
if (output == null) {
inv.setInventorySlotContents(outputSlot, emptyItem);
inv.setInventorySlotContents(outputSlot, drainedItem);
} else {
output.stackSize++;
}
@@ -269,15 +242,6 @@ public final class FluidHelper {
return false;
}
public static ItemStack getEmptyContainer(ItemStack container) {
Item item = container.getItem();
if (item == null) {
return null;
}
return item.getContainerItem(container);
}
public static ItemStack getDrainedContainer(ItemStack container, int drainAmount) {
if (container == null) {
return null;
@@ -288,15 +252,20 @@ public final class FluidHelper {
}
Item item = container.getItem();
if (item instanceof IFluidContainerItem) {
if (item == null) {
return null;
} else if (item instanceof IFluidContainerItem) {
ItemStack drained = container.copy();
drained.stackSize = 1;
IFluidContainerItem containerItem = (IFluidContainerItem) item;
containerItem.drain(drained, drainAmount, true);
return drained;
} else {
if (drainAmount < Defaults.BUCKET_VOLUME) {
return container;
}
return item.getContainerItem(container);
}
return getEmptyContainer(container);
}
public static ItemStack getFilledContainer(Fluid fluid, ItemStack empty) {
+14 -4
View File
@@ -51,6 +51,8 @@ import forestry.core.network.PacketItemStackDisplay;
import forestry.core.proxy.Proxies;
import forestry.core.utils.GeneticsUtil;
import forestry.core.utils.GuiUtil;
import forestry.plugins.PluginArboriculture;
import forestry.plugins.PluginManager;
public class TileAnalyzer extends TilePowered implements ISidedInventory, ILiquidTankContainer, IItemStackDisplay {
@@ -159,7 +161,7 @@ public class TileAnalyzer extends TilePowered implements ISidedInventory, ILiqui
}
}
// Look for bees in input slots.
// Look for specimens in input slots.
IInvSlot slot = getInputSlot();
boolean noInput = (slot == null);
@@ -169,11 +171,19 @@ public class TileAnalyzer extends TilePowered implements ISidedInventory, ILiqui
}
ItemStack inputStack = slot.getStackInSlot();
ItemStack ersatz = GeneticsUtil.convertSaplingToGeneticEquivalent(inputStack);
if (ersatz != null) {
inputStack = ersatz;
if (PluginManager.Module.ARBORICULTURE.isEnabled() && !PluginArboriculture.treeInterface.isMember(inputStack)) {
ItemStack ersatz = GeneticsUtil.convertSaplingToGeneticEquivalent(inputStack);
if (ersatz != null) {
inputStack = ersatz;
}
}
IIndividual individual = AlleleManager.alleleRegistry.getIndividual(inputStack);
if (individual == null) {
return false;
}
if (!individual.isAnalyzed()) {
boolean hasHoney = resourceTank.getFluidAmount() >= HONEY_REQUIRED;
setErrorCondition(!hasHoney, EnumErrorCode.NORESOURCE);
@@ -1102,12 +1102,14 @@ public abstract class InvTools {
}
public static boolean tryAddStack(IInventory inventory, ItemStack stack, int startSlot, int slots, boolean all, boolean doAdd) {
int added = addStack(inventory, stack, startSlot, slots, doAdd);
if (all) {
return added == stack.stackSize;
} else {
return added > 0;
int added = addStack(inventory, stack, startSlot, slots, false);
boolean success = all ? (added == stack.stackSize) : (added > 0);
if (success && doAdd) {
addStack(inventory, stack, startSlot, slots, true);
}
return success;
}
public static int addStack(IInventory inventory, ItemStack stack, boolean doAdd) {
@@ -268,6 +268,10 @@ public class StackUtils {
return false;
}
if (craftingTools && isCraftingTool(base) && base.getItem() == comparison.getItem()) {
return true;
}
if (base.hasTagCompound() && !base.stackTagCompound.hasNoTags()) {
if (!ItemStack.areItemStacksEqual(base, comparison)) {
return false;
@@ -294,21 +298,22 @@ public class StackUtils {
}
}
if (craftingTools) {
return isThisCraftingTool(base, comparison);
}
return false;
}
public static boolean isCraftingTool(ItemStack itemstack) {
return itemstack.getItem().hasContainerItem(itemstack)
&& itemstack.getItem().isDamageable()
&& !itemstack.getItem().doesContainerItemLeaveCraftingGrid(itemstack);
}
Item item = itemstack.getItem();
if (item == null) {
return false;
}
public static boolean isThisCraftingTool(ItemStack phantom, ItemStack actual) {
return isCraftingTool(phantom) && phantom.getItem() == actual.getItem();
if (item.hasContainerItem(itemstack)) {
if (item.isDamageable() || itemstack.hasTagCompound()) {
return !item.doesContainerItemLeaveCraftingGrid(itemstack);
}
}
return false;
}
public static void stowContainerItem(ItemStack itemstack, IInventory stowing, int slotIndex, EntityPlayer player) {
@@ -68,7 +68,7 @@ public class EngineBronze extends Engine implements ISidedInventory, ILiquidTank
setInternalInventory(new EngineBronzeInventoryAdapter(this));
fuelTank = new FilteredTank(Defaults.ENGINE_TANK_CAPACITY, FuelManager.bronzeEngineFuel.keySet());
fuelTank.tankMode = StandardTank.TankMode.INPUT;
fuelTank.tankMode = StandardTank.TankMode.DEFAULT;
heatingTank = new FilteredTank(Defaults.ENGINE_TANK_CAPACITY, FluidRegistry.LAVA);
heatingTank.tankMode = StandardTank.TankMode.INPUT;
this.tankManager = new TankManager(fuelTank, heatingTank);
@@ -177,11 +177,14 @@ public class TileWorktable extends TileBase implements ICrafterWorktable {
ItemStack[] set = InvTools.getStacks(currentRecipe.getMatrix(), SLOT_CRAFTING_1, SLOT_CRAFTING_COUNT);
ItemStack[] removed = InvTools.removeSets(this, 1, set, SLOT_INVENTORY_1, SLOT_INVENTORY_COUNT, player, false, true, true);
if (removed == null) {
return false;
}
for (int i = 0; i < removed.length; i++) {
craftingInventory.setInventorySlotContents(i, removed[i]);
}
return removed != null;
return true;
}
@Override
@@ -58,6 +58,9 @@ public class TradeStation extends WorldSavedData implements ITradeStation, IInve
for (int i = SLOT_STAMPS_1; i < SLOT_STAMPS_1 + SLOT_STAMPS_COUNT; i++) {
slots.add(i);
}
for (int i = SLOT_RECEIVE_BUFFER; i < SLOT_RECEIVE_BUFFER + SLOT_RECEIVE_BUFFER_COUNT; i++) {
slots.add(i);
}
for (int i = SLOT_SEND_BUFFER; i < SLOT_SEND_BUFFER + SLOT_SEND_BUFFER_COUNT; i++) {
slots.add(i);
}
@@ -95,6 +98,10 @@ public class TradeStation extends WorldSavedData implements ITradeStation, IInve
return false;
}
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack) {
return canSlotAccept(i, itemstack);
}
}
// / CONSTANTS
@@ -275,11 +275,11 @@ public class PluginIC2 extends ForestryPlugin {
}
}
if (plantBall != null && compressedPlantBall != null) {
RecipeUtil.injectLeveledRecipe(plantBall, GameMode.getGameMode().getIntegerSetting("fermenter.yield.wheat") * 4, Fluids.BIOMASS);
RecipeUtil.injectLeveledRecipe(compressedPlantBall, GameMode.getGameMode().getIntegerSetting("fermenter.yield.wheat") * 5, Fluids.BIOMASS);
} else {
Proxies.log.fine("No IC2 plantballs found.");
if (plantBall != null) {
RecipeUtil.injectLeveledRecipe(plantBall, GameMode.getGameMode().getIntegerSetting("fermenter.yield.wheat") * 9, Fluids.BIOMASS);
}
if (compressedPlantBall != null) {
RecipeUtil.injectLeveledRecipe(compressedPlantBall, GameMode.getGameMode().getIntegerSetting("fermenter.yield.wheat") * 9, Fluids.BIOMASS);
}
if (resin != null) {