diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 77b5da267b..450564d214 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -613,6 +613,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, Fx.unitDrop.at(unit); } + public boolean canWithdraw(){ + return true; + } + public boolean canUnload(){ return block.unloadable; } @@ -1342,11 +1346,6 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, public ItemModule flowItems(){ return items; } - - public boolean displayable(){ - return true; - } - @Override public void display(Table table){ //display the block stuff diff --git a/core/src/mindustry/ui/Displayable.java b/core/src/mindustry/ui/Displayable.java index 770e490cab..d856b2beab 100644 --- a/core/src/mindustry/ui/Displayable.java +++ b/core/src/mindustry/ui/Displayable.java @@ -4,5 +4,9 @@ import arc.scene.ui.layout.*; /** An interface for things that can be displayed when hovered over. */ public interface Displayable{ + default boolean displayable(){ + return true; + } + void display(Table table); } diff --git a/core/src/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/mindustry/ui/fragments/BlockInventoryFragment.java index 2e92791074..84f5bc221c 100644 --- a/core/src/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/mindustry/ui/fragments/BlockInventoryFragment.java @@ -70,6 +70,8 @@ public class BlockInventoryFragment{ } private void takeItem(int requested){ + if(!build.canWithdraw()) return; + //take everything int amount = Math.min(requested, player.unit().maxAccepted(lastItem)); diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 121137b274..904fbc0d61 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -577,7 +577,7 @@ public class PlacementFragment{ if(Core.scene.hasMouse() || topTable.hit(v.x, v.y, false) != null) return null; //check for a unit - Unit unit = Units.closestOverlap(player.team(), Core.input.mouseWorldX(), Core.input.mouseWorldY(), 5f, u -> !u.isLocal()); + Unit unit = Units.closestOverlap(player.team(), Core.input.mouseWorldX(), Core.input.mouseWorldY(), 5f, u -> !u.isLocal() && u.displayable()); //if cursor has a unit, display it if(unit != null) return unit;