From 51add6db2bd42b7f72a426e0e226e680ecd2080e Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:48:51 +0800 Subject: [PATCH 01/15] Create com/ceddie/skirmishai/SkirmishAIMod.java --- src/com/ceddie/skirmishai/SkirmishAIMod.java | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/com/ceddie/skirmishai/SkirmishAIMod.java diff --git a/src/com/ceddie/skirmishai/SkirmishAIMod.java b/src/com/ceddie/skirmishai/SkirmishAIMod.java new file mode 100644 index 00000000..42e1f84a --- /dev/null +++ b/src/com/ceddie/skirmishai/SkirmishAIMod.java @@ -0,0 +1 @@ +import java.util.*; \ No newline at end of file From 3f763a729b515a4db17cfae86c090fa78eadaa50 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:50:41 +0800 Subject: [PATCH 02/15] Create skirmishai/core/AIController --- src/com/ceddie/skirmishai/core/AIController | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/com/ceddie/skirmishai/core/AIController diff --git a/src/com/ceddie/skirmishai/core/AIController b/src/com/ceddie/skirmishai/core/AIController new file mode 100644 index 00000000..32f95c0d --- /dev/null +++ b/src/com/ceddie/skirmishai/core/AIController @@ -0,0 +1 @@ +hi \ No newline at end of file From c776dbd3d312093550e0a414e218d30b33e960c5 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:51:08 +0800 Subject: [PATCH 03/15] Create AIRegistry.java --- src/com/ceddie/skirmishai/core/AIRegistry.java | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/com/ceddie/skirmishai/core/AIRegistry.java diff --git a/src/com/ceddie/skirmishai/core/AIRegistry.java b/src/com/ceddie/skirmishai/core/AIRegistry.java new file mode 100644 index 00000000..32f95c0d --- /dev/null +++ b/src/com/ceddie/skirmishai/core/AIRegistry.java @@ -0,0 +1 @@ +hi \ No newline at end of file From cbd2b7fbfb4f95b322b38115aaa35b2a943213f8 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:51:23 +0800 Subject: [PATCH 04/15] Delete AIController --- src/com/ceddie/skirmishai/core/AIController | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/com/ceddie/skirmishai/core/AIController diff --git a/src/com/ceddie/skirmishai/core/AIController b/src/com/ceddie/skirmishai/core/AIController deleted file mode 100644 index 32f95c0d..00000000 --- a/src/com/ceddie/skirmishai/core/AIController +++ /dev/null @@ -1 +0,0 @@ -hi \ No newline at end of file From b03cefeac5332bc52c86ffd2e7c40da34fd00383 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:51:44 +0800 Subject: [PATCH 05/15] Create AIController.java --- src/com/ceddie/skirmishai/core/AIController.java | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/com/ceddie/skirmishai/core/AIController.java diff --git a/src/com/ceddie/skirmishai/core/AIController.java b/src/com/ceddie/skirmishai/core/AIController.java new file mode 100644 index 00000000..32f95c0d --- /dev/null +++ b/src/com/ceddie/skirmishai/core/AIController.java @@ -0,0 +1 @@ +hi \ No newline at end of file From 4f9e18a3113264acb79429eb79f7e99589923498 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:52:12 +0800 Subject: [PATCH 06/15] Create debug/AIDebugging.java --- src/com/ceddie/skirmishai/debug/AIDebugging.java | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/com/ceddie/skirmishai/debug/AIDebugging.java diff --git a/src/com/ceddie/skirmishai/debug/AIDebugging.java b/src/com/ceddie/skirmishai/debug/AIDebugging.java new file mode 100644 index 00000000..18629009 --- /dev/null +++ b/src/com/ceddie/skirmishai/debug/AIDebugging.java @@ -0,0 +1 @@ +hello pls no bugs \ No newline at end of file From 8e3d6e04ebbbedc527ef322b6ad522089e646225 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:53:37 +0800 Subject: [PATCH 07/15] SkirmishAIMod.java's code idk i just do da code --- src/com/ceddie/skirmishai/SkirmishAIMod.java | 36 +++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/com/ceddie/skirmishai/SkirmishAIMod.java b/src/com/ceddie/skirmishai/SkirmishAIMod.java index 42e1f84a..c87c461f 100644 --- a/src/com/ceddie/skirmishai/SkirmishAIMod.java +++ b/src/com/ceddie/skirmishai/SkirmishAIMod.java @@ -1 +1,35 @@ -import java.util.*; \ No newline at end of file +package com.ceddie.skirmishai; + +import arc.util.Events; +import arc.util.Log; +import arc.util.Time; +import mindustry.game.EventType; +import mindustry.mod.Mod; + +import com.ceddie.skirmishai.core.AIRegistry; + +public class SkirmishAIMod extends Mod { + + public SkirmishAIMod() { + Log.info("[Skirmish AI] Constructor initialized."); + } + + @Override + public void init() { + Log.info("[Skirmish AI] Initializing systems..."); + + // Reset AI controllers whenever a world loads. + Events.on(EventType.WorldLoadEvent.class, event -> { + AIRegistry.clear(); + + Log.info("[Skirmish AI] World loaded. Registry reset."); + }); + + // Update registered AI controllers. + Events.run(EventType.Trigger.update, () -> { + AIRegistry.update(Time.delta); + }); + + Log.info("[Skirmish AI] Initialization complete."); + } +} \ No newline at end of file From 5fac68732e306743cf614c57071f53fcf76709b5 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:54:52 +0800 Subject: [PATCH 08/15] AIRegistry.java's code basic foundation for registry --- .../ceddie/skirmishai/core/AIRegistry.java | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/src/com/ceddie/skirmishai/core/AIRegistry.java b/src/com/ceddie/skirmishai/core/AIRegistry.java index 32f95c0d..5321e904 100644 --- a/src/com/ceddie/skirmishai/core/AIRegistry.java +++ b/src/com/ceddie/skirmishai/core/AIRegistry.java @@ -1 +1,55 @@ -hi \ No newline at end of file +package com.ceddie.skirmishai.core; + +import arc.struct.Seq; +import mindustry.game.Team; + +public final class AIRegistry { + + private static final Seq controllers = + new Seq<>(); + + private AIRegistry() { + } + + public static void register(Team team) { + if (team == null || get(team) != null) { + return; + } + + controllers.add(new SkirmishAIController(team)); + } + + public static SkirmishAIController get(Team team) { + for (SkirmishAIController controller : controllers) { + if (controller.getTeam() == team) { + return controller; + } + } + + return null; + } + + public static void unregister(Team team) { + SkirmishAIController controller = get(team); + + if (controller != null) { + controllers.remove(controller, true); + } + } + + public static void update(float delta) { + if (delta <= 0f) return; + + for (SkirmishAIController controller : controllers) { + controller.update(delta); + } + } + + public static void clear() { + controllers.clear(); + } + + public static int size() { + return controllers.size; + } +} \ No newline at end of file From c8dda044f869f405a14a9f669c328981b28d5b0f Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:56:32 +0800 Subject: [PATCH 09/15] AIController.java code da mastermind of the ai --- .../ceddie/skirmishai/core/AIController.java | 42 ++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/com/ceddie/skirmishai/core/AIController.java b/src/com/ceddie/skirmishai/core/AIController.java index 32f95c0d..8496172b 100644 --- a/src/com/ceddie/skirmishai/core/AIController.java +++ b/src/com/ceddie/skirmishai/core/AIController.java @@ -1 +1,41 @@ -hi \ No newline at end of file +package com.ceddie.skirmishai.core; + +import mindustry.game.Team; + +public class SkirmishAIController { + + private final Team team; + + private float elapsedTime; + + public SkirmishAIController(Team team) { + if (team == null) { + throw new IllegalArgumentException( + "AI team cannot be null." + ); + } + + this.team = team; + } + + public void update(float delta) { + elapsedTime += delta; + + // Future subsystem updates: + // + // Intelligence + // Strategy + // Economy + // Construction + // Defense + // Military + } + + public Team getTeam() { + return team; + } + + public float getElapsedTime() { + return elapsedTime; + } +} \ No newline at end of file From 349b98b2cbfa741912cf43ba65a2ff3be66a1cd3 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:57:31 +0800 Subject: [PATCH 10/15] AIDebugging.java code debugging purposes --- .../ceddie/skirmishai/debug/AIDebugging.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/com/ceddie/skirmishai/debug/AIDebugging.java b/src/com/ceddie/skirmishai/debug/AIDebugging.java index 18629009..5e995e3f 100644 --- a/src/com/ceddie/skirmishai/debug/AIDebugging.java +++ b/src/com/ceddie/skirmishai/debug/AIDebugging.java @@ -1 +1,27 @@ -hello pls no bugs \ No newline at end of file +//hello pls no bugs + +package com.ceddie.skirmishai.debug; + +import arc.util.Log; +import com.ceddie.skirmishai.core.AIRegistry; + +public final class AIDebug { + + private AIDebug() { + } + + public static void printRegistry() { + Log.info( + "[Skirmish AI] Active controllers: @", + AIRegistry.size() + ); + } + + public static void log(String message) { + Log.info("[Skirmish AI] @", message); + } + + public static void warn(String message) { + Log.warn("[Skirmish AI] @", message); + } +} \ No newline at end of file From c729a0a22e8ff1aaa07409de33cd01553dc8a8f6 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 13:59:47 +0800 Subject: [PATCH 11/15] Update mod.hjson --- mod.hjson | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mod.hjson b/mod.hjson index c4b43edf..eab0cda4 100644 --- a/mod.hjson +++ b/mod.hjson @@ -1,20 +1,20 @@ #the mod name as displayed in-game -displayName: "Java Mod Template" +displayName: "Skirmish AI" #the internal name of your mod -name: "example-java-mod" +name: "base-builder-ai-rework" #your name -author: "You" +author: "Cedric <•>" #the fully qualified main class of the mod main: "example.ExampleJavaMod" #the mod description as seen in the mod dialog -description: "A Mindustry Java mod template." +description: "Newly improved Base Builder AI(?) Technically, it's a new AI." #the mod version -version: 1.0.0 +version: 0.1.0 #the minimum game build required to run this mod minGameVersion: 160.3 From af948885412981e8a082b2b84dd53fb5a2315c35 Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 14:10:06 +0800 Subject: [PATCH 12/15] change main class path --- mod.hjson | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod.hjson b/mod.hjson index eab0cda4..f40cf178 100644 --- a/mod.hjson +++ b/mod.hjson @@ -8,7 +8,7 @@ name: "base-builder-ai-rework" author: "Cedric <•>" #the fully qualified main class of the mod -main: "example.ExampleJavaMod" +main: "com.ceddie.SkirmishAI" #the mod description as seen in the mod dialog description: "Newly improved Base Builder AI(?) Technically, it's a new AI." From ce4cd335cbf2b141f393b2125c25418c38c081bb Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 14:11:45 +0800 Subject: [PATCH 13/15] again, changed main class --- mod.hjson | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod.hjson b/mod.hjson index f40cf178..3c0b1c63 100644 --- a/mod.hjson +++ b/mod.hjson @@ -8,7 +8,7 @@ name: "base-builder-ai-rework" author: "Cedric <•>" #the fully qualified main class of the mod -main: "com.ceddie.SkirmishAI" +main: "com.ceddie.skirmishai.SkirmishAIMod" #the mod description as seen in the mod dialog description: "Newly improved Base Builder AI(?) Technically, it's a new AI." From db6ed401a90d2dc70ffed5ef37ed12c46c1c83aa Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 14:13:59 +0800 Subject: [PATCH 14/15] renamed SkirmishAIController to AIController --- src/com/ceddie/skirmishai/core/AIRegistry.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/com/ceddie/skirmishai/core/AIRegistry.java b/src/com/ceddie/skirmishai/core/AIRegistry.java index 5321e904..707a640a 100644 --- a/src/com/ceddie/skirmishai/core/AIRegistry.java +++ b/src/com/ceddie/skirmishai/core/AIRegistry.java @@ -5,7 +5,7 @@ public final class AIRegistry { - private static final Seq controllers = + private static final Seq controllers = new Seq<>(); private AIRegistry() { @@ -16,11 +16,11 @@ public static void register(Team team) { return; } - controllers.add(new SkirmishAIController(team)); + controllers.add(new AIController(team)); } - public static SkirmishAIController get(Team team) { - for (SkirmishAIController controller : controllers) { + public static AIController get(Team team) { + for (AIController controller : controllers) { if (controller.getTeam() == team) { return controller; } @@ -30,7 +30,7 @@ public static SkirmishAIController get(Team team) { } public static void unregister(Team team) { - SkirmishAIController controller = get(team); + AIController controller = get(team); if (controller != null) { controllers.remove(controller, true); @@ -40,7 +40,7 @@ public static void unregister(Team team) { public static void update(float delta) { if (delta <= 0f) return; - for (SkirmishAIController controller : controllers) { + for (AIController controller : controllers) { controller.update(delta); } } From 3e8ab1525a2afae308c4b7e80e31f4c75dfe7e2e Mon Sep 17 00:00:00 2001 From: ARBCeddie Date: Wed, 4 Nov 2026 14:14:49 +0800 Subject: [PATCH 15/15] fixed class name --- src/com/ceddie/skirmishai/core/AIController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/ceddie/skirmishai/core/AIController.java b/src/com/ceddie/skirmishai/core/AIController.java index 8496172b..7be84739 100644 --- a/src/com/ceddie/skirmishai/core/AIController.java +++ b/src/com/ceddie/skirmishai/core/AIController.java @@ -2,13 +2,13 @@ import mindustry.game.Team; -public class SkirmishAIController { +public class AIController { private final Team team; private float elapsedTime; - public SkirmishAIController(Team team) { + public AIController(Team team) { if (team == null) { throw new IllegalArgumentException( "AI team cannot be null."