Minor admin bugfixes, made players wait 30 seconds after being kicked

This commit is contained in:
Anuken
2018-03-20 18:27:19 -04:00
parent ba7be0293c
commit 216b3969ed
9 changed files with 88 additions and 76 deletions

View File

@@ -133,12 +133,13 @@ public class Administration {
}
/**Makes a player an admin. Returns whether this player was already an admin.*/
public boolean adminPlayer(String id){
public boolean adminPlayer(String id, String ip){
PlayerInfo info = getCreateInfo(id);
if(info.admin)
return false;
info.validAdminIP = ip;
info.admin = true;
save();
@@ -166,8 +167,9 @@ public class Administration {
return getCreateInfo(uuid).banned;
}
public boolean isAdmin(String id){
return getCreateInfo(id).admin;
public boolean isAdmin(String id, String ip){
PlayerInfo info = getCreateInfo(id);
return info.admin && ip.equals(info.validAdminIP);
}
public PlayerInfo getInfo(String id){
@@ -212,6 +214,7 @@ public class Administration {
public static class PlayerInfo{
public String id;
public String lastName = "<unknown>", lastIP = "<unknown>";
public String validAdminIP;
public Array<String> ips = new Array<>();
public Array<String> names = new Array<>();
public int timesKicked; //TODO not implemented!
@@ -219,6 +222,7 @@ public class Administration {
public int totalBlockPlaced;
public int totalBlocksBroken;
public boolean banned, admin;
public long lastKicked; //last kicked timestamp
PlayerInfo(String id){
this.id = id;

View File

@@ -12,7 +12,6 @@ import com.badlogic.gdx.utils.reflect.ClassReflection;
import io.anuke.mindustry.io.Platform;
import io.anuke.mindustry.net.Packet.ImportantPacket;
import io.anuke.mindustry.net.Packet.UnimportantPacket;
import io.anuke.mindustry.net.Packets.KickReason;
import io.anuke.mindustry.net.Streamable.StreamBegin;
import io.anuke.mindustry.net.Streamable.StreamBuilder;
import io.anuke.mindustry.net.Streamable.StreamChunk;
@@ -101,11 +100,6 @@ public class Net{
clientProvider.discover(cons);
}
/**Kick a specified connection from the server.*/
public static void kickConnection(int id, KickReason reason){
serverProvider.kick(id, reason);
}
/**Returns a list of all connections IDs.*/
public static Array<NetConnection> getConnections(){
return (Array<NetConnection>)serverProvider.getConnections();
@@ -307,10 +301,6 @@ public class Net{
Array<? extends NetConnection> getConnections();
/**Returns a connection by ID.*/
NetConnection getByID(int id);
/**Kick a certain connection.*/
void kick(int connection, KickReason reason);
/**Returns the ping for a certain connection.*/
int getPingFor(NetConnection connection);
/**Close all connections.*/
void dispose();
}

View File

@@ -377,7 +377,7 @@ public class Packets {
}
public enum KickReason{
kick, invalidPassword, clientOutdated, serverOutdated, banned, gameover(true);
kick, invalidPassword, clientOutdated, serverOutdated, banned, gameover(true), recentKick;
public final boolean quiet;
KickReason(){ quiet = false; }