Multithreading crash fixes / Server 'find' command added

This commit is contained in:
Anuken
2018-04-01 11:33:30 -04:00
parent 537e25af9f
commit 0936fc6550
5 changed files with 52 additions and 8 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
#Autogenerated file. Do not modify.
#Fri Mar 30 19:18:12 EDT 2018
#Sun Apr 01 11:24:59 EDT 2018
version=release
androidBuildCode=482
androidBuildCode=483
name=Mindustry
code=3.5
build=custom build
+1 -1
View File
@@ -244,7 +244,7 @@ public class World extends Module{
Array<Tile> removals = target.getLinkedTiles();
for(Tile toremove : removals){
//note that setting a new block automatically unlinks it
toremove.setBlock(Blocks.air);
if(toremove != null) toremove.setBlock(Blocks.air);
}
}
}
@@ -172,6 +172,18 @@ public class Administration {
return info.admin && ip.equals(info.validAdminIP);
}
public Array<PlayerInfo> findByName(String name, boolean last){
Array<PlayerInfo> result = new Array<>();
for(PlayerInfo info : playerInfo.values()){
if(info.lastName.toLowerCase().equals(name.toLowerCase()) || (last && info.names.contains(name, false))){
result.add(info);
}
}
return result;
}
public PlayerInfo getInfo(String id){
return getCreateInfo(id);
}
@@ -106,13 +106,18 @@ public class Placement {
rect.setCenter(offset.x + x * tilesize, offset.y + y * tilesize);
synchronized (Entities.entityLock) {
for (SolidEntity e : Entities.getNearby(enemyGroup, x * tilesize, y * tilesize, tilesize * 2f)) {
if (e == null) continue; //not sure why this happens?
Rectangle rect = e.hitbox.getRect(e.x, e.y);
//exception sometimes thrown due to multithreading, not sure what else to try at this point
try {
for (SolidEntity e : Entities.getNearby(enemyGroup, x * tilesize, y * tilesize, tilesize * 2f)) {
if (e == null) continue; //not sure why this happens?
Rectangle rect = e.hitbox.getRect(e.x, e.y);
if (Placement.rect.overlaps(rect)) {
return false;
if (Placement.rect.overlaps(rect)) {
return false;
}
}
}catch (Exception e){
return false;
}
}