From 97fc46cffe2115270a50ccb68d174ec25ce645fa Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 26 Aug 2020 16:48:12 -0400 Subject: [PATCH] #2434 --- core/src/mindustry/world/Tile.java | 9 +++++++++ .../mindustry/world/blocks/defense/ShockMine.java | 2 +- .../world/blocks/distribution/ItemBridge.java | 1 + .../world/blocks/distribution/Junction.java | 1 + .../world/blocks/distribution/OverflowGate.java | 5 +++-- .../world/blocks/distribution/PayloadConveyor.java | 2 ++ .../src/mindustry/world/blocks/liquid/Conduit.java | 1 + .../world/blocks/liquid/LiquidJunction.java | 2 ++ .../world/blocks/liquid/LiquidRouter.java | 2 ++ .../mindustry/world/blocks/logic/LogicBlock.java | 14 ++++++++------ .../mindustry/world/blocks/power/PowerDiode.java | 1 + .../world/blocks/power/SolarGenerator.java | 4 ++-- .../mindustry/world/blocks/sandbox/ItemVoid.java | 2 +- .../mindustry/world/blocks/sandbox/LiquidVoid.java | 2 +- .../world/blocks/sandbox/PowerSource.java | 2 +- gradle.properties | 2 +- 16 files changed, 37 insertions(+), 15 deletions(-) diff --git a/core/src/mindustry/world/Tile.java b/core/src/mindustry/world/Tile.java index a63026f827..a464d9174b 100644 --- a/core/src/mindustry/world/Tile.java +++ b/core/src/mindustry/world/Tile.java @@ -182,6 +182,10 @@ public class Tile implements Position, QuadTreeObject, Displayable{ public void setBlock(@NonNull Block type, Team team, int rotation, Prov entityprov){ changing = true; + if(type.isStatic() || this.block.isStatic()){ + recache(); + } + this.block = type; preChanged(); changeEntity(team, entityprov, (byte)Mathf.mod(rotation, 4)); @@ -288,6 +292,11 @@ public class Tile implements Position, QuadTreeObject, Displayable{ Call.removeTile(this); } + /** set()-s this tile, except it's synced across the network */ + public void setNet(Block block){ + Call.setTile(this, block, Team.derelict, 0); + } + /** set()-s this tile, except it's synced across the network */ public void setNet(Block block, Team team, int rotation){ Call.setTile(this, block, team, rotation); diff --git a/core/src/mindustry/world/blocks/defense/ShockMine.java b/core/src/mindustry/world/blocks/defense/ShockMine.java index 8421fb4257..52c7774be0 100644 --- a/core/src/mindustry/world/blocks/defense/ShockMine.java +++ b/core/src/mindustry/world/blocks/defense/ShockMine.java @@ -43,7 +43,7 @@ public class ShockMine extends Block{ @Override public void unitOn(Unit unit){ - if(unit.team() != team && timer(timerDamage, cooldown)){ + if(enabled && unit.team != team && timer(timerDamage, cooldown)){ for(int i = 0; i < tendrils; i++){ Lightning.create(team, Pal.lancerLaser, damage, x, y, Mathf.random(360f), length); } diff --git a/core/src/mindustry/world/blocks/distribution/ItemBridge.java b/core/src/mindustry/world/blocks/distribution/ItemBridge.java index e25c4e0144..6ce1107285 100644 --- a/core/src/mindustry/world/blocks/distribution/ItemBridge.java +++ b/core/src/mindustry/world/blocks/distribution/ItemBridge.java @@ -42,6 +42,7 @@ public class ItemBridge extends Block{ unloadable = false; group = BlockGroup.transportation; canOverdrive = false; + noUpdateDisabled = true; //point2 config is relative config(Point2.class, (ItemBridgeBuild tile, Point2 i) -> tile.link = Point2.pack(i.x + tile.tileX(), i.y + tile.tileY())); diff --git a/core/src/mindustry/world/blocks/distribution/Junction.java b/core/src/mindustry/world/blocks/distribution/Junction.java index 513f59d959..26801e86c2 100644 --- a/core/src/mindustry/world/blocks/distribution/Junction.java +++ b/core/src/mindustry/world/blocks/distribution/Junction.java @@ -19,6 +19,7 @@ public class Junction extends Block{ solid = true; group = BlockGroup.transportation; unloadable = false; + noUpdateDisabled = true; } @Override diff --git a/core/src/mindustry/world/blocks/distribution/OverflowGate.java b/core/src/mindustry/world/blocks/distribution/OverflowGate.java index 44f1b80283..5f4d66db34 100644 --- a/core/src/mindustry/world/blocks/distribution/OverflowGate.java +++ b/core/src/mindustry/world/blocks/distribution/OverflowGate.java @@ -92,15 +92,16 @@ public class OverflowGate extends Block{ if(from == -1) return null; Building to = nearby((from + 2) % 4); boolean canForward = to != null && to.acceptItem(this, item) && to.team == team && !(to.block() instanceof OverflowGate); + boolean inv = invert == enabled; - if(!canForward || invert){ + if(!canForward || inv){ Building a = nearby(Mathf.mod(from - 1, 4)); Building b = nearby(Mathf.mod(from + 1, 4)); boolean ac = a != null && a.acceptItem(this, item) && !(a.block() instanceof OverflowGate) && a.team == team; boolean bc = b != null && b.acceptItem(this, item) && !(b.block() instanceof OverflowGate) && b.team == team; if(!ac && !bc){ - return invert && canForward ? to : null; + return inv && canForward ? to : null; } if(ac && !bc){ diff --git a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java index 46d26fb538..af7c59b0f0 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java @@ -96,6 +96,8 @@ public class PayloadConveyor extends Block{ @Override public void updateTile(){ + if(!enabled) return; + progress = Time.time() % moveTime; updatePayload(); diff --git a/core/src/mindustry/world/blocks/liquid/Conduit.java b/core/src/mindustry/world/blocks/liquid/Conduit.java index 60552d6f3c..69cc036a13 100644 --- a/core/src/mindustry/world/blocks/liquid/Conduit.java +++ b/core/src/mindustry/world/blocks/liquid/Conduit.java @@ -35,6 +35,7 @@ public class Conduit extends LiquidBlock implements Autotiler{ solid = false; floating = true; conveyorPlacement = true; + noUpdateDisabled = true; } @Override diff --git a/core/src/mindustry/world/blocks/liquid/LiquidJunction.java b/core/src/mindustry/world/blocks/liquid/LiquidJunction.java index 4d0942afab..b449d721a8 100644 --- a/core/src/mindustry/world/blocks/liquid/LiquidJunction.java +++ b/core/src/mindustry/world/blocks/liquid/LiquidJunction.java @@ -36,6 +36,8 @@ public class LiquidJunction extends LiquidBlock{ @Override public Building getLiquidDestination(Building source, Liquid liquid){ + if(!enabled) return this; + int dir = source.relativeTo(tile.x, tile.y); dir = (dir + 4) % 4; Building next = nearby(dir); diff --git a/core/src/mindustry/world/blocks/liquid/LiquidRouter.java b/core/src/mindustry/world/blocks/liquid/LiquidRouter.java index 42ce949915..6184e179de 100644 --- a/core/src/mindustry/world/blocks/liquid/LiquidRouter.java +++ b/core/src/mindustry/world/blocks/liquid/LiquidRouter.java @@ -7,6 +7,8 @@ public class LiquidRouter extends LiquidBlock{ public LiquidRouter(String name){ super(name); + + noUpdateDisabled = true; } public class LiquidRouterEntity extends LiquidBuild{ diff --git a/core/src/mindustry/world/blocks/logic/LogicBlock.java b/core/src/mindustry/world/blocks/logic/LogicBlock.java index 9ed0e4f734..9b5b4a384b 100644 --- a/core/src/mindustry/world/blocks/logic/LogicBlock.java +++ b/core/src/mindustry/world/blocks/logic/LogicBlock.java @@ -361,15 +361,17 @@ public class LogicBlock extends Block{ updateCode(); } - accumulator += edelta() * instructionsPerTick * (consValid() ? 1 : 0); + if(enabled){ + accumulator += edelta() * instructionsPerTick * (consValid() ? 1 : 0); - if(accumulator > maxInstructionScale * instructionsPerTick) accumulator = maxInstructionScale * instructionsPerTick; + if(accumulator > maxInstructionScale * instructionsPerTick) accumulator = maxInstructionScale * instructionsPerTick; - for(int i = 0; i < (int)accumulator; i++){ - if(executor.initialized()){ - executor.runOnce(); + for(int i = 0; i < (int)accumulator; i++){ + if(executor.initialized()){ + executor.runOnce(); + } + accumulator --; } - accumulator --; } } diff --git a/core/src/mindustry/world/blocks/power/PowerDiode.java b/core/src/mindustry/world/blocks/power/PowerDiode.java index c3f3106a43..05a577902a 100644 --- a/core/src/mindustry/world/blocks/power/PowerDiode.java +++ b/core/src/mindustry/world/blocks/power/PowerDiode.java @@ -21,6 +21,7 @@ public class PowerDiode extends Block{ solid = true; insulated = true; group = BlockGroup.power; + noUpdateDisabled = true; } @Override diff --git a/core/src/mindustry/world/blocks/power/SolarGenerator.java b/core/src/mindustry/world/blocks/power/SolarGenerator.java index 8965978f9c..94e94c1c68 100644 --- a/core/src/mindustry/world/blocks/power/SolarGenerator.java +++ b/core/src/mindustry/world/blocks/power/SolarGenerator.java @@ -24,12 +24,12 @@ public class SolarGenerator extends PowerGenerator{ public class SolarGeneratorBuild extends GeneratorBuild{ @Override public void updateTile(){ - productionEfficiency = + productionEfficiency = enabled ? Mathf.maxZero(Attribute.light.env() + (state.rules.solarPowerMultiplier < 0 ? (state.rules.lighting ? 1f - state.rules.ambientLight.a : 1f) : state.rules.solarPowerMultiplier - )); + )) : 0f; } } } diff --git a/core/src/mindustry/world/blocks/sandbox/ItemVoid.java b/core/src/mindustry/world/blocks/sandbox/ItemVoid.java index ca52e40591..6ba1c9c5a6 100644 --- a/core/src/mindustry/world/blocks/sandbox/ItemVoid.java +++ b/core/src/mindustry/world/blocks/sandbox/ItemVoid.java @@ -17,7 +17,7 @@ public class ItemVoid extends Block{ @Override public boolean acceptItem(Building source, Item item){ - return true; + return enabled; } } } diff --git a/core/src/mindustry/world/blocks/sandbox/LiquidVoid.java b/core/src/mindustry/world/blocks/sandbox/LiquidVoid.java index 0b701b75cb..0f49ffd3a7 100644 --- a/core/src/mindustry/world/blocks/sandbox/LiquidVoid.java +++ b/core/src/mindustry/world/blocks/sandbox/LiquidVoid.java @@ -22,7 +22,7 @@ public class LiquidVoid extends Block{ public class LiquidVoidBuild extends Building{ @Override public boolean acceptLiquid(Building source, Liquid liquid, float amount){ - return true; + return enabled; } @Override diff --git a/core/src/mindustry/world/blocks/sandbox/PowerSource.java b/core/src/mindustry/world/blocks/sandbox/PowerSource.java index 32002747fb..fbc24f5ea7 100644 --- a/core/src/mindustry/world/blocks/sandbox/PowerSource.java +++ b/core/src/mindustry/world/blocks/sandbox/PowerSource.java @@ -14,7 +14,7 @@ public class PowerSource extends PowerNode{ public class PowerSourceBuild extends PowerNodeBuild{ @Override public float getPowerProduction(){ - return 10000f; + return enabled ? 10000f : 0f; } } diff --git a/gradle.properties b/gradle.properties index d6f1b99a58..cd20e76ae5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=c899ca692e409237ff08631845cf0ea8b9392bb5 +archash=