Duplicate IP prevention / Removed overflow inventories

This commit is contained in:
Anuken
2021-01-18 20:17:59 -05:00
parent 4aa2d9097f
commit 25b22b4f93
6 changed files with 31 additions and 71 deletions

View File

@@ -182,7 +182,7 @@ public class NetServer implements ApplicationListener{
return; return;
} }
if(Groups.player.contains(player -> player.uuid().equals(packet.uuid) || player.usid().equals(packet.usid))){ if(Groups.player.contains(player -> player.uuid().equals(packet.uuid) || player.usid().equals(packet.usid) || player.ip().equals(con.address))){
con.kick(KickReason.idInUse); con.kick(KickReason.idInUse);
return; return;
} }

View File

@@ -197,6 +197,10 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
return unit.isNull() || !unit.isValid(); return unit.isNull() || !unit.isValid();
} }
String ip(){
return con == null ? "localhost" : con.address;
}
String uuid(){ String uuid(){
return con == null ? "[LOCAL]" : con.uuid; return con == null ? "[LOCAL]" : con.uuid;
} }

View File

@@ -72,7 +72,6 @@ public class MapsDialog extends BaseDialog{
Map map = MapIO.createMap(file, true); Map map = MapIO.createMap(file, true);
//when you attempt to import a save, it will have no name, so generate one //when you attempt to import a save, it will have no name, so generate one
String name = map.tags.get("name", () -> { String name = map.tags.get("name", () -> {
String result = "unknown"; String result = "unknown";

View File

@@ -145,6 +145,12 @@ public class Conveyor extends Block implements Autotiler{
} }
} }
@Override
public void drawCracks(){
Draw.z(Layer.block - 0.15f);
super.drawCracks();
}
@Override @Override
public void overwrote(Seq<Building> builds){ public void overwrote(Seq<Building> builds){
if(builds.first() instanceof ConveyorBuild build){ if(builds.first() instanceof ConveyorBuild build){

View File

@@ -8,8 +8,6 @@ import mindustry.type.*;
import mindustry.world.*; import mindustry.world.*;
import mindustry.world.meta.*; import mindustry.world.meta.*;
import static mindustry.Vars.*;
public class OverflowGate extends Block{ public class OverflowGate extends Block{
public float speed = 1f; public float speed = 1f;
public boolean invert = false; public boolean invert = false;
@@ -23,7 +21,7 @@ public class OverflowGate extends Block{
instantTransfer = true; instantTransfer = true;
unloadable = false; unloadable = false;
canOverdrive = false; canOverdrive = false;
itemCapacity = 1; itemCapacity = 0;
} }
@Override @Override
@@ -32,73 +30,35 @@ public class OverflowGate extends Block{
} }
public class OverflowGateBuild extends Building{ public class OverflowGateBuild extends Building{
public Item lastItem;
public Tile lastInput;
public float time;
@Override
public int acceptStack(Item item, int amount, Teamc source){
return 0;
}
@Override
public int removeStack(Item item, int amount){
int result = super.removeStack(item, amount);
if(result != 0 && item == lastItem){
lastItem = null;
}
return result;
}
@Override
public void updateTile(){
if(lastItem == null && items.total() > 0){
items.clear();
}
if(lastItem != null){
if(lastInput == null){
lastItem = null;
return;
}
time += 1f / speed * Time.delta;
Building target = getTileTarget(lastItem, lastInput, false);
if(target != null && (time >= 1f)){
getTileTarget(lastItem, lastInput, true);
target.handleItem(this, lastItem);
items.remove(lastItem, 1);
lastItem = null;
}
}
}
@Override @Override
public boolean acceptItem(Building source, Item item){ public boolean acceptItem(Building source, Item item){
return team == source.team && lastItem == null && items.total() == 0; Building to = getTileTarget(item, source, false);
return to != null && to.acceptItem(this, item) && to.team == team;
} }
@Override @Override
public void handleItem(Building source, Item item){ public void handleItem(Building source, Item item){
items.add(item, 1); Building target = getTileTarget(item, source, true);
lastItem = item;
time = 0f; if(target != null) target.handleItem(this, item);
lastInput = source.tile();
} }
public @Nullable Building getTileTarget(Item item, Tile src, boolean flip){ public @Nullable Building getTileTarget(Item item, Building src, boolean flip){
int from = relativeToEdge(src); int from = relativeToEdge(src.tile);
if(from == -1) return null; if(from == -1) return null;
Building to = nearby((from + 2) % 4); Building to = nearby((from + 2) % 4);
boolean canForward = to != null && to.acceptItem(this, item) && to.team == team && !(to.block instanceof OverflowGate); boolean
boolean inv = invert == enabled; fromInst = src.block.instantTransfer,
canForward = to != null && to.acceptItem(this, item) && to.team == team && !(fromInst && to.block.instantTransfer),
inv = invert == enabled;
if(!canForward || inv){ if(!canForward || inv){
Building a = nearby(Mathf.mod(from - 1, 4)); Building a = nearby(Mathf.mod(from - 1, 4));
Building b = nearby(Mathf.mod(from + 1, 4)); Building b = nearby(Mathf.mod(from + 1, 4));
boolean ac = a != null && a.acceptItem(this, item) && !(a.block instanceof OverflowGate) && a.team == team; boolean ac = a != null && a.acceptItem(this, item) && !(fromInst && a.block.instantTransfer) && a.team == team;
boolean bc = b != null && b.acceptItem(this, item) && !(b.block instanceof OverflowGate) && b.team == team; boolean bc = b != null && b.acceptItem(this, item) && !(fromInst && b.block.instantTransfer) && b.team == team;
if(!ac && !bc){ if(!ac && !bc){
return inv && canForward ? to : null; return inv && canForward ? to : null;
@@ -124,14 +84,7 @@ public class OverflowGate extends Block{
@Override @Override
public byte version(){ public byte version(){
return 3; return 4;
}
@Override
public void write(Writes write){
super.write(write);
write.i(lastInput == null ? -1 : lastInput.pos());
} }
@Override @Override
@@ -141,9 +94,10 @@ public class OverflowGate extends Block{
if(revision == 1){ if(revision == 1){
new DirectionalItemBuffer(25).read(read); new DirectionalItemBuffer(25).read(read);
}else if(revision == 3){ }else if(revision == 3){
lastInput = world.tile(read.i()); read.i();
lastItem = items.first();
} }
items.clear();
} }
} }
} }

View File

@@ -81,13 +81,10 @@ public class Sorter extends Block{
@Override @Override
public void handleItem(Building source, Item item){ public void handleItem(Building source, Item item){
Building to = getTileTarget(item, source, true); getTileTarget(item, source, true).handleItem(this, item);
to.handleItem(this, item);
} }
public boolean isSame(Building other){ public boolean isSame(Building other){
// comment code below to allow sorter/gate chaining
return other != null && other.block.instantTransfer; return other != null && other.block.instantTransfer;
} }