Compare commits

...
3 Commits
Author SHA1 Message Date
mezz 98e506cc4a Close #1269 Buff Peat balance vs Charcoal 2016-08-03 03:15:48 -07:00
mezz ecfb11c096 Encapsulate fields of fuels in the API 2016-08-03 02:52:18 -07:00
mezz 6b59736ffe Fix #1369 Add button click noise to various buttons 2016-08-03 02:36:28 -07:00
27 changed files with 196 additions and 110 deletions

No files matched your search

+1 -1
View File
@@ -8,4 +8,4 @@ ic2_version=2.6.15-ex110
version_major=5
version_minor=2
version_patch=6
version_patch=7
@@ -8,22 +8,10 @@ package forestry.api.fuels;
import net.minecraftforge.fluids.Fluid;
public class EngineBronzeFuel {
/**
* Item that is valid fuel for a biogas engine.
*/
public final Fluid liquid;
/**
* Power produced by this fuel per work cycle of the engine.
*/
public final int powerPerCycle;
/**
* How many work cycles a single "stack" of this type lasts.
*/
public final int burnDuration;
/**
* By how much the normal heat dissipation rate of 1 is multiplied when using this fuel type.
*/
public final int dissipationMultiplier;
private final Fluid liquid;
private final int powerPerCycle;
private final int burnDuration;
private final int dissipationMultiplier;
public EngineBronzeFuel(Fluid liquid, int powerPerCycle, int burnDuration, int dissipationMultiplier) {
this.liquid = liquid;
@@ -31,4 +19,32 @@ public class EngineBronzeFuel {
this.burnDuration = burnDuration;
this.dissipationMultiplier = dissipationMultiplier;
}
/**
* Item that is valid fuel for a biogas engine.
*/
public Fluid getLiquid() {
return liquid;
}
/**
* Power produced by this fuel per work cycle of the engine.
*/
public int getPowerPerCycle() {
return powerPerCycle;
}
/**
* How many work cycles a single "stack" of this type lasts.
*/
public int getBurnDuration() {
return burnDuration;
}
/**
* By how much the normal heat dissipation rate of 1 is multiplied when using this fuel type.
*/
public int getDissipationMultiplier() {
return dissipationMultiplier;
}
}
@@ -9,18 +9,9 @@ import net.minecraft.item.ItemStack;
public class EngineCopperFuel {
/**
* Item that is valid fuel for a peat-fired engine.
*/
public final ItemStack fuel;
/**
* Power produced by this fuel per work cycle.
*/
public final int powerPerCycle;
/**
* Amount of work cycles this item lasts before being consumed.
*/
public final int burnDuration;
private final ItemStack fuel;
private final int powerPerCycle;
private final int burnDuration;
public EngineCopperFuel(ItemStack fuel, int powerPerCycle, int burnDuration) {
this.fuel = fuel;
@@ -28,4 +19,24 @@ public class EngineCopperFuel {
this.burnDuration = burnDuration;
}
/**
* Item that is valid fuel for a peat-fired engine.
*/
public ItemStack getFuel() {
return fuel;
}
/**
* Power produced by this fuel per work cycle.
*/
public int getPowerPerCycle() {
return powerPerCycle;
}
/**
* Amount of work cycles this item lasts before being consumed.
*/
public int getBurnDuration() {
return burnDuration;
}
}
@@ -8,22 +8,34 @@ package forestry.api.fuels;
import net.minecraft.item.ItemStack;
public class FermenterFuel {
/**
* Item that is a valid fuel for the fermenter (i.e. fertilizer).
*/
public final ItemStack item;
/**
* How much is fermeted per work cycle, i.e. how much biomass is produced per cycle.
*/
public final int fermentPerCycle;
/**
* Amount of work cycles a single item of this fuel lasts before expiring.
*/
public final int burnDuration;
private final ItemStack item;
private final int fermentPerCycle;
private final int burnDuration;
public FermenterFuel(ItemStack item, int fermentPerCycle, int burnDuration) {
this.item = item;
this.fermentPerCycle = fermentPerCycle;
this.burnDuration = burnDuration;
}
/**
* Item that is a valid fuel for the fermenter (i.e. fertilizer).
*/
public ItemStack getItem() {
return item;
}
/**
* How much is fermeted per work cycle, i.e. how much biomass is produced per cycle.
*/
public int getFermentPerCycle() {
return fermentPerCycle;
}
/**
* Amount of work cycles a single item of this fuel lasts before expiring.
*/
public int getBurnDuration() {
return burnDuration;
}
}
@@ -9,18 +9,9 @@ import net.minecraftforge.fluids.FluidStack;
public class GeneratorFuel {
/**
* LiquidStack representing the fuel type and amount consumed per triggered cycle.
*/
public final FluidStack fuelConsumed;
/**
* EU emitted per tick while this fuel is being consumed in the generator (i.e. biofuel = 32, biomass = 8).
*/
public final int eu;
/**
* Rate at which the fuel is consumed. 1 - Every tick 2 - Every second tick 3 - Every third tick etc.
*/
public final int rate;
private final FluidStack fuelConsumed;
private final int eu;
private final int rate;
public GeneratorFuel(FluidStack fuelConsumed, int eu, int rate) {
this.fuelConsumed = fuelConsumed;
@@ -28,4 +19,24 @@ public class GeneratorFuel {
this.rate = rate;
}
/**
* LiquidStack representing the fuel type and amount consumed per triggered cycle.
*/
public FluidStack getFuelConsumed() {
return fuelConsumed;
}
/**
* EU emitted per tick while this fuel is being consumed in the generator (i.e. biofuel = 32, biomass = 8).
*/
public int getEu() {
return eu;
}
/**
* Rate at which the fuel is consumed. 1 - Every tick 2 - Every second tick 3 - Every third tick etc.
*/
public int getRate() {
return rate;
}
}
@@ -8,22 +8,10 @@ package forestry.api.fuels;
import net.minecraft.item.ItemStack;
public class MoistenerFuel {
/**
* The item to use
*/
public final ItemStack item;
/**
* The item that leaves the moistener's working slot (i.e. mouldy wheat, decayed wheat, mulch)
*/
public final ItemStack product;
/**
* How much this item contributes to the final product of the moistener (i.e. mycelium)
*/
public final int moistenerValue;
/**
* What stage this product represents. Resources with lower stage value will be consumed first.
*/
public final int stage;
private final ItemStack item;
private final ItemStack product;
private final int moistenerValue;
private final int stage;
public MoistenerFuel(ItemStack item, ItemStack product, int stage, int moistenerValue) {
this.item = item;
@@ -31,4 +19,32 @@ public class MoistenerFuel {
this.stage = stage;
this.moistenerValue = moistenerValue;
}
/**
* The item to use
*/
public ItemStack getItem() {
return item;
}
/**
* The item that leaves the moistener's working slot (i.e. mouldy wheat, decayed wheat, mulch)
*/
public ItemStack getProduct() {
return product;
}
/**
* How much this item contributes to the final product of the moistener (i.e. mycelium)
*/
public int getMoistenerValue() {
return moistenerValue;
}
/**
* What stage this product represents. Resources with lower stage value will be consumed first.
*/
public int getStage() {
return stage;
}
}
@@ -3,7 +3,7 @@
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
@API(apiVersion = "2.0.1", owner = "ForestryAPI|core", provides = "ForestryAPI|fuels")
@API(apiVersion = "3.0.0", owner = "ForestryAPI|core", provides = "ForestryAPI|fuels")
package forestry.api.fuels;
import net.minecraftforge.fml.common.API;
@@ -113,7 +113,7 @@ public class BlockBogEarth extends Block implements IItemModelRegister, IBlockWi
SoilType type = SoilType.fromMaturity(maturity);
if (type == SoilType.PEAT) {
ret.add(PluginCore.items.peat.getItemStack());
ret.add(PluginCore.items.peat.getItemStack(2));
ret.add(new ItemStack(Blocks.DIRT));
} else {
ret.add(new ItemStack(this, 1, SoilType.BOG_EARTH.ordinal()));
@@ -91,10 +91,10 @@ public class Constants implements IForestryConstants {
public static final int ENGINE_BRONZE_HEAT_LOSS_OVERHEATING = 5;
public static final int ENGINE_BRONZE_HEAT_GENERATION_ENERGY = 1;
public static final int ENGINE_COPPER_CYCLE_DURATION_PEAT = 5000;
public static final int ENGINE_COPPER_FUEL_VALUE_PEAT = 10;
public static final int ENGINE_COPPER_CYCLE_DURATION_BITUMINOUS_PEAT = 6000;
public static final int ENGINE_COPPER_FUEL_VALUE_BITUMINOUS_PEAT = 20;
public static final int ENGINE_COPPER_CYCLE_DURATION_PEAT = 2500;
public static final int ENGINE_COPPER_FUEL_VALUE_PEAT = 20;
public static final int ENGINE_COPPER_CYCLE_DURATION_BITUMINOUS_PEAT = 3000;
public static final int ENGINE_COPPER_FUEL_VALUE_BITUMINOUS_PEAT = 40;
public static final int ENGINE_COPPER_HEAT_MAX = 10000;
public static final int ENGINE_COPPER_ASH_FOR_ITEM = 7500;
@@ -93,5 +93,6 @@ public class GameTokenWidget extends Widget {
public void handleMouseClick(int mouseX, int mouseY, int mouseButton) {
game.choose(index);
Proxies.net.sendToServer(new PacketGuiSelectRequest(index, 0));
Proxies.common.playButtonClick();
}
}
@@ -48,6 +48,7 @@ public class ProbeButton extends Widget {
public void handleMouseClick(int mouseX, int mouseY, int mouseButton) {
pressed = true;
Proxies.net.sendToServer(new PacketGuiSelectRequest(-1, 0));
Proxies.common.playButtonClick();
}
@Override
@@ -15,8 +15,11 @@ import java.io.File;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.audio.SoundHandler;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
@@ -92,4 +95,11 @@ public class ProxyClient extends ProxyCommon {
public EntityPlayer getPlayer() {
return Minecraft.getMinecraft().thePlayer;
}
@Override
public void playButtonClick() {
Minecraft minecraft = getClientInstance();
SoundHandler soundHandler = minecraft.getSoundHandler();
soundHandler.playSound(PositionedSoundRecord.getMasterRecord(SoundEvents.UI_BUTTON_CLICK, 1.0F));
}
}
@@ -86,4 +86,8 @@ public class ProxyCommon {
return null;
}
public void playButtonClick() {
}
}
@@ -14,7 +14,6 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.IOException;
import forestry.energy.EnergyManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IContainerListener;
@@ -163,7 +162,7 @@ public class TileEngineBiogas extends TileEngine implements ISidedInventory, ILi
FluidStack fuelFluidStack = fuelTank.getFluid();
EngineBronzeFuel fuel = FuelManager.bronzeEngineFuel.get(fuelFluidStack.getFluid());
if (fuel != null) {
loss = loss * fuel.dissipationMultiplier;
loss = loss * fuel.getDissipationMultiplier();
}
}
@@ -197,7 +196,7 @@ public class TileEngineBiogas extends TileEngine implements ISidedInventory, ILi
*/
private static int determineFuelValue(Fluid fluid) {
if (FuelManager.bronzeEngineFuel.containsKey(fluid)) {
return FuelManager.bronzeEngineFuel.get(fluid).powerPerCycle;
return FuelManager.bronzeEngineFuel.get(fluid).getPowerPerCycle();
} else {
return 0;
}
@@ -208,7 +207,7 @@ public class TileEngineBiogas extends TileEngine implements ISidedInventory, ILi
*/
private static int determineBurnTime(Fluid fluid) {
if (FuelManager.bronzeEngineFuel.containsKey(fluid)) {
return FuelManager.bronzeEngineFuel.get(fluid).burnDuration;
return FuelManager.bronzeEngineFuel.get(fluid).getBurnDuration();
} else {
return 0;
}
@@ -122,9 +122,10 @@ public class TileEnginePeat extends TileEngine implements ISidedInventory {
if (fuelSlot >= 0 && wasteSlot >= 0) {
IInventoryAdapter inventory = getInternalInventory();
burnTime = totalBurnTime = determineBurnDuration(inventory.getStackInSlot(fuelSlot));
if (burnTime > 0) {
fuelItem = inventory.getStackInSlot(fuelSlot).getItem();
ItemStack fuelStack = inventory.getStackInSlot(fuelSlot);
burnTime = totalBurnTime = determineBurnDuration(fuelStack);
if (burnTime > 0 && fuelStack != null) {
fuelItem = fuelStack.getItem();
decrStackSize(fuelSlot, 1);
}
}
@@ -179,10 +180,11 @@ public class TileEnginePeat extends TileEngine implements ISidedInventory {
int wasteSlot = getFreeWasteSlot();
if (wasteSlot >= 0) {
IInventoryAdapter inventory = getInternalInventory();
if (inventory.getStackInSlot(wasteSlot) == null) {
ItemStack wasteStack = inventory.getStackInSlot(wasteSlot);
if (wasteStack == null) {
inventory.setInventorySlotContents(wasteSlot, PluginCore.items.ash.getItemStack());
} else {
inventory.getStackInSlot(wasteSlot).stackSize++;
wasteStack.stackSize++;
}
}
// Reset
@@ -196,7 +198,7 @@ public class TileEnginePeat extends TileEngine implements ISidedInventory {
*/
private static int determineFuelValue(ItemStack fuel) {
if (FuelManager.copperEngineFuel.containsKey(fuel)) {
return FuelManager.copperEngineFuel.get(fuel).powerPerCycle;
return FuelManager.copperEngineFuel.get(fuel).getPowerPerCycle();
} else {
return 0;
}
@@ -207,7 +209,7 @@ public class TileEnginePeat extends TileEngine implements ISidedInventory {
*/
private static int determineBurnDuration(ItemStack fuel) {
if (FuelManager.copperEngineFuel.containsKey(fuel)) {
return FuelManager.copperEngineFuel.get(fuel).burnDuration;
return FuelManager.copperEngineFuel.get(fuel).getBurnDuration();
} else {
return 0;
}
@@ -142,13 +142,13 @@ public class TileEuGenerator extends TileBase implements ISidedInventory, ILiqui
if (resourceTank.getFluidAmount() > 0) {
GeneratorFuel fuel = FuelManager.generatorFuel.get(resourceTank.getFluid().getFluid());
if (resourceTank.canDrainFluidType(fuel.fuelConsumed) && ic2EnergySource.getFreeCapacity() >= fuel.eu) {
ic2EnergySource.addEnergy(fuel.eu);
if (resourceTank.canDrainFluidType(fuel.getFuelConsumed()) && ic2EnergySource.getFreeCapacity() >= fuel.getEu()) {
ic2EnergySource.addEnergy(fuel.getEu());
this.tickCount++;
if (tickCount >= fuel.rate) {
if (tickCount >= fuel.getRate()) {
tickCount = 0;
resourceTank.drain(fuel.fuelConsumed.amount, true);
resourceTank.drain(fuel.getFuelConsumed().amount, true);
}
}
@@ -10,9 +10,6 @@
******************************************************************************/
package forestry.factory.gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import forestry.core.config.Constants;
import forestry.core.gui.GuiForestryTitled;
import forestry.core.gui.buttons.GuiBetterButton;
@@ -23,6 +20,8 @@ import forestry.factory.gui.widgets.ClearWorktable;
import forestry.factory.gui.widgets.MemorizedRecipeSlot;
import forestry.factory.recipes.RecipeMemory;
import forestry.factory.tiles.TileWorktable;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
public class GuiWorktable extends GuiForestryTitled<ContainerWorktable, TileWorktable> {
private static final int SPACING = 18;
@@ -71,5 +70,6 @@ public class GuiWorktable extends GuiForestryTitled<ContainerWorktable, TileWork
protected void actionPerformed(GuiButton button) {
int id = 100 + button.id;
Proxies.net.sendToServer(new PacketGuiSelectRequest(id, 0));
Proxies.common.playButtonClick();
}
}
@@ -12,6 +12,7 @@ package forestry.factory.gui.widgets;
import forestry.core.gui.widgets.Widget;
import forestry.core.gui.widgets.WidgetManager;
import forestry.core.proxy.Proxies;
import forestry.factory.gui.ContainerWorktable;
public class ClearWorktable extends Widget {
@@ -29,5 +30,6 @@ public class ClearWorktable extends Widget {
@Override
public void handleMouseClick(int mouseX, int mouseY, int mouseButton) {
ContainerWorktable.clearRecipe();
Proxies.common.playButtonClick();
}
}
@@ -56,6 +56,7 @@ public class MemorizedRecipeSlot extends ItemStackWidgetBase {
public void handleMouseClick(int mouseX, int mouseY, int mouseButton) {
if (getItemStack() != null) {
ContainerWorktable.sendRecipeClick(mouseButton, slotNumber);
Proxies.common.playButtonClick();
}
}
}
@@ -21,7 +21,6 @@ import mezz.jei.api.gui.IDrawableStatic;
import mezz.jei.api.gui.IGuiFluidStackGroup;
import mezz.jei.api.gui.IGuiItemStackGroup;
import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.recipe.IRecipeWrapper;
public class FermenterRecipeCategory extends ForestryRecipeCategory<FermenterRecipeWrapper> {
@@ -75,7 +74,7 @@ public class FermenterRecipeCategory extends ForestryRecipeCategory<FermenterRec
guiItemStacks.set(resourceSlot, recipeWrapper.getFermentable());
List<ItemStack> fuels = new ArrayList<>();
for (FermenterFuel fuel : FuelManager.fermenterFuel.values()) {
fuels.add(fuel.item);
fuels.add(fuel.getItem());
}
guiItemStacks.set(fuelSlot, fuels);
@@ -30,7 +30,7 @@ public class FermenterRecipeWrapper extends ForestryRecipeWrapper<IFermenterReci
public List getInputs() {
List<ItemStack> inputs = new ArrayList<>();
for (FermenterFuel fuel : FuelManager.fermenterFuel.values()) {
inputs.add(fuel.item);
inputs.add(fuel.getItem());
}
inputs.add(fermentable);
return inputs;
@@ -74,10 +74,10 @@ public class MoistenerRecipeCategory extends ForestryRecipeCategory {
MoistenerRecipeWrapper wrapper = (MoistenerRecipeWrapper) recipeWrapper;
guiItemStacks.set(resourceSlot, wrapper.getRecipe().getResource());
guiItemStacks.set(fuelItemSlot, wrapper.getFuel().item);
guiItemStacks.set(fuelItemSlot, wrapper.getFuel().getItem());
guiItemStacks.set(productSlot, wrapper.getRecipe().getProduct());
guiItemStacks.set(fuelProductSlot, wrapper.getFuel().product);
guiItemStacks.set(fuelProductSlot, wrapper.getFuel().getProduct());
guiFluidStacks.set(inputTank, FluidRegistry.getFluidStack("water", 10000));
@@ -46,7 +46,7 @@ public class MoistenerRecipeHandler implements IRecipeHandler<MoistenerRecipeWra
if (recipe.getProduct() == null) {
return false;
}
return wrapper.getFuel() != null || wrapper.getFuel().item != null || wrapper.getFuel().product != null;
return wrapper.getFuel() != null || wrapper.getFuel().getItem() != null || wrapper.getFuel().getProduct() != null;
}
}
@@ -25,8 +25,8 @@ public class MoistenerRecipeWrapper extends ForestryRecipeWrapper<IMoistenerReci
public List<ItemStack> getInputs() {
List<ItemStack> inputs = new ArrayList<>();
inputs.add(getRecipe().getResource());
if (fuel.item != null) {
inputs.add(fuel.item);
if (fuel.getItem() != null) {
inputs.add(fuel.getItem());
}
return inputs;
}
@@ -36,8 +36,8 @@ public class MoistenerRecipeWrapper extends ForestryRecipeWrapper<IMoistenerReci
public List<ItemStack> getOutputs() {
List<ItemStack> outputs = new ArrayList<>();
outputs.add(getRecipe().getProduct());
if (fuel.product != null) {
outputs.add(fuel.product);
if (fuel.getProduct() != null) {
outputs.add(fuel.getProduct());
}
return outputs;
}
@@ -180,8 +180,8 @@ public class TileFermenter extends TilePowered implements ISidedInventory, ILiqu
return;
}
fuelBurnTime = fuelTotalTime = fermenterFuel.burnDuration;
fuelCurrentFerment = fermenterFuel.fermentPerCycle;
fuelBurnTime = fuelTotalTime = fermenterFuel.getBurnDuration();
fuelCurrentFerment = fermenterFuel.getFermentPerCycle();
decrStackSize(InventoryFermenter.SLOT_FUEL, 1);
}
@@ -201,7 +201,7 @@ public class TileMoistener extends TileBase implements ISidedInventory, ILiquidT
if (FuelManager.moistenerResource.containsKey(getStackInSlot(InventoryMoistener.SLOT_WORKING))) {
MoistenerFuel res = FuelManager.moistenerResource.get(getStackInSlot(InventoryMoistener.SLOT_WORKING));
burnTime = totalTime = res.moistenerValue;
burnTime = totalTime = res.getMoistenerValue();
}
} else {
rotateReservoir();
@@ -302,8 +302,8 @@ public class TileMoistener extends TileBase implements ISidedInventory, ILiquidT
}
MoistenerFuel res = FuelManager.moistenerResource.get(slotStack);
if (stage < 0 || res.stage < stage) {
stage = res.stage;
if (stage < 0 || res.getStage() < stage) {
stage = res.getStage();
resourceSlot = i;
}
}
@@ -320,7 +320,7 @@ public class TileMoistener extends TileBase implements ISidedInventory, ILiquidT
ItemStack deposit;
if (FuelManager.moistenerResource.containsKey(getStackInSlot(InventoryMoistener.SLOT_WORKING))) {
MoistenerFuel res = FuelManager.moistenerResource.get(getStackInSlot(InventoryMoistener.SLOT_WORKING));
deposit = res.product.copy();
deposit = res.getProduct().copy();
} else {
deposit = getStackInSlot(InventoryMoistener.SLOT_WORKING).copy();
}
@@ -423,7 +423,7 @@ public class TileMoistener extends TileBase implements ISidedInventory, ILiquidT
}
if (FuelManager.moistenerResource.containsKey(inventory.getStackInSlot(i))) {
MoistenerFuel res = FuelManager.moistenerResource.get(inventory.getStackInSlot(i));
if (res.item.isItemEqual(inventory.getStackInSlot(i))) {
if (res.getItem().isItemEqual(inventory.getStackInSlot(i))) {
max += 64;
avail += inventory.getStackInSlot(i).stackSize;
}
@@ -55,6 +55,7 @@ public class AddresseeSlot extends Widget {
public void handleMouseClick(int mouseX, int mouseY, int mouseButton) {
if (!containerLetter.getLetter().isProcessed()) {
containerLetter.advanceCarrierType();
Proxies.common.playButtonClick();
}
}
}