Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features
Conflicts: core/src/mindustry/core/NetServer.java
This commit is contained in:
6
.github/workflows/pr.yml
vendored
6
.github/workflows/pr.yml
vendored
@@ -8,10 +8,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Set up JDK 16
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v1
|
||||||
with:
|
with:
|
||||||
java-version: 16
|
java-version: 17
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: gradle/gradle-build-action@v2
|
||||||
- name: Run unit tests and build JAR
|
- name: Run unit tests and build JAR
|
||||||
run: ./gradlew test desktop:dist
|
run: ./gradlew test desktop:dist
|
||||||
- name: Upload desktop JAR for testing
|
- name: Upload desktop JAR for testing
|
||||||
|
|||||||
2
.github/workflows/push.yml
vendored
2
.github/workflows/push.yml
vendored
@@ -21,6 +21,8 @@ jobs:
|
|||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v1
|
||||||
with:
|
with:
|
||||||
java-version: 17
|
java-version: 17
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: gradle/gradle-build-action@v2
|
||||||
- name: Update bundles
|
- name: Update bundles
|
||||||
if: ${{ github.repository == 'Anuken/Mindustry' }}
|
if: ${{ github.repository == 'Anuken/Mindustry' }}
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
//log commands before they are handled
|
//log commands before they are handled
|
||||||
if(message.startsWith(netServer.clientCommands.getPrefix())){
|
if(message.startsWith(netServer.clientCommands.getPrefix())){
|
||||||
//log with brackets
|
//log with brackets
|
||||||
Log.info("<&fi@: @&fr>", "&lk" + player.name, "&lw" + message);
|
Log.info("<&fi@: @&fr>", "&lk" + player.plainName(), "&lw" + message);
|
||||||
}
|
}
|
||||||
|
|
||||||
//check if it's a command
|
//check if it's a command
|
||||||
@@ -251,7 +251,7 @@ public class NetClient implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//server console logging
|
//server console logging
|
||||||
Log.info("&fi@: @", "&lc" + player.name, "&lw" + message);
|
Log.info("&fi@: @", "&lc" + player.plainName(), "&lw" + message);
|
||||||
|
|
||||||
//invoke event for all clients but also locally
|
//invoke event for all clients but also locally
|
||||||
//this is required so other clients get the correct name even if they don't know who's sending it yet
|
//this is required so other clients get the correct name even if they don't know who's sending it yet
|
||||||
|
|||||||
@@ -483,7 +483,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
int sign = switch(arg[0].toLowerCase()){
|
int sign = switch(arg[0].toLowerCase()){
|
||||||
case "y", "yes" -> 1;
|
case "y", "yes" -> 1;
|
||||||
case "n", "no" -> -1;
|
case "n", "no" -> -1;
|
||||||
default -> 0;
|
default -> 0;
|
||||||
};
|
};
|
||||||
@@ -558,7 +558,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
Call.playerDisconnect(player.id());
|
Call.playerDisconnect(player.id());
|
||||||
}
|
}
|
||||||
|
|
||||||
String message = Strings.format("&lb@&fi&lk has disconnected. &fi&lk[&lb@&fi&lk] (@)", player.name, player.uuid(), reason);
|
String message = Strings.format("&lb@&fi&lk has disconnected. [&lb@&fi&lk] (@)", player.plainName(), player.uuid(), reason);
|
||||||
if(Config.showConnectMessages.bool()) info(message);
|
if(Config.showConnectMessages.bool()) info(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -771,12 +771,12 @@ public class NetServer implements ApplicationListener{
|
|||||||
public static void adminRequest(Player player, Player other, AdminAction action){
|
public static void adminRequest(Player player, Player other, AdminAction action){
|
||||||
if(!player.admin && !player.isLocal()){
|
if(!player.admin && !player.isLocal()){
|
||||||
warn("ACCESS DENIED: Player @ / @ attempted to perform admin action '@' on '@' without proper security access.",
|
warn("ACCESS DENIED: Player @ / @ attempted to perform admin action '@' on '@' without proper security access.",
|
||||||
player.name, player.con == null ? "null" : player.con.address, action.name(), other == null ? null : other.name);
|
player.plainName(), player.con == null ? "null" : player.con.address, action.name(), other == null ? null : other.plainName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(other == null || ((other.admin && !player.isLocal()) && other != player)){
|
if(other == null || ((other.admin && !player.isLocal()) && other != player)){
|
||||||
warn("@ attempted to perform admin action on nonexistant or admin player.", player.name);
|
warn("@ &fi&lk[&lb@&fi&lk]&fb attempted to perform admin action on nonexistant or admin player.", player.plainName(), player.uuid());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -786,15 +786,15 @@ public class NetServer implements ApplicationListener{
|
|||||||
//no verification is done, so admins can hypothetically spam waves
|
//no verification is done, so admins can hypothetically spam waves
|
||||||
//not a real issue, because server owners may want to do just that
|
//not a real issue, because server owners may want to do just that
|
||||||
logic.skipWave();
|
logic.skipWave();
|
||||||
info("&lc@ has skipped the wave.", player.name);
|
info("&lc@ &fi&lk[&lb@&fi&lk]&fb has skipped the wave.", player.plainName(), player.uuid());
|
||||||
}else if(action == AdminAction.ban){
|
}else if(action == AdminAction.ban){
|
||||||
netServer.admins.banPlayerID(other.con.uuid);
|
netServer.admins.banPlayerID(other.con.uuid);
|
||||||
netServer.admins.banPlayerIP(other.con.address);
|
netServer.admins.banPlayerIP(other.con.address);
|
||||||
other.kick(KickReason.banned);
|
other.kick(KickReason.banned);
|
||||||
info("&lc@ has banned @.", player.name, other.name);
|
info("&lc@ &fi&lk[&lb@&fi&lk]&fb has banned @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid());
|
||||||
}else if(action == AdminAction.kick){
|
}else if(action == AdminAction.kick){
|
||||||
other.kick(KickReason.kick);
|
other.kick(KickReason.kick);
|
||||||
info("&lc@ has kicked @.", player.name, other.name);
|
info("&lc@ &fi&lk[&lb@&fi&lk]&fb has kicked @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid());
|
||||||
}else if(action == AdminAction.trace){
|
}else if(action == AdminAction.trace){
|
||||||
PlayerInfo stats = netServer.admins.getInfo(other.uuid());
|
PlayerInfo stats = netServer.admins.getInfo(other.uuid());
|
||||||
TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile, stats.timesJoined, stats.timesKicked);
|
TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile, stats.timesJoined, stats.timesKicked);
|
||||||
@@ -803,7 +803,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
}else{
|
}else{
|
||||||
NetClient.traceInfo(other, info);
|
NetClient.traceInfo(other, info);
|
||||||
}
|
}
|
||||||
info("&lc@ has requested trace info of @.", player.name, other.name);
|
info("&lc@ &fi&lk[&lb@&fi&lk]&fb has requested trace info of @ &fi&lk[&lb@&fi&lk]&fb.", player.plainName(), player.uuid(), other.plainName(), other.uuid());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -821,7 +821,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
|
|
||||||
if(Config.showConnectMessages.bool()){
|
if(Config.showConnectMessages.bool()){
|
||||||
Call.sendMessage("[accent]" + player.name + "[accent] has connected.");
|
Call.sendMessage("[accent]" + player.name + "[accent] has connected.");
|
||||||
String message = Strings.format("&lb@&fi&lk has connected. &fi&lk[&lb@&fi&lk]", player.name, player.uuid());
|
String message = Strings.format("&lb@&fi&lk has connected. &fi&lk[&lb@&fi&lk]", player.plainName(), player.uuid());
|
||||||
info(message);
|
info(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -893,7 +893,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
short sent = 0;
|
short sent = 0;
|
||||||
for(Building entity : Groups.build){
|
for(Building entity : Groups.build){
|
||||||
if(!entity.block.sync) continue;
|
if(!entity.block.sync) continue;
|
||||||
sent ++;
|
sent++;
|
||||||
|
|
||||||
dataStream.writeInt(entity.pos());
|
dataStream.writeInt(entity.pos());
|
||||||
dataStream.writeShort(entity.block.id);
|
dataStream.writeShort(entity.block.id);
|
||||||
@@ -933,7 +933,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
|
|
||||||
//write basic state data.
|
//write basic state data.
|
||||||
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.serverPaused, state.gameOver,
|
Call.stateSnapshot(player.con, state.wavetime, state.wave, state.enemies, state.serverPaused, state.gameOver,
|
||||||
universe.seconds(), tps, GlobalConstants.rand.seed0, GlobalConstants.rand.seed1, syncStream.toByteArray());
|
universe.seconds(), tps, GlobalConstants.rand.seed0, GlobalConstants.rand.seed1, syncStream.toByteArray());
|
||||||
|
|
||||||
syncStream.reset();
|
syncStream.reset();
|
||||||
|
|
||||||
@@ -972,7 +972,7 @@ public class NetServer implements ApplicationListener{
|
|||||||
Call.hiddenSnapshot(player.con, hiddenIds);
|
Call.hiddenSnapshot(player.con, hiddenIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.con.snapshotsSent ++;
|
player.con.snapshotsSent++;
|
||||||
}
|
}
|
||||||
|
|
||||||
String fixName(String name){
|
String fixName(String name){
|
||||||
|
|||||||
@@ -313,6 +313,10 @@ abstract class PlayerComp implements UnitController, Entityc, Syncc, Timerc, Dra
|
|||||||
return "[#" + color.toString().toUpperCase() + "]" + name;
|
return "[#" + color.toString().toUpperCase() + "]" + name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String plainName(){
|
||||||
|
return Strings.stripColors(name);
|
||||||
|
}
|
||||||
|
|
||||||
void sendMessage(String text){
|
void sendMessage(String text){
|
||||||
if(isLocal()){
|
if(isLocal()){
|
||||||
if(ui != null){
|
if(ui != null){
|
||||||
|
|||||||
@@ -419,7 +419,14 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
|
|||||||
public static void tileConfig(@Nullable Player player, Building build, @Nullable Object value){
|
public static void tileConfig(@Nullable Player player, Building build, @Nullable Object value){
|
||||||
if(build == null) return;
|
if(build == null) return;
|
||||||
if(net.server() && (!Units.canInteract(player, build) ||
|
if(net.server() && (!Units.canInteract(player, build) ||
|
||||||
!netServer.admins.allowAction(player, ActionType.configure, build.tile, action -> action.config = value))) throw new ValidateException(player, "Player cannot configure a tile.");
|
!netServer.admins.allowAction(player, ActionType.configure, build.tile, action -> action.config = value))){
|
||||||
|
var packet = new TileConfigCallPacket(); //undo the config on the client
|
||||||
|
packet.player = player;
|
||||||
|
packet.build = build;
|
||||||
|
packet.value = build.config();
|
||||||
|
player.con.send(packet, true);
|
||||||
|
throw new ValidateException(player, "Player cannot configure a tile.");
|
||||||
|
}
|
||||||
build.configured(player == null || player.dead() ? null : player.unit(), value);
|
build.configured(player == null || player.dead() ? null : player.unit(), value);
|
||||||
Core.app.post(() -> Events.fire(new ConfigEvent(build, player, value)));
|
Core.app.post(() -> Events.fire(new ConfigEvent(build, player, value)));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -569,6 +569,10 @@ public class Administration{
|
|||||||
|
|
||||||
public PlayerInfo(){
|
public PlayerInfo(){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String plainLastName(){
|
||||||
|
return Strings.stripColors(lastName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Handles chat messages from players and changes their contents. */
|
/** Handles chat messages from players and changes their contents. */
|
||||||
|
|||||||
@@ -324,7 +324,10 @@ public class ModsDialog extends BaseDialog{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void reload(){
|
private void reload(){
|
||||||
ui.showInfoOnHidden("@mods.reloadexit", () -> Core.app.exit());
|
ui.showInfoOnHidden("@mods.reloadexit", () -> {
|
||||||
|
Log.info("Exiting to reload mods.");
|
||||||
|
Core.app.exit();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showMod(LoadedMod mod){
|
private void showMod(LoadedMod mod){
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ public class PowerNode extends PowerBlock{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void placed(){
|
public void placed(){
|
||||||
if(net.client()) return;
|
if(net.client() || power.links.size > 0) return;
|
||||||
|
|
||||||
getPotentialLinks(tile, team, other -> {
|
getPotentialLinks(tile, team, other -> {
|
||||||
if(!power.links.contains(other.pos())){
|
if(!power.links.contains(other.pos())){
|
||||||
@@ -390,15 +390,15 @@ public class PowerNode extends PowerBlock{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this == other){
|
if(this == other){ //double tapped
|
||||||
if(other.power.links.size == 0){
|
if(other.power.links.size == 0 || Core.input.shift()){ //find links
|
||||||
int[] total = {0};
|
int[] total = {0};
|
||||||
getPotentialLinks(tile, team, link -> {
|
getPotentialLinks(tile, team, link -> {
|
||||||
if(!insulated(this, link) && total[0]++ < maxNodes){
|
if(!insulated(this, link) && total[0]++ < maxNodes){
|
||||||
configure(link.pos());
|
configure(link.pos());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}else{
|
}else{ //clear links
|
||||||
while(power.links.size > 0){
|
while(power.links.size > 0){
|
||||||
configure(power.links.get(0));
|
configure(power.links.get(0));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public class StorageBlock extends Block{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaximumAccepted(Item item){
|
public int getMaximumAccepted(Item item){
|
||||||
return itemCapacity;
|
return linkedCore != null ? linkedCore.getMaximumAccepted(item) : itemCapacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ kapt.include.compile.classpath=false
|
|||||||
kotlin.stdlib.default.dependency=false
|
kotlin.stdlib.default.dependency=false
|
||||||
#needed for android compilation
|
#needed for android compilation
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
|
org.gradle.caching=true
|
||||||
#used for slow jitpack builds; TODO see if this actually works
|
#used for slow jitpack builds; TODO see if this actually works
|
||||||
org.gradle.internal.http.socketTimeout=100000
|
org.gradle.internal.http.socketTimeout=100000
|
||||||
org.gradle.internal.http.connectionTimeout=100000
|
org.gradle.internal.http.connectionTimeout=100000
|
||||||
|
|||||||
@@ -416,7 +416,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
if(Groups.player.size() > 0){
|
if(Groups.player.size() > 0){
|
||||||
info(" Players: @", Groups.player.size());
|
info(" Players: @", Groups.player.size());
|
||||||
for(Player p : Groups.player){
|
for(Player p : Groups.player){
|
||||||
info(" @ / @", p.name, p.uuid());
|
info(" @ @ / @", p.admin() ? "&r[A]&c" : "&b[P]&c", p.plainName(), p.uuid());
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
info(" No players connected.");
|
info(" No players connected.");
|
||||||
@@ -646,7 +646,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
info("No whitelisted players found.");
|
info("No whitelisted players found.");
|
||||||
}else{
|
}else{
|
||||||
info("Whitelist:");
|
info("Whitelist:");
|
||||||
whitelist.each(p -> info("- Name: @ / UUID: @", p.lastName, p.id));
|
whitelist.each(p -> info("- Name: @ / UUID: @", p.plainLastName(), p.id));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if(arg.length == 2){
|
if(arg.length == 2){
|
||||||
@@ -657,10 +657,10 @@ public class ServerControl implements ApplicationListener{
|
|||||||
}else{
|
}else{
|
||||||
if(arg[0].equals("add")){
|
if(arg[0].equals("add")){
|
||||||
netServer.admins.whitelist(arg[1]);
|
netServer.admins.whitelist(arg[1]);
|
||||||
info("Player '@' has been whitelisted.", info.lastName);
|
info("Player '@' has been whitelisted.", info.plainLastName());
|
||||||
}else if(arg[0].equals("remove")){
|
}else if(arg[0].equals("remove")){
|
||||||
netServer.admins.unwhitelist(arg[1]);
|
netServer.admins.unwhitelist(arg[1]);
|
||||||
info("Player '@' has been un-whitelisted.", info.lastName);
|
info("Player '@' has been un-whitelisted.", info.plainLastName());
|
||||||
}else{
|
}else{
|
||||||
err("Incorrect usage. Provide add/remove as the second argument.");
|
err("Incorrect usage. Provide add/remove as the second argument.");
|
||||||
}
|
}
|
||||||
@@ -749,7 +749,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
}else{
|
}else{
|
||||||
info("Banned players [ID]:");
|
info("Banned players [ID]:");
|
||||||
for(PlayerInfo info : bans){
|
for(PlayerInfo info : bans){
|
||||||
info(" @ / Last known name: '@'", info.id, info.lastName);
|
info(" @ / Last known name: '@'", info.id, info.plainLastName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -762,7 +762,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
for(String string : ipbans){
|
for(String string : ipbans){
|
||||||
PlayerInfo info = netServer.admins.findByIP(string);
|
PlayerInfo info = netServer.admins.findByIP(string);
|
||||||
if(info != null){
|
if(info != null){
|
||||||
info(" '@' / Last known name: '@' / ID: '@'", string, info.lastName, info.id);
|
info(" '@' / Last known name: '@' / ID: '@'", string, info.plainLastName(), info.id);
|
||||||
}else{
|
}else{
|
||||||
info(" '@' (No known name or info)", string);
|
info(" '@' (No known name or info)", string);
|
||||||
}
|
}
|
||||||
@@ -783,7 +783,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
|
|
||||||
if(info != null){
|
if(info != null){
|
||||||
info.lastKicked = 0;
|
info.lastKicked = 0;
|
||||||
info("Pardoned player: @", info.lastName);
|
info("Pardoned player: @", info.plainLastName());
|
||||||
}else{
|
}else{
|
||||||
err("That ID can't be found.");
|
err("That ID can't be found.");
|
||||||
}
|
}
|
||||||
@@ -803,7 +803,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
boolean add = arg[0].equals("add");
|
boolean add = arg[0].equals("add");
|
||||||
|
|
||||||
PlayerInfo target;
|
PlayerInfo target;
|
||||||
Player playert = Groups.player.find(p -> p.name.equalsIgnoreCase(arg[1]));
|
Player playert = Groups.player.find(p -> p.plainName().equalsIgnoreCase(Strings.stripColors(arg[1])));
|
||||||
if(playert != null){
|
if(playert != null){
|
||||||
target = playert.getInfo();
|
target = playert.getInfo();
|
||||||
}else{
|
}else{
|
||||||
@@ -818,7 +818,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
netServer.admins.unAdminPlayer(target.id);
|
netServer.admins.unAdminPlayer(target.id);
|
||||||
}
|
}
|
||||||
if(playert != null) playert.admin = add;
|
if(playert != null) playert.admin = add;
|
||||||
info("Changed admin status of player: @", target.lastName);
|
info("Changed admin status of player: @", target.plainLastName());
|
||||||
}else{
|
}else{
|
||||||
err("Nobody with that name or ID could be found. If adding an admin by name, make sure they're online; otherwise, use their UUID.");
|
err("Nobody with that name or ID could be found. If adding an admin by name, make sure they're online; otherwise, use their UUID.");
|
||||||
}
|
}
|
||||||
@@ -832,7 +832,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
}else{
|
}else{
|
||||||
info("Admins:");
|
info("Admins:");
|
||||||
for(PlayerInfo info : admins){
|
for(PlayerInfo info : admins){
|
||||||
info(" &lm @ / ID: '@' / IP: '@'", info.lastName, info.id, info.lastIP);
|
info(" &lm @ / ID: '@' / IP: '@'", info.plainLastName(), info.id, info.lastIP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -844,7 +844,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
info("Players: @", Groups.player.size());
|
info("Players: @", Groups.player.size());
|
||||||
for(Player user : Groups.player){
|
for(Player user : Groups.player){
|
||||||
PlayerInfo userInfo = user.getInfo();
|
PlayerInfo userInfo = user.getInfo();
|
||||||
info(" &lm @ / ID: @ / IP: @ / Admin: @", userInfo.lastName, userInfo.id, userInfo.lastIP, userInfo.admin);
|
info(" @&lm @ / ID: @ / IP: @", userInfo.admin ? "&r[A]&c" : "&b[P]&c", userInfo.plainLastName(), userInfo.id, userInfo.lastIP, userInfo.admin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -926,7 +926,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(PlayerInfo info : infos){
|
for(PlayerInfo info : infos){
|
||||||
info("[@] Trace info for player '@' / UUID @", i++, info.lastName, info.id);
|
info("[@] Trace info for player '@' / UUID @ / RAW @", i++, info.plainLastName(), info.id, info.lastName);
|
||||||
info(" all names used: @", info.names);
|
info(" all names used: @", info.names);
|
||||||
info(" IP: @", info.lastIP);
|
info(" IP: @", info.lastIP);
|
||||||
info(" all IPs used: @", info.ips);
|
info(" all IPs used: @", info.ips);
|
||||||
@@ -946,7 +946,7 @@ public class ServerControl implements ApplicationListener{
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(PlayerInfo info : infos){
|
for(PlayerInfo info : infos){
|
||||||
info("- [@] '@' / @", i++, info.lastName, info.id);
|
info("- [@] '@' / @", i++, info.plainLastName(), info.id);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
info("Nobody with that name could be found.");
|
info("Nobody with that name could be found.");
|
||||||
|
|||||||
@@ -48,8 +48,8 @@
|
|||||||
"address": ["mindustry.ddns.net", "mindustry.ddns.net:1000", "mindustry.ddns.net:2000", "mindustry.ddns.net:3000", "mindustry.ddns.net:4000"]
|
"address": ["mindustry.ddns.net", "mindustry.ddns.net:1000", "mindustry.ddns.net:2000", "mindustry.ddns.net:3000", "mindustry.ddns.net:4000"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Surrealment",
|
"name": "Surrealment v6",
|
||||||
"address": ["md.surrealment.com"]
|
"address": ["md.surrealment.com:6566"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "ALEX",
|
"name": "ALEX",
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Omega",
|
"name": "Omega",
|
||||||
"address": ["omegam.mindustry.me:25577", "omegam.mindustry.me"]
|
"address": ["omegam.mindustry.me:25577", "omegam.mindustry.me", "omegam.mindustry.me:25586"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "MeowLand",
|
"name": "MeowLand",
|
||||||
@@ -82,5 +82,9 @@
|
|||||||
{
|
{
|
||||||
"name": "M-DE",
|
"name": "M-DE",
|
||||||
"address": ["mindustry.inc.li:6569", "mindustry.inc.li:6560"]
|
"address": ["mindustry.inc.li:6569", "mindustry.inc.li:6560"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Surrealment v7",
|
||||||
|
"address": ["md.surrealment.com:6567"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user