Large changes to allow the Electrical Furnace to be upgraded

This commit is contained in:
modmuss50 2017-10-04 13:35:58 +01:00
parent db636be12c
commit 4e536718a3
2 changed files with 19 additions and 20 deletions

View file

@ -39,8 +39,10 @@ import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import reborncore.api.recipe.IRecipeCrafterProvider;
import reborncore.api.tile.IUpgrade; import reborncore.api.tile.IUpgrade;
import reborncore.common.powerSystem.TilePowerAcceptor; import reborncore.common.powerSystem.TilePowerAcceptor;
import reborncore.common.recipes.IUpgradeHandler;
import reborncore.common.recipes.RecipeCrafter; import reborncore.common.recipes.RecipeCrafter;
import reborncore.common.tile.IMachineSlotProvider; import reborncore.common.tile.IMachineSlotProvider;
import reborncore.common.tile.TileLegacyMachineBase; import reborncore.common.tile.TileLegacyMachineBase;
@ -121,21 +123,20 @@ public class ItemUpgrades extends ItemTR implements IUpgrade {
@Nonnull @Nonnull
TileLegacyMachineBase machineBase, TileLegacyMachineBase machineBase,
@Nullable @Nullable
RecipeCrafter crafter, IUpgradeHandler handler,
@Nonnull @Nonnull
ItemStack stack) { ItemStack stack) {
if (stack.getItemDamage() == 0) { if (stack.getItemDamage() == 0) {
if (crafter != null) { handler.addSpeedMulti(0.25);
crafter.addSpeedMulti(0.25); handler.addPowerMulti(0.5);
crafter.addPowerMulti(0.5);
}
} else if (stack.getItemDamage() == 4) { } else if (stack.getItemDamage() == 4) {
EnumFacing dir = getFacing(stack); EnumFacing dir = getFacing(stack);
TileEntity tileEntity = machineBase.getWorld().getTileEntity(machineBase.getPos().offset(dir)); TileEntity tileEntity = machineBase.getWorld().getTileEntity(machineBase.getPos().offset(dir));
if (tileEntity instanceof IInventory) { if (tileEntity instanceof IInventory) {
if (crafter != null) { if (machineBase instanceof IRecipeCrafterProvider) {
RecipeCrafter crafter = ((IRecipeCrafterProvider) machineBase).getRecipeCrafter();
for (Integer outSlot : crafter.outputSlots) { for (Integer outSlot : crafter.outputSlots) {
ItemStack outputStack = crafter.inventory.getStackInSlot(outSlot); ItemStack outputStack = crafter.inventory.getStackInSlot(outSlot);
if (!outputStack.isEmpty()) { if (!outputStack.isEmpty()) {
@ -181,8 +182,6 @@ public class ItemUpgrades extends ItemTR implements IUpgrade {
if (tileEntity != null && tileEntity.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, dir.getOpposite())) { if (tileEntity != null && tileEntity.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, dir.getOpposite())) {
IItemHandler itemHandler = tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, dir.getOpposite()); IItemHandler itemHandler = tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, dir.getOpposite());
for (int i = 0; i < itemHandler.getSlots(); i++) { for (int i = 0; i < itemHandler.getSlots(); i++) {
ItemStack stack1 = itemHandler.getStackInSlot(i);
if (crafter == null || crafter.isStackValidInput(stack1)) {
ItemStack extractedStack = itemHandler.extractItem(i, 1, true); ItemStack extractedStack = itemHandler.extractItem(i, 1, true);
int amount = InventoryHelper.testInventoryInsertion(machineBase, extractedStack, null); int amount = InventoryHelper.testInventoryInsertion(machineBase, extractedStack, null);
if (amount > 0) { if (amount > 0) {
@ -190,7 +189,7 @@ public class ItemUpgrades extends ItemTR implements IUpgrade {
extractedStack.setCount(1); extractedStack.setCount(1);
InventoryHelper.insertItemIntoInventory(machineBase, extractedStack); InventoryHelper.insertItemIntoInventory(machineBase, extractedStack);
} }
}
} }
} }

View file

@ -30,8 +30,8 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import reborncore.api.tile.IInventoryProvider;
import reborncore.api.IToolDrop; import reborncore.api.IToolDrop;
import reborncore.api.tile.IInventoryProvider;
import reborncore.common.blocks.BlockMachineBase; import reborncore.common.blocks.BlockMachineBase;
import reborncore.common.powerSystem.TilePowerAcceptor; import reborncore.common.powerSystem.TilePowerAcceptor;
import reborncore.common.tile.IMachineSlotProvider; import reborncore.common.tile.IMachineSlotProvider;
@ -74,9 +74,9 @@ public class TileElectricFurnace extends TilePowerAcceptor
this.progress++; this.progress++;
if (this.progress % 10 == 0) { if (this.progress % 10 == 0) {
this.useEnergy(this.cost); this.useEnergy(getEuPerTick(this.cost));
} }
if (this.progress >= this.fuelScale) { if (this.progress >= Math.max((int) (fuelScale * (1.0 - getSpeedMultiplier())), 1)) {
this.progress = 0; this.progress = 0;
this.cookItems(); this.cookItems();
updateInventory = true; updateInventory = true;
@ -127,7 +127,7 @@ public class TileElectricFurnace extends TilePowerAcceptor
} }
public boolean isBurning() { public boolean isBurning() {
return this.getEnergy() > this.cost; return this.getEnergy() > getEuPerTick(this.cost);
} }
public ItemStack getResultFor(final ItemStack stack) { public ItemStack getResultFor(final ItemStack stack) {
@ -245,6 +245,6 @@ public class TileElectricFurnace extends TilePowerAcceptor
@Override @Override
public boolean canBeUpgraded() { public boolean canBeUpgraded() {
return false; return true;
} }
} }