From b0d1c346b87f779ac267233e759db532a2e9ad4c Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 13 Nov 2022 21:11:54 +0100 Subject: [PATCH] more sensible carbon distribution, finished steam engine --- .../hbm/blocks/machine/MachineBattery.java | 10 ++- .../blocks/machine/MachineSteamEngine.java | 56 +++++++++++- .../java/com/hbm/config/GeneralConfig.java | 2 + .../com/hbm/handler/nei/ChunkyHandler.java | 7 +- .../com/hbm/inventory/OreDictManager.java | 10 +++ .../java/com/hbm/inventory/material/Mats.java | 10 +-- .../inventory/recipes/AssemblerRecipes.java | 2 +- .../inventory/recipes/anvil/AnvilRecipes.java | 9 ++ .../com/hbm/items/machine/ItemFluidIcon.java | 5 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 2 +- .../machine/TileEntitySteamEngine.java | 84 +++++++++++++++--- src/main/resources/assets/hbm/lang/de_DE.lang | 5 ++ src/main/resources/assets/hbm/lang/en_US.lang | 5 ++ .../textures/models/machines/steam_engine.png | Bin 3644 -> 8400 bytes src/main/resources/mcmod.info | 2 +- 16 files changed, 183 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/MachineBattery.java b/src/main/java/com/hbm/blocks/machine/MachineBattery.java index c96d2f901..73293ddda 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBattery.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBattery.java @@ -175,11 +175,13 @@ public class MachineBattery extends BlockContainer implements ILookOverlay, IPer @Override public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { if(!keepInventory) { - TileEntityMachineBattery tileentityfurnace = (TileEntityMachineBattery) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + TileEntity tile = p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); - if(tileentityfurnace != null) { - for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + if(tile instanceof TileEntityMachineBattery) { + TileEntityMachineBattery battery = (TileEntityMachineBattery) tile; + + for(int i1 = 0; i1 < battery.getSizeInventory(); ++i1) { + ItemStack itemstack = battery.getStackInSlot(i1); if(itemstack != null) { float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; diff --git a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java index 6d06f67cd..7277b011d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSteamEngine.java @@ -1,13 +1,25 @@ package com.hbm.blocks.machine; +import java.util.ArrayList; +import java.util.List; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntitySteamEngine; +import com.hbm.util.I18nUtil; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; -public class MachineSteamEngine extends BlockDummyable { +public class MachineSteamEngine extends BlockDummyable implements ILookOverlay, ITooltipProvider { public MachineSteamEngine() { super(Material.iron); @@ -16,6 +28,7 @@ public class MachineSteamEngine extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntitySteamEngine(); + if(meta >= extra) return new TileEntityProxyCombo().power().fluid(); return null; } @@ -28,4 +41,45 @@ public class MachineSteamEngine extends BlockDummyable { public int getOffset() { return 1; } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x = x + dir.offsetX * o; + z = z + dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x + rot.offsetX, y + 1, z + rot.offsetZ); + this.makeExtra(world, x + rot.offsetX + dir.offsetX, y + 1, z + rot.offsetZ + dir.offsetZ); + this.makeExtra(world, x + rot.offsetX - dir.offsetX, y + 1, z + rot.offsetZ - dir.offsetZ); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntitySteamEngine)) + return; + + TileEntitySteamEngine engine = (TileEntitySteamEngine) te; + + List text = new ArrayList(); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", engine.tanks[0].getFill()) + " / " + String.format("%,d", engine.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(engine.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", engine.tanks[1].getFill()) + " / " + String.format("%,d", engine.tanks[1].getMaxFill()) + "mB"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } } diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index e235f09c3..54bc47306 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -27,6 +27,7 @@ public class GeneralConfig { public static boolean enableCustomDashKeybind = false; public static boolean enableReEval = true; public static boolean enableSilentCompStackErrors = true; + public static boolean enableChunkyNEIHandler = true; public static int hintPos = 0; public static boolean enable528 = false; @@ -78,6 +79,7 @@ public class GeneralConfig { enableCustomDashKeybind = config.get(CATEGORY_GENERAL, "1.26_enableCustomDashKeybind", false, "Enable custom dash keybind instead of shift").getBoolean(false); enableReEval = config.get(CATEGORY_GENERAL, "1.27_enableReEval", true, "Allows re-evaluating power networks on link remove instead of destroying and recreating").getBoolean(true); enableSilentCompStackErrors = config.get(CATEGORY_GENERAL, "1.28_enableSilentCompStackErrors", false, "Enabling this will disable log spam created by unregistered items in ComparableStack instances.").getBoolean(false); + enableChunkyNEIHandler = config.get(CATEGORY_GENERAL, "1.29_enableChunkyNEIHandler", true, "If enabled, registers a NEI handler that will show the chosen item in a larger view.").getBoolean(true); hintPos = CommonConfig.createConfigInt(config, CATEGORY_GENERAL, "1.29_hudOverlayPosition", "0: Top left\n1: Top right\n2: Center right\n3: Center Left", 0); diff --git a/src/main/java/com/hbm/handler/nei/ChunkyHandler.java b/src/main/java/com/hbm/handler/nei/ChunkyHandler.java index c0cf58b60..02ff171c1 100644 --- a/src/main/java/com/hbm/handler/nei/ChunkyHandler.java +++ b/src/main/java/com/hbm/handler/nei/ChunkyHandler.java @@ -4,6 +4,7 @@ import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; import org.lwjgl.opengl.GL11; +import com.hbm.config.GeneralConfig; import com.hbm.lib.RefStrings; import codechicken.nei.PositionedStack; @@ -43,12 +44,14 @@ public class ChunkyHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(ItemStack result) { - this.arecipes.add(new RecipeSet(result)); + if(GeneralConfig.enableChunkyNEIHandler) + this.arecipes.add(new RecipeSet(result)); } @Override public void loadUsageRecipes(ItemStack ingredient) { - this.arecipes.add(new RecipeSet(ingredient)); + if(GeneralConfig.enableChunkyNEIHandler) + this.arecipes.add(new RecipeSet(ingredient)); } @Override diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index dec6b081f..274d819cb 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -444,6 +444,16 @@ public class OreDictManager { OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_bismuth); OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_arsenic); + + OreDictionary.registerOre("itemRubber", ingot_rubber); + + OreDictionary.registerOre("coalCoke", fromOne(coke, EnumCokeType.COAL)); + + for(String name : new String[] {"fuelCoke", "coke"}) { + OreDictionary.registerOre(name, fromOne(coke, EnumCokeType.COAL)); + OreDictionary.registerOre(name, fromOne(coke, EnumCokeType.LIGNITE)); + OreDictionary.registerOre(name, fromOne(coke, EnumCokeType.PETROLEUM)); + } OreDictionary.registerOre(getReflector(), neutron_reflector); OreDictionary.registerOre("oreRareEarth", ore_rare); diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 42b58d0ab..2f71ca88a 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -49,11 +49,11 @@ public class Mats { //Vanilla and vanilla-like public static final NTMMaterial MAT_STONE = makeSmeltable(_VS + 00, df("Stone"), 0x4D2F23).omitAutoGen(); public static final NTMMaterial MAT_CARBON = makeAdditive( 1499, df("Carbon"), 0x404040).omitAutoGen(); - public static final NTMMaterial MAT_COAL = make( 1400, COAL) .setConversion(MAT_CARBON, 3, 1).omitAutoGen(); - public static final NTMMaterial MAT_LIGNITE = make( 1401, LIGNITE) .setConversion(MAT_CARBON, 4, 1); - public static final NTMMaterial MAT_COALCOKE = make( 1410, COALCOKE) .setConversion(MAT_CARBON, 2, 1); - public static final NTMMaterial MAT_PETCOKE = make( 1411, PETCOKE) .setConversion(MAT_CARBON, 2, 1); - public static final NTMMaterial MAT_LIGCOKE = make( 1412, LIGCOKE) .setConversion(MAT_CARBON, 2, 1); + public static final NTMMaterial MAT_COAL = make( 1400, COAL) .setConversion(MAT_CARBON, 2, 1).omitAutoGen(); + public static final NTMMaterial MAT_LIGNITE = make( 1401, LIGNITE) .setConversion(MAT_CARBON, 3, 1); + public static final NTMMaterial MAT_COALCOKE = make( 1410, COALCOKE) .setConversion(MAT_CARBON, 4, 3); + public static final NTMMaterial MAT_PETCOKE = make( 1411, PETCOKE) .setConversion(MAT_CARBON, 4, 3); + public static final NTMMaterial MAT_LIGCOKE = make( 1412, LIGCOKE) .setConversion(MAT_CARBON, 4, 3); public static final NTMMaterial MAT_GRAPHITE = make( 1420, GRAPHITE) .setConversion(MAT_CARBON, 1, 1); public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0xFFA259).omitAutoGen(); public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0xE8D754).omitAutoGen(); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index c81b8512e..9f1a8bdea 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -463,8 +463,8 @@ public class AssemblerRecipes { new OreDictStack(KEY_CIRCUIT_BISMUTH, 1) }, 600); makeRecipe(new ComparableStack(ModBlocks.machine_large_turbine, 1), new AStack[] { - new ComparableStack(ModItems.hull_big_steel, 1), new OreDictStack(STEEL.plate(), 12), + new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.turbine_titanium, 3), new ComparableStack(ModItems.generator_steel, 1), new ComparableStack(ModItems.bolt_compound, 3), diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 1ed3a9419..e4973a688 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -284,6 +284,15 @@ public class AnvilRecipes { new ComparableStack(ModItems.gear_large, 1, 1) }, new AnvilOutput(new ItemStack(ModBlocks.machine_stirling_steel))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new ComparableStack(ModBlocks.reinforced_stone, 16), + new OreDictStack(STEEL.plate(), 12), + new ComparableStack(ModItems.hull_small_steel, 2), + new ComparableStack(ModItems.coil_copper, 8), + new ComparableStack(ModItems.gear_large, 1) + }, new AnvilOutput(new ItemStack(ModBlocks.machine_steam_engine))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(KEY_PLANKS, 16), diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index 27f7e3863..276a3d72e 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -37,9 +37,12 @@ public class ItemFluidIcon extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - if(stack.hasTagCompound()) + if(stack.hasTagCompound()) { if(stack.getTagCompound().getInteger("fill") > 0) list.add(stack.getTagCompound().getInteger("fill") + "mB"); + } + + Fluids.fromID(stack.getItemDamage()).addInfo(list); } public static ItemStack addQuantity(ItemStack stack, int i) { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index cac248355..1aaf65031 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4411)"; + public static final String VERSION = "1.0.27 BETA (4417)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index fad8be6de..0bc89d956 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -285,7 +285,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', STEEL.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_electric_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', DESH.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', ModBlocks.machine_electric_furnace_off }); - addRecipeAuto(new ItemStack(ModBlocks.machine_turbine, 1), new Object[] { "PMP", "PTP", "PMP", 'P', STEEL.ingot(), 'T', ModItems.turbine_titanium, 'M', ModItems.coil_copper }); + addRecipeAuto(new ItemStack(ModBlocks.machine_turbine, 1), new Object[] { "SMS", "PTP", "SMS", 'S', STEEL.ingot(), 'T', ModItems.turbine_titanium, 'M', ModItems.coil_copper, 'P', ANY_PLASTIC.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_converter_he_rf, 1), new Object[] { "SSS", "CRB", "SSS", 'S', STEEL.ingot(), 'C', ModItems.coil_copper, 'R', ModItems.coil_copper_torus, 'B', REDSTONE.block() }); addRecipeAuto(new ItemStack(ModBlocks.machine_converter_rf_he, 1), new Object[] { "SSS", "BRC", "SSS", 'S', BE.ingot(), 'C', ModItems.coil_copper, 'R', ModItems.coil_copper_torus, 'B', REDSTONE.block() }); addRecipeAuto(new ItemStack(ModBlocks.crate_iron, 1), new Object[] { "PPP", "I I", "III", 'P', IRON.plate(), 'I', IRON.ingot() }); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java index ffe289aba..f3c99b090 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java @@ -1,8 +1,11 @@ package com.hbm.tileentity.machine; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; @@ -12,6 +15,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.lib.Library; +import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; @@ -26,22 +30,48 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, INBTPacketReceiver { +public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { public long powerBuffer; - + public float rotor; public float lastRotor; + private float syncRotor; public List list2 = new ArrayList(); public FluidTank[] tanks; + private int turnProgress; private float acceleration = 0F; + /* CONFIGURABLE */ + private static int steamCap = 2_000; + private static int ldsCap = 20; + private static double efficiency = 0.85D; + public TileEntitySteamEngine() { tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.STEAM, 2_000, 0); - tanks[1] = new FluidTank(Fluids.SPENTSTEAM, 20, 1); + tanks[0] = new FluidTank(Fluids.STEAM, steamCap, 0); + tanks[1] = new FluidTank(Fluids.SPENTSTEAM, ldsCap, 1); + } + + @Override + public String getConfigName() { + return "steamengine"; + } + + @Override + public void readIfPresent(JsonObject obj) { + steamCap = IConfigurableMachine.grab(obj, "I:steamCap", steamCap); + ldsCap = IConfigurableMachine.grab(obj, "I:ldsCap", ldsCap); + efficiency = IConfigurableMachine.grab(obj, "D:efficiency", efficiency); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:steamCap").value(steamCap); + writer.name("I:ldsCap").value(ldsCap); + writer.name("D:efficiency").value(efficiency); } @Override @@ -53,9 +83,12 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui tanks[0].setTankType(Fluids.STEAM); tanks[1].setTankType(Fluids.SPENTSTEAM); + + NBTTagCompound data = new NBTTagCompound(); + tanks[0].writeToNBT(data, "s"); FT_Coolable trait = tanks[0].getTankType().getTrait(FT_Coolable.class); - double eff = trait.getEfficiency(CoolingType.TURBINE) * 0.75D; + double eff = trait.getEfficiency(CoolingType.TURBINE) * efficiency; int inputOps = tanks[0].getFill() / trait.amountReq; int outputOps = (tanks[1].getMaxFill() - tanks[1].getFill()) / trait.amountProduced; @@ -71,20 +104,17 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui } this.acceleration = MathHelper.clamp_float(this.acceleration, 0F, 40F); - this.lastRotor = this.rotor; this.rotor += this.acceleration; if(this.rotor >= 360D) { - this.lastRotor -= 360D; this.rotor -= 360D; this.worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.steamEngineOperate", 1.0F, 0.5F + (acceleration / 80F)); } - NBTTagCompound data = new NBTTagCompound(); data.setLong("power", this.powerBuffer); data.setFloat("rotor", this.rotor); - data.setFloat("lastRotor", this.lastRotor); + tanks[1].writeToNBT(data, "w"); for(DirPos pos : getConPos()) { if(this.powerBuffer > 0) @@ -95,6 +125,16 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui if(tanks[1].getFill() > 0) fillFluidInit(tanks[1].getTankType()); INBTPacketReceiver.networkPack(this, data, 150); + } else { + this.lastRotor = this.rotor; + + if(this.turnProgress > 0) { + double d = MathHelper.wrapAngleTo180_double(this.syncRotor - (double) this.rotor); + this.rotor = (float) ((double) this.rotor + d / (double) this.turnProgress); + --this.turnProgress; + } else { + this.rotor = this.syncRotor; + } } } @@ -108,6 +148,26 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord + 1, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot) }; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + this.powerBuffer = nbt.getLong("powerBuffer"); + this.acceleration = nbt.getFloat("acceleration"); + this.tanks[0].readFromNBT(nbt, "s"); + this.tanks[1].readFromNBT(nbt, "w"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + nbt.setLong("powerBuffer", powerBuffer); + nbt.setFloat("acceleration", acceleration); + tanks[0].writeToNBT(nbt, "s"); + tanks[1].writeToNBT(nbt, "w"); + } @Override public void fillFluidInit(FluidType type) { @@ -221,7 +281,9 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui @Override public void networkUnpack(NBTTagCompound nbt) { this.powerBuffer = nbt.getLong("power"); - this.rotor = nbt.getFloat("rotor"); - this.lastRotor = nbt.getFloat("lastRotor"); + this.syncRotor = nbt.getFloat("rotor"); + this.turnProgress = 3; //use 3-ply for extra smoothness + this.tanks[0].readFromNBT(nbt, "s"); + this.tanks[1].readFromNBT(nbt, "w"); } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index b21620ee8..58f8c7d1d 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3057,6 +3057,7 @@ item.wire_tungsten.name=Wolframdraht item.wiring_red_copper.name=Kabeltrommel item.wood_gavel.name=Hölzerner Richterhammer item.wrench.name=Rohrzange +item.wrench_archineer.name=Schraubenschlüssel des Archingeurs item.wrench_flipped.name=Rohrzange mit Klinge item.xanax.name=NAXA Anti-Digamma-Medikament item.zirconium_legs.name=Zirkoniumhose @@ -3577,6 +3578,7 @@ tile.heater_oilburner.desc=Erzäuft Wärme aus fluiden Brennstoffen. tile.heater_oven.name=Heizofen tile.heater_oven.desc=Erzeugt Wärme aus Festbrennstoff.$Nimmt von unten Wärme mit 50%% Effizienz auf. tile.hev_battery.name=Anzugs-Batterie +tile.impact_dirt.name=Versengte Erde tile.iter.name=Kernfusionsreaktor tile.ladder_aluminium.name=Aluminiumleiter tile.ladder_cobalt.name=Kobaltleiter @@ -3697,6 +3699,8 @@ tile.machine_solar_boiler.name=Solarturmboiler tile.machine_solidifier.name=Industrielle Verfestigungsmaschine tile.machine_spp_bottom.name=NPE-Potentialgenerator (Unterteil) tile.machine_spp_top.name=NPE-Potentialgenerator (Oberteil) +tile.machine_steam_engine.name=Dampfmaschine +tile.machine_steam_engine.desc=Effizienz: 85%% tile.machine_stirling.name=Stirlingmotor tile.machine_stirling.desc=Erzeugt Energie aus Wärme. Benötigt externe Hitzequelle.$Wärmestransferrate: T*0.1 TU/t$Maximalaufnahme: 300 TU/t$Effizienz: 50%% tile.machine_stirling_steel.name=Schwerer Stirlingmotor @@ -3947,6 +3951,7 @@ tile.stone_gneiss.name=Graphitschiefer tile.stone_porous.name=Poröser Stein tile.stone_resource.asbestos.name=Chrysotil tile.stone_resource.hematite.name=Hämatit +tile.stone_resource.limestone.name=Kalkstein tile.stone_resource.malachite.name=Malachit tile.stone_resource.sulfur.name=Schwefelhaltiger Stein tile.struct_iter_core.name=Fusionsreaktor-Kernkomponente diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d97813786..915389177 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3566,6 +3566,7 @@ item.wire_tungsten.name=Tungsten Wire item.wiring_red_copper.name=Cable Drum item.wood_gavel.name=Wooden Gavel item.wrench.name=Pipe Wrench +item.wrench_archineer.name=Archineer's Wrench item.wrench_flipped.name=Blade on a Wrench item.xanax.name=NAXA Anti-Digamma Medication item.zirconium_legs.name=Zirconium Pants @@ -4105,6 +4106,7 @@ tile.heater_oilburner.desc=Burns fluids to produce heat. tile.heater_oven.name=Heating Oven tile.heater_oven.desc=Burns solid fuel to produce heat.$Accepts heat from the bottom with 50%% efficiency. tile.hev_battery.name=Suit Battery +tile.impact_dirt.name=Scorched Dirt tile.iter.name=Fusion Reactor tile.ladder_aluminium.name=Aluminium Ladder tile.ladder_cobalt.name=Cobalt Ladder @@ -4228,6 +4230,8 @@ tile.machine_solidifier.name=Industrial Solidification Machine tile.machine_solidifier.desc=A universal machine fitted with cooling systems and other$versatile tools for turning fluids solid using various$processes such as freezing and petrochemical polymerization. tile.machine_spp_bottom.name=ZPE Potential Generator (Bottom) tile.machine_spp_top.name=ZPE Potential Generator (Top) +tile.machine_steam_engine.name=Steam Engine +tile.machine_steam_engine.desc=Efficiency: 85%% tile.machine_stirling.name=Stirling Engine tile.machine_stirling.desc=Turns heat into energy. Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Max intake: 300 TU/t$Efficiency: 50%% tile.machine_stirling_steel.name=Heavy Stirling Engine @@ -4478,6 +4482,7 @@ tile.stone_gneiss.name=Graphitic Schist tile.stone_porous.name=Porous Stone tile.stone_resource.asbestos.name=Chrysotile tile.stone_resource.hematite.name=Hematite +tile.stone_resource.limestone.name=Limestone tile.stone_resource.malachite.name=Malachite tile.stone_resource.sulfur.name=Sulfurous Stone tile.struct_iter_core.name=Fusion Reactor Core Component diff --git a/src/main/resources/assets/hbm/textures/models/machines/steam_engine.png b/src/main/resources/assets/hbm/textures/models/machines/steam_engine.png index bc3f06aa9daff3c98367360a97ff198f507244a7..1db4c605c1974864866aaaf23e8ceeef7fae8f9b 100644 GIT binary patch literal 8400 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 VJ{6fqMKS}>(KNhQt?u~Ze*l1zZ|nd7 literal 3644 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 ZWM5;ExYpj6#Gr#fN6SF7;&-R${|2}2+noRa diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 7936acbbb..efde7989a 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4411", + "version":"1.0.27_X4417", "mcversion": "1.7.10", "url": "", "updateUrl": "",