diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index c76e21001d..671a34ebaf 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -216,9 +216,11 @@ server.hidden = Hidden trace = Trace Player trace.playername = Player name: [accent]{0} trace.ip = IP: [accent]{0} -trace.id = Unique ID: [accent]{0} +trace.id = ID: [accent]{0} trace.mobile = Mobile Client: [accent]{0} trace.modclient = Custom Client: [accent]{0} +trace.times.joined = Times Joined: [accent]{0} +trace.times.kicked = Times Kicked: [accent]{0} invalidid = Invalid client ID! Submit a bug report. server.bans = Bans server.bans.none = No banned players found! diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index d9761c9495..ce383efbbd 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -1370,16 +1370,12 @@ public class Blocks implements ContentList{ requirements(Category.effect, with(Items.titanium, 250, Items.thorium, 125)); size = 3; itemCapacity = 1000; - flags = EnumSet.of(BlockFlag.storage); - group = BlockGroup.transportation; }}; container = new StorageBlock("container"){{ requirements(Category.effect, with(Items.titanium, 100)); size = 2; itemCapacity = 300; - flags = EnumSet.of(BlockFlag.storage); - group = BlockGroup.transportation; }}; unloader = new Unloader("unloader"){{ diff --git a/core/src/mindustry/core/NetServer.java b/core/src/mindustry/core/NetServer.java index 36d24770dc..5054402310 100644 --- a/core/src/mindustry/core/NetServer.java +++ b/core/src/mindustry/core/NetServer.java @@ -735,7 +735,8 @@ public class NetServer implements ApplicationListener{ other.kick(KickReason.kick); info("&lc@ has kicked @.", player.name, other.name); }else if(action == AdminAction.trace){ - TraceInfo info = new TraceInfo(other.con.address, other.uuid(), other.con.modclient, other.con.mobile); + 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); if(player.con != null){ Call.traceInfo(player.con, other, info); }else{ diff --git a/core/src/mindustry/io/TypeIO.java b/core/src/mindustry/io/TypeIO.java index 9e8ab187dd..e91ebedb6f 100644 --- a/core/src/mindustry/io/TypeIO.java +++ b/core/src/mindustry/io/TypeIO.java @@ -572,10 +572,12 @@ public class TypeIO{ writeString(write, trace.uuid); write.b(trace.modded ? (byte)1 : 0); write.b(trace.mobile ? (byte)1 : 0); + write.i(trace.timesJoined); + write.i(trace.timesKicked); } public static TraceInfo readTraceInfo(Reads read){ - return new TraceInfo(readString(read), readString(read), read.b() == 1, read.b() == 1); + return new TraceInfo(readString(read), readString(read), read.b() == 1, read.b() == 1, read.i(), read.i()); } public static void writeStringData(DataOutput buffer, String string) throws IOException{ diff --git a/core/src/mindustry/net/Administration.java b/core/src/mindustry/net/Administration.java index bd312bacdf..3ef4784dda 100644 --- a/core/src/mindustry/net/Administration.java +++ b/core/src/mindustry/net/Administration.java @@ -584,12 +584,15 @@ public class Administration{ public static class TraceInfo{ public String ip, uuid; public boolean modded, mobile; + public int timesJoined, timesKicked; - public TraceInfo(String ip, String uuid, boolean modded, boolean mobile){ + public TraceInfo(String ip, String uuid, boolean modded, boolean mobile, int timesJoined, int timesKicked){ this.ip = ip; this.uuid = uuid; this.modded = modded; this.mobile = mobile; + this.timesJoined = timesJoined; + this.timesKicked = timesKicked; } } diff --git a/core/src/mindustry/ui/dialogs/TraceDialog.java b/core/src/mindustry/ui/dialogs/TraceDialog.java index c6582aa005..53b4f59b92 100644 --- a/core/src/mindustry/ui/dialogs/TraceDialog.java +++ b/core/src/mindustry/ui/dialogs/TraceDialog.java @@ -32,6 +32,10 @@ public class TraceDialog extends BaseDialog{ table.row(); table.add(Core.bundle.format("trace.mobile", info.mobile)); table.row(); + table.add(Core.bundle.format("trace.times.joined", info.timesJoined)); + table.row(); + table.add(Core.bundle.format("trace.times.kicked", info.timesKicked)); + table.row(); table.add().pad(5); table.row(); diff --git a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java index 0742348e5d..8289b42366 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/BaseTurret.java @@ -1,5 +1,6 @@ package mindustry.world.blocks.defense.turrets; +import arc.struct.*; import mindustry.content.*; import mindustry.entities.*; import mindustry.gen.*; @@ -27,6 +28,9 @@ public class BaseTurret extends Block{ update = true; solid = true; outlineIcon = true; + priority = TargetPriority.turret; + group = BlockGroup.turrets; + flags = EnumSet.of(BlockFlag.turret); } @Override diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index 562e84a1e3..645264b459 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -93,12 +93,6 @@ public class Turret extends ReloadTurret{ public Turret(String name){ super(name); - priority = TargetPriority.turret; - update = true; - solid = true; - group = BlockGroup.turrets; - flags = EnumSet.of(BlockFlag.turret); - outlineIcon = true; liquidCapacity = 20f; } diff --git a/core/src/mindustry/world/blocks/storage/CoreBlock.java b/core/src/mindustry/world/blocks/storage/CoreBlock.java index 09cb9288b5..087ba838fd 100644 --- a/core/src/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/mindustry/world/blocks/storage/CoreBlock.java @@ -50,7 +50,6 @@ public class CoreBlock extends StorageBlock{ unitCapModifier = 10; loopSound = Sounds.respawning; loopSoundVolume = 1f; - group = BlockGroup.none; drawDisabled = false; canOverdrive = false; } diff --git a/core/src/mindustry/world/blocks/storage/StorageBlock.java b/core/src/mindustry/world/blocks/storage/StorageBlock.java index 1ead7b97ab..006d462e6f 100644 --- a/core/src/mindustry/world/blocks/storage/StorageBlock.java +++ b/core/src/mindustry/world/blocks/storage/StorageBlock.java @@ -20,7 +20,8 @@ public class StorageBlock extends Block{ solid = true; update = false; destructible = true; - group = BlockGroup.storage; + group = BlockGroup.transportation; + flags = EnumSet.of(BlockFlag.storage); } @Override diff --git a/core/src/mindustry/world/meta/BlockGroup.java b/core/src/mindustry/world/meta/BlockGroup.java index 690e181b64..d1e995887e 100644 --- a/core/src/mindustry/world/meta/BlockGroup.java +++ b/core/src/mindustry/world/meta/BlockGroup.java @@ -1,7 +1,7 @@ package mindustry.world.meta; public enum BlockGroup{ - none, walls(true), projectors(true), turrets, transportation(true), power, liquids(true), drills, storage, units, logic(true); + none, walls(true), projectors(true), turrets(true), transportation(true), power, liquids(true), drills, units, logic(true); /** if true, any block in this category replaces any other block in this category. */ public final boolean anyReplace;