diff --git a/core/src/mindustry/world/blocks/experimental/BlockForge.java b/core/src/mindustry/world/blocks/experimental/BlockForge.java index ea2879a3d9..83f9bc032a 100644 --- a/core/src/mindustry/world/blocks/experimental/BlockForge.java +++ b/core/src/mindustry/world/blocks/experimental/BlockForge.java @@ -36,7 +36,10 @@ public class BlockForge extends PayloadAcceptor{ hasPower = true; rotate = true; - config(Block.class, (BlockForgeBuild tile, Block block) -> tile.recipe = block); + config(Block.class, (BlockForgeBuild tile, Block block) -> { + if(tile.recipe != block) tile.progress = 0f; + tile.recipe = block; + }); consumes.add(new ConsumeItemDynamic((BlockForgeBuild e) -> e.recipe != null ? e.recipe.requirements : ItemStack.empty)); } @@ -95,8 +98,6 @@ public class BlockForge extends PayloadAcceptor{ payVector.setZero(); progress = 0f; } - }else{ - progress = 0; } heat = Mathf.lerpDelta(heat, Mathf.num(produce), 0.3f); diff --git a/core/src/mindustry/world/blocks/experimental/BlockLoader.java b/core/src/mindustry/world/blocks/experimental/BlockLoader.java index 6a0a753980..fcac9ae455 100644 --- a/core/src/mindustry/world/blocks/experimental/BlockLoader.java +++ b/core/src/mindustry/world/blocks/experimental/BlockLoader.java @@ -18,6 +18,7 @@ public class BlockLoader extends PayloadAcceptor{ public float loadTime = 2f; public int itemsLoaded = 5; public float liquidsLoaded = 5f; + public int maxBlockSize = 2; public BlockLoader(String name){ super(name); @@ -60,8 +61,8 @@ public class BlockLoader extends PayloadAcceptor{ @Override public boolean acceptPayload(Building source, Payload payload){ return super.acceptPayload(source, payload) && - (payload instanceof BuildPayload) && - ((((BuildPayload)payload).build.block.hasItems && ((BuildPayload)payload).block().unloadable && ((BuildPayload)payload).block().itemCapacity >= 10)/* || + (payload instanceof BuildPayload build) && + ((build.build.block.hasItems && build.block().unloadable && build.block().itemCapacity >= 10 && build.block().size <= maxBlockSize)/* || ((BlockPayload)payload).entity.block().hasLiquids && ((BlockPayload)payload).block().liquidCapacity >= 10f)*/); } @@ -99,7 +100,7 @@ public class BlockLoader extends PayloadAcceptor{ //load up items if(payload.block().hasItems && items.any()){ - if(timer(timerLoad, loadTime)){ + if(efficiency() > 0.01f && timer(timerLoad, loadTime / efficiency())){ //load up items a set amount of times for(int j = 0; j < itemsLoaded && items.any(); j++){ diff --git a/core/src/mindustry/world/blocks/experimental/BlockUnloader.java b/core/src/mindustry/world/blocks/experimental/BlockUnloader.java index 10c542deee..12b5e856dd 100644 --- a/core/src/mindustry/world/blocks/experimental/BlockUnloader.java +++ b/core/src/mindustry/world/blocks/experimental/BlockUnloader.java @@ -31,7 +31,7 @@ public class BlockUnloader extends BlockLoader{ //load up items if(payload.block().hasItems && !full()){ - if(timer(timerLoad, loadTime)){ + if(efficiency() > 0.01f && timer(timerLoad, loadTime / efficiency())){ //load up items a set amount of times for(int j = 0; j < itemsLoaded && !full(); j++){ for(int i = 0; i < items.length(); i++){