This commit is contained in:
Anuken
2020-04-25 00:04:14 -04:00
parent 09e08a474b
commit 2e2c8ceab4
8 changed files with 18 additions and 12 deletions

View File

@@ -44,6 +44,7 @@ public class Block extends UnlockableContent{
public boolean consumesPower = true;
public boolean outputsPower = false;
public boolean outputsPayload = false;
public boolean acceptsItems = false;
public int itemCapacity = 10;
public float liquidCapacity = 10f;

View File

@@ -80,6 +80,10 @@ public interface Autotiler{
}
}
default boolean facing(int x, int y, int rotation, int x2, int y2){
return Point2.equals(x + Geometry.d4(rotation).x,y + Geometry.d4(rotation).y, x2, y2);
}
default boolean blends(Tile tile, int rotation, @Nullable BuildRequest[] directional, int direction, boolean checkWorld){
int realDir = Mathf.mod(rotation - direction, 4);
if(directional != null && directional[realDir] != null){

View File

@@ -87,7 +87,7 @@ public class OverflowGate extends Block{
}
public Tilec getTileTarget(Item item, Tile src, boolean flip){
int from = relativeTo(src.x, src.y);
int from = absoluteRelativeTo(src.x, src.y);
if(from == -1) return null;
Tilec to = nearby((from + 2) % 4);
if(to == null) return null;

View File

@@ -100,7 +100,7 @@ public class Sorter extends Block{
}
Tilec getTileTarget(Item item, Tilec source, boolean flip){
int dir = source.relativeTo(tile.x, tile.y);
int dir = source.absoluteRelativeTo(tile.x, tile.y);
if(dir == -1) return null;
Tilec to;

View File

@@ -73,8 +73,10 @@ public class StackConveyor extends Block implements Autotiler{
if(state == stateLoad){ //standard conveyor mode
return otherblock.outputsItems() && lookingAt(tile, rotation, otherx, othery, otherrot, otherblock);
}else if(state == stateUnload){ //router mode
return (otherblock.hasItems || otherblock.outputsItems()) &&
(notLookingAt(tile, rotation, otherx, othery, otherrot, otherblock) || otherblock instanceof StackConveyor);
return (otherblock.hasItems || otherblock.outputsItems() || otherblock.acceptsItems) &&
(notLookingAt(tile, rotation, otherx, othery, otherrot, otherblock) ||
(otherblock instanceof StackConveyor && facing(otherx, othery, otherrot, tile.x, tile.y))) &&
!(world.ent(otherx, othery) instanceof StackConveyorEntity && ((StackConveyorEntity)world.ent(otherx, othery)).state == stateUnload);
}
}
return otherblock.outputsItems() && blendsArmored(tile, rotation, otherx, othery, otherrot, otherblock) && otherblock instanceof StackConveyor;
@@ -151,8 +153,6 @@ public class StackConveyor extends Block implements Autotiler{
public void onProximityUpdate(){
super.onProximityUpdate();
Fx.healBlockFull.at(tile, 1);
state = stateMove;
int[] bits = buildBlending(tile, tile.rotation(), null, true);
@@ -160,6 +160,7 @@ public class StackConveyor extends Block implements Autotiler{
if(bits[0] == 0 && !blends(tile, tile.rotation(), 0) && blends(tile, tile.rotation(), 2)) state = stateUnload; // a 0 that faces into none with a conveyor behind it
blendprox = 0;
for(int i = 0; i < 4; i++){
if(blends(tile, rotation(), i)){
blendprox |= (1 << i);

View File

@@ -8,7 +8,7 @@ public class ItemVoid extends Block{
public ItemVoid(String name){
super(name);
update = solid = true;
update = solid = acceptsItems = true;
}
public class ItemVoidEntity extends TileEntity{