diff --git a/core/lib/ucore.jar b/core/lib/ucore.jar index 407d15d559..b1a266e30d 100644 Binary files a/core/lib/ucore.jar and b/core/lib/ucore.jar differ diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 61c5ca3744..e9229ca956 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -1,6 +1,10 @@ package io.anuke.mindustry.world.blocks; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.utils.ObjectMap; + import io.anuke.mindustry.Inventory; +import io.anuke.mindustry.Renderer; import io.anuke.mindustry.Vars; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; @@ -38,6 +42,8 @@ public class ProductionBlocks{ }}, router = new Block("router"){ + private ObjectMap lastmap = new ObjectMap<>(); + int maxitems = 20; { update = true; solid = true; @@ -46,14 +52,32 @@ public class ProductionBlocks{ @Override public void update(Tile tile){ if(Timers.get(tile, 2) && tile.entity.totalItems() > 0){ - tryDump(tile, tile.rotation++, null); + if(lastmap.get(tile, (byte)-1) != tile.rotation) + tryDump(tile, tile.rotation, null); + + tile.rotation ++; tile.rotation %= 4; } } + + @Override + public void handleItem(Tile tile, Item item, Tile source){ + super.handleItem(tile, item, source); + lastmap.put(tile, (byte)tile.relativeTo(source.x, source.y)); + } @Override public boolean accept(Item item, Tile dest, Tile source){ - return true; + int items = dest.entity.totalItems(); + return items < maxitems; + } + + @Override + public void drawPixelOverlay(Tile tile){ + + float fract = (float)tile.entity.totalItems()/maxitems; + + Renderer.drawBar(Color.GREEN, tile.worldx(), tile.worldy() + 13, fract); } @Override