diff --git a/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java b/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java index 3a85a83aac..4c4f26f8ab 100644 --- a/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java +++ b/core/src/io/anuke/mindustry/maps/generators/MapGenerator.java @@ -140,7 +140,7 @@ public class MapGenerator extends Generator{ if(tile.getTeam() == Team.none && tile.block() instanceof StorageBlock){ for(ItemStack stack : storageDrops){ if(Mathf.chance(0.3)){ - tile.entity.items.add(stack.item, Mathf.random(stack.amount)); + tile.entity.items.add(stack.item, Math.min(Mathf.random(stack.amount), tile.block().itemCapacity)); } } } diff --git a/core/src/io/anuke/mindustry/world/BlockStorage.java b/core/src/io/anuke/mindustry/world/BlockStorage.java index a0308a9271..c0f73914a0 100644 --- a/core/src/io/anuke/mindustry/world/BlockStorage.java +++ b/core/src/io/anuke/mindustry/world/BlockStorage.java @@ -1,19 +1,21 @@ package io.anuke.mindustry.world; import io.anuke.arc.collection.Array; -import io.anuke.mindustry.entities.Effects; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.Vector2; import io.anuke.arc.util.Time; import io.anuke.mindustry.Vars; import io.anuke.mindustry.content.Fx; +import io.anuke.mindustry.entities.Effects; +import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.entities.type.TileEntity; import io.anuke.mindustry.entities.type.Unit; -import io.anuke.mindustry.entities.effect.Puddle; import io.anuke.mindustry.game.UnlockableContent; import io.anuke.mindustry.type.Item; +import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.Liquid; import io.anuke.mindustry.world.consumers.ConsumeItem; +import io.anuke.mindustry.world.consumers.ConsumeItems; import io.anuke.mindustry.world.consumers.ConsumeLiquid; import io.anuke.mindustry.world.consumers.Consumers; import io.anuke.mindustry.world.meta.BlockBars; @@ -91,6 +93,13 @@ public abstract class BlockStorage extends UnlockableContent{ } public boolean acceptItem(Item item, Tile tile, Tile source){ + if(tile.entity != null && consumes.has(ConsumeItems.class)){ + for(ItemStack stack : consumes.items()){ + if(stack.item == item){ + return tile.entity.items.get(item) < getMaximumAccepted(tile, item); + } + } + } return tile.entity != null && consumes.has(ConsumeItem.class) && consumes.item() == item && tile.entity.items.get(item) < getMaximumAccepted(tile, item); } diff --git a/core/src/io/anuke/mindustry/world/Build.java b/core/src/io/anuke/mindustry/world/Build.java index 1e8a5eac5b..17570b5ea1 100644 --- a/core/src/io/anuke/mindustry/world/Build.java +++ b/core/src/io/anuke/mindustry/world/Build.java @@ -128,7 +128,7 @@ public class Build{ if(tile == null) return false; if(type.isMultiblock()){ - if(type.canReplace(tile.block()) && tile.block().size == type.size && type.canPlaceOn(tile)){ + if(type.canReplace(tile.block()) && tile.block().size == type.size && type.canPlaceOn(tile) && tile.getTeam() == team){ return true; } diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java index 3a4d106d24..f0cd76e6d3 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java @@ -105,9 +105,11 @@ public class CoreBlock extends StorageBlock{ Draw.rect(region, tile.drawx(), tile.drawy()); - Draw.alpha(entity.heat); - Draw.rect(topRegion, tile.drawx(), tile.drawy()); - Draw.color(); + if(Core.atlas.isFound(topRegion)){ + Draw.alpha(entity.heat); + Draw.rect(topRegion, tile.drawx(), tile.drawy()); + Draw.color(); + } if(entity.currentUnit != null){ Unit player = entity.currentUnit;