Prevents plastanium conveyor unload exploit (#4098)

* Prevent unloaders from unloading plast loading dock

* Use overridable boolean method unloadable instead

* unloadable -> canUnload
This commit is contained in:
Patrick 'Quezler' Mounier
2020-12-24 16:33:40 +01:00
committed by GitHub
parent 85a668c202
commit 9397bd57c4
3 changed files with 10 additions and 1 deletions

View File

@@ -384,6 +384,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
//endregion
//region handler methods
public boolean canUnload(){
return block.unloadable;
}
/** Called when an unloader takes an item. */
public void itemTaken(Item item){

View File

@@ -179,6 +179,11 @@ public class StackConveyor extends Block implements Autotiler{
}
}
@Override
public boolean canUnload(){
return state != stateLoad;
}
@Override
public float efficiency(){
return 1f;

View File

@@ -61,7 +61,7 @@ public class Unloader extends Block{
int pos = (offset + i) % proximity.size;
var other = proximity.get(pos);
if(other.interactable(team) && other.block.unloadable && other.block.hasItems
if(other.interactable(team) && other.block.unloadable && other.canUnload() && other.block.hasItems
&& ((sortItem == null && other.items.total() > 0) || (sortItem != null && other.items.has(sortItem)))){
//make sure the item can't be dumped back into this block
dumpingTo = other;