diff --git a/changelog b/changelog index 777b8cfee..b307b726e 100644 --- a/changelog +++ b/changelog @@ -1,98 +1,4 @@ -## Added -* Redstone-over-Radio Terminal - * Allows commands to be sent manually, command line style - * Supports single commands and repeated ones (polling) -* Grenade machinegun - * 30rnd automatic 40mm grenade weapon firing at 120 RPS - * Can be upgraded with an auxiliary electric engine to double the firerate -* Automatic thresher - * A specialized machine for automatically harvesting crops in a 7x7 area - * Replaces the buzzsaw's temporary functionality to do just that (the buzzsaw now loses that ability) - * Drops harvested items using a chute instead of leaving them on the farmland - * When cutting down hemp, willows, and other NTM double plants, only the top part will be cut off, no matter where the thresher touches it - * Can also harvest items from sunflowers and tall grass without breaking the blocks - * Can also handle tall plants like cacti and sugar cane -* New big-ass tank - * Successor to the BAT9k - * Larger footprint, way more storage space - * Needs to be placed on a proper foundation or else it'll sink into the ground - * Legacy BAT9ks can be recycled in a tier 3 anvil -* AUTOCAL Automatic Calculator - * Highly advanced programmable RoR device - * Can send and receive signals and do calculations with the same system as NTM's calculator -* Vending machines - * Comes in snack machine and soda machine variants - * The machines can be purchased off of bobmazon for 64 caps each - * Use vending machine tokens as currency, which can be found occasionally in most structures -* New blast furnace - * 3x3 base, 7 blocks tall - * Can be accelerated with hot air blast (just compressed air in a boiler) - * The faster it is supplied with hot air blast, the faster it gets - * Uses smarter IO, one port can supply all slots without needing to configure anything or have multiple item inputs - * A firebox burning coal can already take the blast furnace to 130% speed (default speed with no blast at all is 50%) - * Produces flue gas, a new type of exhaust that can be burned - -## Changed -* RoR graphs can now have their min and max bounds set to a fixed number - * This should make it easier to accurately tell the difference/scale of values when they exist in an expected range (for example, RBMK temperatures) -* RoR controllers now use polling by default, since state change is unable to actually perform a function unless the state changes, preventing repeated commands -* HE/RF converters now have a tooltip showing their buffered energy -* Updated the models of the cage lamp, fluorescent light and halogen lamp -* 528 mode now has a new config for enabling gravity on machines - * Machines not on solid ground will tilt, causing them to break - * Still a work in progress, not all machines make use of it yet - * The ZIRNOX for example will continue to operate when tilted, however the pipes will disconnect, resulting in a fatal loss of cooling -* Slightly adjusted the automatic buzzsaw's texture -* Mobs can no longer spawn on most versions of concrete - * Notable exceptions are mossy and cracked concrete bricks -* Increased the yield of lye from wood ash -* All fluid tanks larger than barrels now have dynamic IO speed instead of providing their entire contents instantly - * Tank fill will slow down the fuller the tank becomes, tank drain also slow downs as it gets emptier - * This means that multiple tanks in IO mode in the same network will still ping pong, but only a small portion of fluid will be "lost" (i.e. invisible due to subtick transfer operations) -* The stinger is now classified as a special weapon -* The carbine can now take a scope -* The battery socket now renders supports when a block is placed on top of it, allowing somewhat aesthetic stacking of sockets -* The bayonet weapon attachment now uses regular steel plates instead of weapon steel, making them available as early as the blast furnace -* Adjusted some 528 mode recipes -* Removed the template crates entirely for being literally useless -* Oil bubbles can no longer go down to Y:0, they now have a minimum center height of Y:15 -* The automatic buzzsaw and thresher now have sound loops when active -* The shredder auto shotgun now uses the plasma damage type instead of laser -* Added "nitra to ammunition" recipe in the assembly machine, turning large piles of nitra into random casings/propellants -* Removed more unused blocks to free up block IDs - * Removed the old iron barrel - * Removed the factory hull blocks - * Removed the vacuum block that has been unused for like 5 years at this point - * Removed five of the 10 sturdy ladder variants because they were hella ugly anyway -* Added a new alternate recipe "instant aggregate" in the chemical plant, turning 16 cobblestone into 8 gravel and 8 sand -* Added a new alternate recipe for making obsidian in the chemical plant -* Removed the water and steam geysers, which were so obscenely rare most people have never seen either one of them, and became functionally useless without the old geothermal generator -* Moved the napalm recipe to the chemical plant -* Moved the microchip (all variants) and atomic clock recipes to the assembler -* The analog and integrated circuit boards now have alternate recipes in the assembler -* Removed two of the older motor recipes in the arc welder - * The only remaining recipe is the dense red copper one -* Using state of the art anti-leave-the-screen technology, recipe tooltips (and most tooltips used by `GuiInfoScreen`) should no longer leave the screen - * This means that the recipe selector can now have the tooltip follow the mouse instead of being eternally stuck in the corner - * Recipe selector tooltips now have a nice orange and yellow border -* The nuclear charge and demolition nuclear grenade charge now need neutron reflectors -* Schrabidium grenade charges now use CMB steel instead of bronze -* The satellite base now only uses a medium thruster instead of a large one, making it no longer post pyrolysis -* The steel recipe in the crucible now requires flux - * The recipe is also now a fair bit slower (still faster than a blast furnace overall) -* Remodeled the catalytic reformer -* Crane structure - * Crane structure - ## Fixed -* Fixed RoR graph showing the wrong name in the GUI -* Fixed polling option in RoR controllers reading dead signals -* Fixed state change in RoR controllers not allowing repeat commands -* Fixed RoR transmitter sending empty signals when unused mappings apply -* Fixed hopper IO for battery sockets being entirely broken -* Fixed cargo elevators not dropping the correct amount of segments -* Fixed broken config check causing smithing recipes in anvils to always be tier 1 -* Fixed potential client desync when placing or removing lids on a hot RBMK -* Fixed custom missile launch pad cores not being obtainable in 528 mode -* Fixed industrial turbines never fully spinning down -* Fixed bricked furnace IO not working right +* Fixed AUTOCAL's `listen` command failing if the buffer is empty +* Fixed things not intended to be used in the blast furnace (scrap, lava) being usable fuels +* Fixed blast furnace swallowing container items left behind by fuels, instead fuels with containers will not be accepted at all \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockWandLogic.java b/src/main/java/com/hbm/blocks/generic/BlockWandLogic.java index de444be2b..594100cc4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockWandLogic.java +++ b/src/main/java/com/hbm/blocks/generic/BlockWandLogic.java @@ -6,7 +6,6 @@ import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.config.ServerConfig; -import com.hbm.config.StructureConfig; import com.hbm.interfaces.IBomb; import com.hbm.interfaces.ICopiable; import com.hbm.lib.RefStrings; diff --git a/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java b/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java index bf3e5b11e..0a56d29ba 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java +++ b/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java @@ -10,7 +10,6 @@ import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.config.ServerConfig; -import com.hbm.config.StructureConfig; import com.hbm.interfaces.IBomb; import com.hbm.interfaces.ICopiable; import com.hbm.itempool.ItemPool; @@ -38,7 +37,6 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/com/hbm/blocks/generic/BlockWandStructure.java b/src/main/java/com/hbm/blocks/generic/BlockWandStructure.java index 426c8bf3d..45b2014a4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockWandStructure.java +++ b/src/main/java/com/hbm/blocks/generic/BlockWandStructure.java @@ -14,7 +14,6 @@ import org.lwjgl.input.Keyboard; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; -import com.hbm.config.StructureConfig; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.gui.element.GuiFileList; import com.hbm.lib.RefStrings; diff --git a/src/main/java/com/hbm/blocks/generic/LogicBlock.java b/src/main/java/com/hbm/blocks/generic/LogicBlock.java index e2fe243bd..d84c38b19 100644 --- a/src/main/java/com/hbm/blocks/generic/LogicBlock.java +++ b/src/main/java/com/hbm/blocks/generic/LogicBlock.java @@ -1,7 +1,5 @@ package com.hbm.blocks.generic; -import com.hbm.blocks.IBlockSideRotation; -import com.hbm.blocks.ModBlocks; import com.hbm.world.gen.util.LogicBlockActions; import com.hbm.world.gen.util.LogicBlockConditions; import com.hbm.world.gen.util.LogicBlockInteractions; diff --git a/src/main/java/com/hbm/blocks/generic/LogicBlockInvis.java b/src/main/java/com/hbm/blocks/generic/LogicBlockInvis.java index fb58b0baf..093547ee0 100644 --- a/src/main/java/com/hbm/blocks/generic/LogicBlockInvis.java +++ b/src/main/java/com/hbm/blocks/generic/LogicBlockInvis.java @@ -1,8 +1,5 @@ package com.hbm.blocks.generic; -import com.hbm.blocks.IBlockSideRotation; -import net.minecraft.block.material.Material; - public class LogicBlockInvis extends LogicBlock{ public LogicBlockInvis() { diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index e48706777..6efe47ff3 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -1,22 +1,14 @@ package com.hbm.items.tool; import java.util.List; -import java.util.Random; -import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; -import com.hbm.itempool.ItemPool; -import com.hbm.itempool.ItemPoolsSingle; import com.hbm.lib.Library; -import com.hbm.main.MainRegistry; import com.hbm.main.StructureManager; -import com.hbm.tileentity.machine.storage.TileEntitySafe; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; public class ItemWandD extends Item { @@ -33,8 +25,6 @@ public class ItemWandD extends Item { int y = world.getHeightValue(pos.blockX, pos.blockZ); - Random rand = new Random(); - StructureManager.crane.build(world, pos.blockX, y, pos.blockZ); /*if(world.getBlock(pos.blockX, y - 1, pos.blockZ).canPlaceTorchOnTop(world, pos.blockX, y - 1, pos.blockZ)) { world.setBlock(pos.blockX, y, pos.blockZ, ModBlocks.safe, rand.nextInt(4) + 2, 2); diff --git a/src/main/java/com/hbm/module/ModuleBurnTime.java b/src/main/java/com/hbm/module/ModuleBurnTime.java index f5d332fe6..1c9d84e74 100644 --- a/src/main/java/com/hbm/module/ModuleBurnTime.java +++ b/src/main/java/com/hbm/module/ModuleBurnTime.java @@ -81,19 +81,23 @@ public class ModuleBurnTime { writer.name("D:heatBalefie").value(modHeat[modBalefire]); } - public int getBurnTime(ItemStack stack) { - //int fuel = TileEntityFurnace.getItemBurnTime(stack); + public int getBurnTime(ItemStack stack, double def) { int fuel = FuelHandler.getBurnTimeFromCache(stack); + if(fuel == 0) return 0; + return (int) (fuel * getMod(stack, modTime, def)); + } - if(fuel == 0) - return 0; + public int getBurnTime(ItemStack stack) { + return getBurnTime(stack, 1D); + } - return (int) (fuel * getMod(stack, modTime)); + public int getBurnHeat(int base, ItemStack stack, double def) { + if(base <= 0) return 0; + return (int) (base * getMod(stack, modHeat)); } public int getBurnHeat(int base, ItemStack stack) { - if(base <= 0) return 0; - return (int) (base * getMod(stack, modHeat)); + return getBurnHeat(base, stack, 1D); } public double getMod(ItemStack stack, double[] mod, double def) { diff --git a/src/main/java/com/hbm/module/ParseMSES1.java b/src/main/java/com/hbm/module/ParseMSES1.java index 26aa50214..fdb4358b4 100644 --- a/src/main/java/com/hbm/module/ParseMSES1.java +++ b/src/main/java/com/hbm/module/ParseMSES1.java @@ -231,7 +231,7 @@ public class ParseMSES1 implements IParse { // listens to an RoR signal using the supplied channel name and saves it to the buffer if(lower.startsWith("listen ")) { - if(line.length() <= 7 || ctx.buffer.isEmpty()) return EnumStatementReturn.PARAMETER_ERROR; + if(line.length() <= 7) return EnumStatementReturn.PARAMETER_ERROR; RTTYChannel chan = RTTYSystem.listen(ctx.world, substitute(ctx, line.substring(7))); if(chan != null) ctx.buffer = chan.signal + ""; return EnumStatementReturn.OK; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBlastFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBlastFurnace.java index 2bba3a340..4554f158f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBlastFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBlastFurnace.java @@ -199,7 +199,8 @@ public class TileEntityMachineBlastFurnace extends TileEntityMachineBase impleme } public int getBurnTime(ItemStack stack) { - return burnModule.getBurnHeat(burnModule.getBurnTime(stack), stack); + if(stack.getItem().hasContainerItem(stack)) return 0; + return burnModule.getBurnHeat(burnModule.getBurnTime(stack, 0D), stack, 0D); } @Override diff --git a/src/main/java/com/hbm/world/gen/nbt/SpawnCondition.java b/src/main/java/com/hbm/world/gen/nbt/SpawnCondition.java index 5785b6799..5247db85d 100644 --- a/src/main/java/com/hbm/world/gen/nbt/SpawnCondition.java +++ b/src/main/java/com/hbm/world/gen/nbt/SpawnCondition.java @@ -6,7 +6,6 @@ import java.util.function.Function; import java.util.function.Predicate; import com.hbm.config.ServerConfig; -import com.hbm.config.StructureConfig; import com.hbm.util.Tuple.Pair; import com.hbm.util.Tuple.Quartet; diff --git a/src/main/java/com/hbm/world/gen/util/LogicBlockConditions.java b/src/main/java/com/hbm/world/gen/util/LogicBlockConditions.java index 75f7cbd5c..fbcd9b50a 100644 --- a/src/main/java/com/hbm/world/gen/util/LogicBlockConditions.java +++ b/src/main/java/com/hbm/world/gen/util/LogicBlockConditions.java @@ -6,7 +6,6 @@ import com.hbm.blocks.generic.LogicBlock; import com.hbm.entity.mob.EntityUndeadSoldier; import com.hbm.items.ModItems; import com.hbm.tileentity.bomb.TileEntityCharge; -import com.hbm.tileentity.machine.TileEntityLockableBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; diff --git a/src/main/java/com/hbm/world/gen/util/LogicBlockInteractions.java b/src/main/java/com/hbm/world/gen/util/LogicBlockInteractions.java index fc250a7a0..c706f5f7f 100644 --- a/src/main/java/com/hbm/world/gen/util/LogicBlockInteractions.java +++ b/src/main/java/com/hbm/world/gen/util/LogicBlockInteractions.java @@ -5,15 +5,12 @@ import com.hbm.blocks.generic.LogicBlock; import com.hbm.items.ModItems; import com.hbm.potion.HbmPotion; import com.hbm.tileentity.machine.TileEntityLockableBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.PotionEffect; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Facing; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -28,13 +25,8 @@ public class LogicBlockInteractions { public static LinkedHashMap> interactions; public static Consumer TEST = (array) -> { - World world = (World) array[0]; LogicBlock.TileEntityLogicBlock logic = (LogicBlock.TileEntityLogicBlock) array[1]; - int x = (int) array[2]; - int y = (int) array[3]; - int z = (int) array[4]; EntityPlayer player = (EntityPlayer) array[5]; - int side = (int) array[6]; if(logic.phase > 1) return; @@ -62,14 +54,12 @@ public class LogicBlockInteractions { public static Consumer POWER_LOCK = (array) -> { World world = (World) array[0]; - LogicBlock.TileEntityLogicBlock logic = (LogicBlock.TileEntityLogicBlock) array[1]; EntityPlayer player = (EntityPlayer) array[5]; int x = (int) array[2]; int y = (int) array[3]; int z = (int) array[4]; IEnergyHandlerMK2 handler = null; - ForgeDirection parallel = logic.direction.getRotation(ForgeDirection.UP); for (int i1 = 0; i1 < 6; ++i1) { if(world.getTileEntity(x + Facing.offsetsXForSide[i1], y + Facing.offsetsYForSide[i1], z + Facing.offsetsZForSide[i1]) instanceof IEnergyHandlerMK2) {