@@ -4258,4 +4258,144 @@ public static class MenuGrid {
42584258 }
42594259 }
42604260 //endregion
4261+
4262+ // ==============================================================================
4263+ //region ROGUELIKE - Wave enemy run configuration
4264+ // ==============================================================================
4265+ /**
4266+ * Configuration for the roguelike wave-run gamemode.
4267+ * <p>
4268+ * Controls the spawn center location, spawn radius, and per-wave enemy counts.
4269+ * All values are hot-reloadable via {@code /sword reload}.
4270+ * </p>
4271+ */
4272+ public static class Roguelike {
4273+
4274+ /** World name for the roguelike spawn center. */
4275+ public static String SPAWN_WORLD = "world" ;
4276+
4277+ /** X coordinate of the spawn center. */
4278+ public static double SPAWN_X = 0.0 ;
4279+
4280+ /** Y coordinate of the spawn center. */
4281+ public static double SPAWN_Y = 64.0 ;
4282+
4283+ /** Z coordinate of the spawn center. */
4284+ public static double SPAWN_Z = 0.0 ;
4285+
4286+ /** Radius within which enemies spawn around the center, in blocks. */
4287+ public static double SPAWN_RADIUS = 8.0 ;
4288+
4289+ /** Number of Pillagers spawned in wave 1. */
4290+ public static int WAVE_1_PILLAGERS = 3 ;
4291+
4292+ /** Number of Wither Skeletons spawned in wave 2. */
4293+ public static int WAVE_2_WITHER_SKELETONS = 3 ;
4294+
4295+ /** Number of Pillagers spawned in wave 3. */
4296+ public static int WAVE_3_PILLAGERS = 2 ;
4297+
4298+ /** Number of Wither Skeletons spawned in wave 3. */
4299+ public static int WAVE_3_WITHER_SKELETONS = 3 ;
4300+
4301+ static {
4302+ register ("roguelike.spawn_world" , SPAWN_WORLD , String .class ,
4303+ v -> SPAWN_WORLD = v , ConfigurationSection ::getString );
4304+ register ("roguelike.spawn_x" , SPAWN_X , Double .class ,
4305+ v -> SPAWN_X = v , ConfigurationSection ::getDouble );
4306+ register ("roguelike.spawn_y" , SPAWN_Y , Double .class ,
4307+ v -> SPAWN_Y = v , ConfigurationSection ::getDouble );
4308+ register ("roguelike.spawn_z" , SPAWN_Z , Double .class ,
4309+ v -> SPAWN_Z = v , ConfigurationSection ::getDouble );
4310+ register ("roguelike.spawn_radius" , SPAWN_RADIUS , Double .class ,
4311+ v -> SPAWN_RADIUS = v , ConfigurationSection ::getDouble );
4312+ register ("roguelike.wave_1_pillagers" , WAVE_1_PILLAGERS , Integer .class ,
4313+ v -> WAVE_1_PILLAGERS = v , ConfigurationSection ::getInt );
4314+ register ("roguelike.wave_2_wither_skeletons" , WAVE_2_WITHER_SKELETONS , Integer .class ,
4315+ v -> WAVE_2_WITHER_SKELETONS = v , ConfigurationSection ::getInt );
4316+ register ("roguelike.wave_3_pillagers" , WAVE_3_PILLAGERS , Integer .class ,
4317+ v -> WAVE_3_PILLAGERS = v , ConfigurationSection ::getInt );
4318+ register ("roguelike.wave_3_wither_skeletons" , WAVE_3_WITHER_SKELETONS , Integer .class ,
4319+ v -> WAVE_3_WITHER_SKELETONS = v , ConfigurationSection ::getInt );
4320+ }
4321+ }
4322+ //region Ctf
4323+ /**
4324+ * Configuration for the Capture the Flag gamemode.
4325+ * <p>
4326+ * Controls team spawn locations, flag return timer, respawn delay, win threshold, and
4327+ * the speed debuff applied to flag carriers.
4328+ * All values are hot-reloadable via {@code /sword reload}.
4329+ * </p>
4330+ */
4331+ public static class Ctf {
4332+
4333+ /** World name shared by both team spawns. */
4334+ public static String SPAWN_WORLD = "world" ;
4335+
4336+ /** X coordinate of the RED team spawn (also the RED flag spawn). */
4337+ public static double RED_SPAWN_X = 15.0 ;
4338+ /** Y coordinate of the RED team spawn. */
4339+ public static double RED_SPAWN_Y = 64.0 ;
4340+ /** Z coordinate of the RED team spawn. */
4341+ public static double RED_SPAWN_Z = 0.0 ;
4342+
4343+ /** X coordinate of the BLUE team spawn (also the BLUE flag spawn). */
4344+ public static double BLUE_SPAWN_X = -15.0 ;
4345+ /** Y coordinate of the BLUE team spawn. */
4346+ public static double BLUE_SPAWN_Y = 64.0 ;
4347+ /** Z coordinate of the BLUE team spawn. */
4348+ public static double BLUE_SPAWN_Z = 0.0 ;
4349+
4350+ /** Seconds before a dropped flag automatically returns to its base. */
4351+ public static int FLAG_RETURN_TIMER_SECONDS = 30 ;
4352+
4353+ /** Seconds before a dead player respawns at their team spawn. */
4354+ public static int RESPAWN_DELAY_SECONDS = 5 ;
4355+
4356+ /**
4357+ * Number of flag captures required to win.
4358+ * Set to 0 for a timer-only match (most captures at expiry wins).
4359+ */
4360+ public static int CAPTURES_TO_WIN = 3 ;
4361+
4362+ /** Radius in blocks within which a flag carrier scores a capture when near their own base. */
4363+ public static double CAPTURE_RADIUS = 3.0 ;
4364+
4365+ /** Duration in ticks of the Slowness effect applied to flag carriers. Use a large value for a persistent effect. */
4366+ public static int FLAG_CARRIER_SLOW_DURATION = 999999 ;
4367+
4368+ /** Amplifier (0-based) of the Slowness effect on flag carriers. 0 = Slowness I, 1 = Slowness II. */
4369+ public static int FLAG_CARRIER_SLOW_AMPLIFIER = 1 ;
4370+
4371+ static {
4372+ register ("ctf.spawn_world" , SPAWN_WORLD , String .class ,
4373+ v -> SPAWN_WORLD = v , ConfigurationSection ::getString );
4374+ register ("ctf.red_spawn_x" , RED_SPAWN_X , Double .class ,
4375+ v -> RED_SPAWN_X = v , ConfigurationSection ::getDouble );
4376+ register ("ctf.red_spawn_y" , RED_SPAWN_Y , Double .class ,
4377+ v -> RED_SPAWN_Y = v , ConfigurationSection ::getDouble );
4378+ register ("ctf.red_spawn_z" , RED_SPAWN_Z , Double .class ,
4379+ v -> RED_SPAWN_Z = v , ConfigurationSection ::getDouble );
4380+ register ("ctf.blue_spawn_x" , BLUE_SPAWN_X , Double .class ,
4381+ v -> BLUE_SPAWN_X = v , ConfigurationSection ::getDouble );
4382+ register ("ctf.blue_spawn_y" , BLUE_SPAWN_Y , Double .class ,
4383+ v -> BLUE_SPAWN_Y = v , ConfigurationSection ::getDouble );
4384+ register ("ctf.blue_spawn_z" , BLUE_SPAWN_Z , Double .class ,
4385+ v -> BLUE_SPAWN_Z = v , ConfigurationSection ::getDouble );
4386+ register ("ctf.flag_return_timer_seconds" , FLAG_RETURN_TIMER_SECONDS , Integer .class ,
4387+ v -> FLAG_RETURN_TIMER_SECONDS = v , ConfigurationSection ::getInt );
4388+ register ("ctf.respawn_delay_seconds" , RESPAWN_DELAY_SECONDS , Integer .class ,
4389+ v -> RESPAWN_DELAY_SECONDS = v , ConfigurationSection ::getInt );
4390+ register ("ctf.captures_to_win" , CAPTURES_TO_WIN , Integer .class ,
4391+ v -> CAPTURES_TO_WIN = v , ConfigurationSection ::getInt );
4392+ register ("ctf.capture_radius" , CAPTURE_RADIUS , Double .class ,
4393+ v -> CAPTURE_RADIUS = v , ConfigurationSection ::getDouble );
4394+ register ("ctf.flag_carrier_slow_duration" , FLAG_CARRIER_SLOW_DURATION , Integer .class ,
4395+ v -> FLAG_CARRIER_SLOW_DURATION = v , ConfigurationSection ::getInt );
4396+ register ("ctf.flag_carrier_slow_amplifier" , FLAG_CARRIER_SLOW_AMPLIFIER , Integer .class ,
4397+ v -> FLAG_CARRIER_SLOW_AMPLIFIER = v , ConfigurationSection ::getInt );
4398+ }
4399+ }
4400+ //endregion
42614401}
0 commit comments