From fda9e6bb9cf44b4759d52ba2f5b518d4351edeb9 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 14 Aug 2018 10:41:54 -0400 Subject: [PATCH] Various crashes fixed --- .../src/io/anuke/mindustry/entities/traits/BuilderTrait.java | 5 +++++ core/src/io/anuke/mindustry/entities/units/types/Drone.java | 2 +- .../anuke/mindustry/maps/generation/FortressGenerator.java | 2 +- .../io/anuke/mindustry/maps/generation/WorldGenerator.java | 4 ++-- core/src/io/anuke/mindustry/ui/ContentDisplay.java | 2 -- .../anuke/mindustry/ui/fragments/BlockInventoryFragment.java | 2 +- .../anuke/mindustry/world/blocks/distribution/Conveyor.java | 2 +- .../mindustry/world/blocks/distribution/MassDriver.java | 2 +- .../io/anuke/mindustry/world/blocks/production/Drill.java | 1 + .../anuke/mindustry/world/blocks/production/SolidPump.java | 1 + core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java | 2 +- 11 files changed, 15 insertions(+), 10 deletions(-) diff --git a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java index 675d3533fb..04615119ed 100644 --- a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java @@ -202,6 +202,11 @@ public interface BuilderTrait extends Entity{ //otherwise, update it. BuildEntity entity = tile.entity(); + if(entity == null){ + getPlaceQueue().removeFirst(); + return; + } + //deconstructing is 2x as fast if(current.remove){ entity.deconstruct(unit, core, 2f / entity.buildCost * Timers.delta() * getBuildPower(tile)); diff --git a/core/src/io/anuke/mindustry/entities/units/types/Drone.java b/core/src/io/anuke/mindustry/entities/units/types/Drone.java index 2530e50ec2..d61a58e785 100644 --- a/core/src/io/anuke/mindustry/entities/units/types/Drone.java +++ b/core/src/io/anuke/mindustry/entities/units/types/Drone.java @@ -429,7 +429,7 @@ public class Drone extends FlyingUnit implements BuilderTrait{ @Override public void write(DataOutput data) throws IOException{ super.write(data); - data.writeInt(mineTile == null ? -1 : mineTile.packedPosition()); + data.writeInt(mineTile == null || !state.is(mine) ? -1 : mineTile.packedPosition()); data.writeInt(state.is(repair) && target instanceof TileEntity ? ((TileEntity)target).tile.packedPosition() : -1); writeBuilding(data); } diff --git a/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java b/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java index 12f21f066f..021123cf1a 100644 --- a/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generation/FortressGenerator.java @@ -128,7 +128,7 @@ public class FortressGenerator{ int maxIndex = (int)(1 + ((float)gen.sector.difficulty / maxDifficulty * (structures.length-2))); for(int i = maxIndex/2; i < maxIndex; i++){ - selected.add(structures[i]); + selected.add(structures[Math.min(i, structures.length-1)]); } float baseChance = 0.8f / selected.size; diff --git a/core/src/io/anuke/mindustry/maps/generation/WorldGenerator.java b/core/src/io/anuke/mindustry/maps/generation/WorldGenerator.java index bdd6ee375c..854cbfb90c 100644 --- a/core/src/io/anuke/mindustry/maps/generation/WorldGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generation/WorldGenerator.java @@ -242,7 +242,7 @@ public class WorldGenerator{ int x = sectorX * sectorSize + localX + Short.MAX_VALUE; int y = sectorY * sectorSize + localY + Short.MAX_VALUE; - Block floor; + Block floor = Blocks.stone; Block wall = Blocks.air; double ridge = rid.getValue(x, y, 1f / 400f); @@ -283,7 +283,7 @@ public class WorldGenerator{ if(iceridge > 0.25 && minDst > lerpDst/1.5f){ elevation ++; } - }else{ + }else if(minDst > lerpDst/1.5f){ floor = Blocks.lava; } diff --git a/core/src/io/anuke/mindustry/ui/ContentDisplay.java b/core/src/io/anuke/mindustry/ui/ContentDisplay.java index fcaba75760..2e99d06629 100644 --- a/core/src/io/anuke/mindustry/ui/ContentDisplay.java +++ b/core/src/io/anuke/mindustry/ui/ContentDisplay.java @@ -96,8 +96,6 @@ public class ContentDisplay{ table.row(); table.add(Bundles.format("text.item.fluxiness", (int) (item.fluxiness * 100))); table.row(); - table.add(Bundles.format("text.item.hardness", item.hardness)); - table.row(); } public static void displayLiquid(Table table, Liquid liquid){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java index a933e1b579..47221b77e3 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlockInventoryFragment.java @@ -89,7 +89,7 @@ public class BlockInventoryFragment extends Fragment{ table.background("inventory"); table.setTouchable(Touchable.enabled); table.update(() -> { - if(tile == null || tile.entity == null || !tile.block().isAccessible() || tile.entity.items.total() == 0){ + if(state.is(State.menu) || tile == null || tile.entity == null || !tile.block().isAccessible() || tile.entity.items.total() == 0){ hide(); }else{ if(holding && lastItem != null){ diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java index 53bace015a..58dec89871 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java @@ -98,7 +98,7 @@ public class Conveyor extends Block{ byte rotation = tile.getRotation(); int frame = entity.clogHeat <= 0.5f ? (int) ((Timers.time() / 4f) % 4) : 0; - Draw.rect(regions[entity.blendbits][frame], tile.drawx(), tile.drawy(), + Draw.rect(regions[Mathf.clamp(entity.blendbits, 0, regions.length - 1)][Mathf.clamp(frame, 0, regions[0].length - 1)], tile.drawx(), tile.drawy(), tilesize * entity.blendsclx, tilesize * entity.blendscly, rotation*90); } diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java index 33f9111fad..84a36d5be8 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/MassDriver.java @@ -238,7 +238,7 @@ public class MassDriver extends Block{ protected boolean linkValid(Tile tile){ MassDriverEntity entity = tile.entity(); - if(entity.link == -1) return false; + if(entity == null || entity.link == -1) return false; Tile link = world.tile(entity.link); return link != null && link.block() instanceof MassDriver && tile.distanceTo(link) <= range; diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java index fdac8ab508..c98d273eed 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Drill.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Drill.java @@ -234,6 +234,7 @@ public class Drill extends Block{ } protected boolean isValid(Tile tile){ + if(tile == null) return false; ItemStack drops = tile.floor().drops; return drops != null && drops.item.hardness <= tier; } diff --git a/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java b/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java index 49523b350b..69bea0e95d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/SolidPump.java @@ -107,6 +107,7 @@ public class SolidPump extends Pump{ @Override protected boolean isValid(Tile tile){ + if(tile == null) return false; return !tile.floor().isLiquid; } diff --git a/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java b/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java index 61be341aa9..863cbc8dc7 100644 --- a/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java +++ b/core/src/io/anuke/mindustry/world/consumers/ConsumeItem.java @@ -48,7 +48,7 @@ public class ConsumeItem extends Consume{ @Override public boolean valid(Block block, TileEntity entity){ - return entity.items.has(item, amount); + return entity != null && entity.items != null && entity.items.has(item, amount); } @Override