diff --git a/src/main/java/eu/mhsl/minenet/minigames/Main.java b/src/main/java/eu/mhsl/minenet/minigames/Main.java index a04111a..6ed8de0 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/Main.java +++ b/src/main/java/eu/mhsl/minenet/minigames/Main.java @@ -24,16 +24,17 @@ public class Main { private final static Logger logger = Logger.getGlobal(); public static ConfigurationNode globalConfig; + @SuppressWarnings("ResultOfMethodCallIgnored") public static void main(String[] args) throws ConfigurateException { //noinspection ResultOfMethodCallIgnored Resource.values(); // This initializes and preloads the enum and extracts the resources Languages.getInstance(); //Preload languages into the jvm globalConfig = YamlConfigurationLoader - .builder() - .path(Resource.CONFIG.getPath()) - .build() - .load(); + .builder() + .path(Resource.CONFIG.getPath()) + .build() + .load(); ConfigurationNode serverConfig = globalConfig.node("server"); diff --git a/src/main/java/eu/mhsl/minenet/minigames/Resource.java b/src/main/java/eu/mhsl/minenet/minigames/Resource.java index 775748d..40bebd2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/Resource.java +++ b/src/main/java/eu/mhsl/minenet/minigames/Resource.java @@ -21,6 +21,7 @@ public enum Resource { private final Path path; private final String name; + Resource(String name, boolean keepOutdated) { this.name = name; this.path = Path.of("resources/" + name); @@ -28,7 +29,7 @@ public enum Resource { try { Logger.getLogger("ressource").info("extracting resource " + name + " ... "); ResourceUtils.extractResource(name, keepOutdated); - } catch (URISyntaxException | IOException e) { + } catch(URISyntaxException | IOException e) { throw new RuntimeException(e); } } @@ -38,10 +39,10 @@ public enum Resource { } public Path getPath() { - return path; + return this.path; } public String getName() { - return name; + return this.name; } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/api/Controller.java b/src/main/java/eu/mhsl/minenet/minigames/api/Controller.java index 40afb34..cadc112 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/api/Controller.java +++ b/src/main/java/eu/mhsl/minenet/minigames/api/Controller.java @@ -12,11 +12,11 @@ public abstract class Controller implements Route { @SuppressWarnings("unchecked") public Controller() { - this.requestType = ((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]); + this.requestType = ((Class) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]); } @Override - public Object handle(Request request, Response response) throws Exception { + public Object handle(Request request, Response response) { response.header("Access-Control-Allow-Origin", "*"); response.header("Access-Control-Allow-Methods", "*"); @@ -28,7 +28,7 @@ public abstract class Controller implements Route { req = new Gson().fromJson(request.body(), this.requestType); } - return new Gson().toJson(handle(req, response)); + return new Gson().toJson(this.handle(req, response)); } public abstract R handle(Q request, Response response); diff --git a/src/main/java/eu/mhsl/minenet/minigames/api/HttpServer.java b/src/main/java/eu/mhsl/minenet/minigames/api/HttpServer.java index 26af5a7..a033a62 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/api/HttpServer.java +++ b/src/main/java/eu/mhsl/minenet/minigames/api/HttpServer.java @@ -10,6 +10,7 @@ import static spark.Spark.*; public class HttpServer { private static final ConfigurationNode apiConfig = Main.globalConfig.node("api"); + public HttpServer() { if(!apiConfig.node("enabled").getBoolean()) return; diff --git a/src/main/java/eu/mhsl/minenet/minigames/api/routes/closeRoom/CloseRoom.java b/src/main/java/eu/mhsl/minenet/minigames/api/routes/closeRoom/CloseRoom.java index 511723b..42481a4 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/api/routes/closeRoom/CloseRoom.java +++ b/src/main/java/eu/mhsl/minenet/minigames/api/routes/closeRoom/CloseRoom.java @@ -6,8 +6,12 @@ import spark.Response; import java.util.UUID; -record Req(UUID room) {} -record Resp() {} +record Req(UUID room) { +} + +record Resp() { +} + public class CloseRoom extends Controller { @Override public Resp handle(Req request, Response response) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/api/routes/createRoom/CreateRoom.java b/src/main/java/eu/mhsl/minenet/minigames/api/routes/createRoom/CreateRoom.java index aefe365..0af1cc7 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/api/routes/createRoom/CreateRoom.java +++ b/src/main/java/eu/mhsl/minenet/minigames/api/routes/createRoom/CreateRoom.java @@ -6,8 +6,12 @@ import spark.Response; import java.util.UUID; -record Req() {} -record Resp(UUID uuid) {} +record Req() { +} + +record Resp(UUID uuid) { +} + public class CreateRoom extends Controller { @Override public Resp handle(Req request, Response response) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/api/routes/queueRoom/QueueRoom.java b/src/main/java/eu/mhsl/minenet/minigames/api/routes/queueRoom/QueueRoom.java index a5cf128..fc584ba 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/api/routes/queueRoom/QueueRoom.java +++ b/src/main/java/eu/mhsl/minenet/minigames/api/routes/queueRoom/QueueRoom.java @@ -8,8 +8,12 @@ import spark.Response; import java.util.UUID; -record Req(UUID player, UUID room) {} -record Resp(String error) {} +record Req(UUID player, UUID room) { +} + +record Resp(String error) { +} + public class QueueRoom extends Controller { @Override public Resp handle(Req request, Response response) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/Commands.java b/src/main/java/eu/mhsl/minenet/minigames/command/Commands.java index 0c99f7e..7880e78 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/Commands.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/Commands.java @@ -1,9 +1,8 @@ package eu.mhsl.minenet.minigames.command; -import eu.mhsl.minenet.minigames.command.privileged.SkinCommand; -import eu.mhsl.minenet.minigames.command.privileged.*; import eu.mhsl.minenet.minigames.command.anonymous.HubCommand; import eu.mhsl.minenet.minigames.command.anonymous.LeaveCommand; +import eu.mhsl.minenet.minigames.command.privileged.*; import eu.mhsl.minenet.minigames.message.Icon; import eu.mhsl.minenet.minigames.message.type.ChatMessage; import net.minestom.server.MinecraftServer; @@ -33,10 +32,6 @@ public enum Commands { PLAYERLIMIT(new PlayerLimitCommand()), SETMEMORIAL(new SetMemorialCommand()); - Commands(Command handler) { - MinecraftServer.getCommandManager().register(handler); - } - static { MinecraftServer.getCommandManager().setUnknownCommandCallback((sender, command) -> { if(command.isBlank()) return; @@ -47,4 +42,8 @@ public enum Commands { .send(sender); }); } + + Commands(Command handler) { + MinecraftServer.getCommandManager().register(handler); + } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/PrivilegedCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/PrivilegedCommand.java index c4aa335..1316da1 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/PrivilegedCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/PrivilegedCommand.java @@ -11,20 +11,21 @@ import java.util.List; public class PrivilegedCommand extends Command { private final List conditions = new ArrayList<>(); + public PrivilegedCommand(@NotNull String name, @Nullable String... aliases) { super(name, aliases); - construct(); + this.construct(); } public PrivilegedCommand(@NotNull String name) { super(name); - construct(); + this.construct(); } private void construct() { - addCondition(isPrivileged()); + this.addCondition(this.isPrivileged()); - setCondition((sender, commandString) -> conditions.parallelStream().allMatch(condition -> condition.canUse(sender, commandString))); + this.setCondition((sender, commandString) -> this.conditions.parallelStream().allMatch(condition -> condition.canUse(sender, commandString))); } protected CommandCondition isPrivileged() { @@ -32,6 +33,6 @@ public class PrivilegedCommand extends Command { } protected void addCondition(CommandCondition condition) { - conditions.add(condition); + this.conditions.add(condition); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/anonymous/HubCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/anonymous/HubCommand.java index 9936895..7daa110 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/anonymous/HubCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/anonymous/HubCommand.java @@ -1,8 +1,8 @@ package eu.mhsl.minenet.minigames.command.anonymous; -import eu.mhsl.minenet.minigames.util.MoveInstance; import eu.mhsl.minenet.minigames.instance.hub.Hub; import eu.mhsl.minenet.minigames.instance.room.Room; +import eu.mhsl.minenet.minigames.util.MoveInstance; import net.minestom.server.command.builder.Command; import net.minestom.server.entity.Player; @@ -10,12 +10,12 @@ public class HubCommand extends Command { public HubCommand() { super("hub"); - setCondition( + this.setCondition( (sender, commandString) -> ((Player) sender).getInstance() instanceof Room room && !room.apiDriven ); - setDefaultExecutor((sender, context) -> { + this.setDefaultExecutor((sender, context) -> { if(Room.getRoom((Player) sender).orElseThrow().apiDriven) return; Room.unsetRoom((Player) sender); MoveInstance.move((Player) sender, Hub.INSTANCE); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/anonymous/LeaveCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/anonymous/LeaveCommand.java index ff36186..a30c2c6 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/anonymous/LeaveCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/anonymous/LeaveCommand.java @@ -9,8 +9,8 @@ public class LeaveCommand extends Command { public LeaveCommand() { super("leave"); - setCondition((sender, commandString) -> ((Player) sender).getInstance() instanceof Game); + this.setCondition((sender, commandString) -> ((Player) sender).getInstance() instanceof Game); - setDefaultExecutor((sender, context) -> Room.setOwnRoom((Player) sender)); + this.setDefaultExecutor((sender, context) -> Room.setOwnRoom((Player) sender)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/DebugCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/DebugCommand.java index 4298529..a6980a2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/DebugCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/DebugCommand.java @@ -14,26 +14,26 @@ public class DebugCommand extends PrivilegedCommand { public DebugCommand() { super("debug"); - setDefaultExecutor((sender, args) -> { + this.setDefaultExecutor((sender, args) -> { new ChatMessage(Icon.CHAT).appendTranslated("sample").send(sender); new ActionBarMessage().appendTranslated("sample").send(sender); new TitleMessage().subtitle(subtitleMessage -> subtitleMessage.appendTranslated("sample")).appendTranslated("sample").send(sender); List testplayers = new ArrayList<>() { { - add("MineTec"); - add("Goldi187"); - add("Test"); + this.add("MineTec"); + this.add("Goldi187"); + this.add("Test"); } }; new ChatMessage(Icon.STAR, true) - .appendTranslated("score#result") - .newLine() - .indent() - .numberedList(testplayers) - .undent() - .newLine() - .appendTranslated("score#thanks") - .send(sender); + .appendTranslated("score#result") + .newLine() + .indent() + .numberedList(testplayers) + .undent() + .newLine() + .appendTranslated("score#thanks") + .send(sender); new ChatMessage(Icon.SCIENCE).appendStatic(((Player) sender).getUuid().toString()).send(sender); }); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/FlyCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/FlyCommand.java index f5e3dac..2e3385b 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/FlyCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/FlyCommand.java @@ -8,7 +8,7 @@ public class FlyCommand extends PrivilegedCommand { public FlyCommand() { super("fly"); - setDefaultExecutor((sender, context) -> { + this.setDefaultExecutor((sender, context) -> { Player p = (Player) sender; p.setVelocity(new Vec(0, 5, 0)); p.setFlying(!p.isFlying()); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameStartCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameStartCommand.java index 1e591a8..0f1e813 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameStartCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameStartCommand.java @@ -7,11 +7,11 @@ import net.minestom.server.entity.Player; public class GameStartCommand extends PrivilegedCommand { public GameStartCommand() { super("gameStart"); - setDefaultExecutor((sender, context) -> { + this.setDefaultExecutor((sender, context) -> { Player player = (Player) sender; if(player.getInstance() instanceof StatelessGame game) { game.startAccessor(); } - }); + }); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameStopCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameStopCommand.java index addbcd3..8bfd2ee 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameStopCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameStopCommand.java @@ -7,7 +7,7 @@ import net.minestom.server.entity.Player; public class GameStopCommand extends PrivilegedCommand { public GameStopCommand() { super("gameStop"); - setDefaultExecutor((sender, context) -> { + this.setDefaultExecutor((sender, context) -> { Player player = (Player) sender; if(player.getInstance() instanceof StatelessGame game) { game.stop(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameTimeoutCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameTimeoutCommand.java index 8e3c1b8..ee4e7ba 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameTimeoutCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GameTimeoutCommand.java @@ -12,7 +12,7 @@ public class GameTimeoutCommand extends PrivilegedCommand { ArgumentInteger timeout = ArgumentType.Integer("timeout"); - addSyntax((sender, context) -> { + this.addSyntax((sender, context) -> { Player player = (Player) sender; if(player.getInstance() instanceof StatelessGame game) { game.setTimeLimit(context.get(timeout)); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GamemodeCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GamemodeCommand.java index 68fe523..b0d5ce8 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GamemodeCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GamemodeCommand.java @@ -11,9 +11,9 @@ public class GamemodeCommand extends PrivilegedCommand { super("gamemode", "gm"); - addSyntax((sender, context) -> ((Player) sender).setGameMode( + this.addSyntax((sender, context) -> ((Player) sender).setGameMode( context.get("target")), - ArgumentType.Enum("target", GameMode.class).setFormat(ArgumentEnum.Format.LOWER_CASED) + ArgumentType.Enum("target", GameMode.class).setFormat(ArgumentEnum.Format.LOWER_CASED) ); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GcCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GcCommand.java index e332b8e..cbc5e4e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GcCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/GcCommand.java @@ -1,17 +1,18 @@ package eu.mhsl.minenet.minigames.command.privileged; import eu.mhsl.minenet.minigames.command.PrivilegedCommand; -import eu.mhsl.minenet.minigames.message.type.ChatMessage; import eu.mhsl.minenet.minigames.message.Icon; +import eu.mhsl.minenet.minigames.message.type.ChatMessage; import eu.mhsl.minenet.minigames.util.Monitoring; public class GcCommand extends PrivilegedCommand { private static long lastRun = System.currentTimeMillis(); + public GcCommand() { super("gc"); - setDefaultExecutor((sender, context) -> { - long nextRun = (lastRun - (System.currentTimeMillis() - 30*1000)) / 1000; + this.setDefaultExecutor((sender, context) -> { + long nextRun = (lastRun - (System.currentTimeMillis() - 30 * 1000)) / 1000; if(nextRun > 0) { new ChatMessage(Icon.ERROR).appendStatic("Please wait ").appendStatic(String.valueOf(nextRun)).appendStatic(" seconds before running GC again!").send(sender); return; @@ -24,10 +25,10 @@ public class GcCommand extends PrivilegedCommand { long after = Monitoring.getRamUsage(); new ChatMessage(Icon.SUCCESS).appendStatic("Garbage collector ran successfully!").newLine() - .appendStatic("before: ").appendStatic(String.valueOf(before)).appendStatic("MB").newLine() - .appendStatic("now: ").appendStatic(String.valueOf(after)).appendStatic("MB").newLine() - .appendStatic("difference: ").appendStatic(String.valueOf(before-after)).appendStatic("MB") - .send(sender); + .appendStatic("before: ").appendStatic(String.valueOf(before)).appendStatic("MB").newLine() + .appendStatic("now: ").appendStatic(String.valueOf(after)).appendStatic("MB").newLine() + .appendStatic("difference: ").appendStatic(String.valueOf(before - after)).appendStatic("MB") + .send(sender); }); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/InstanceProxyMoveCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/InstanceProxyMoveCommand.java index 084760f..e403bf1 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/InstanceProxyMoveCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/InstanceProxyMoveCommand.java @@ -13,7 +13,7 @@ public class InstanceProxyMoveCommand extends PrivilegedCommand { ArgumentWord serverArgument = new ArgumentWord("server"); - addSyntax((sender, context) -> { + this.addSyntax((sender, context) -> { Instance room = ((Player) sender).getInstance(); room.getPlayers().forEach(player -> { Room.unsetRoom(player); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/KickCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/KickCommand.java index 02f292c..3e9b7fb 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/KickCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/KickCommand.java @@ -11,17 +11,17 @@ public class KickCommand extends PrivilegedCommand { public KickCommand() { super("kick"); - addSyntax( + this.addSyntax( (sender, context) -> - kick(context.getRaw("player"), ""), - ArgumentType.Entity("player").onlyPlayers(true) + this.kick(context.getRaw("player"), ""), + ArgumentType.Entity("player").onlyPlayers(true) ); - addSyntax( + this.addSyntax( (sender, context) -> - kick(context.getRaw("player"), context.getRaw("reason")), - ArgumentType.Entity("player").onlyPlayers(true), - ArgumentType.String("reason") + this.kick(context.getRaw("player"), context.getRaw("reason")), + ArgumentType.Entity("player").onlyPlayers(true), + ArgumentType.String("reason") ); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/LangTestCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/LangTestCommand.java index e9f98ae..cf68687 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/LangTestCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/LangTestCommand.java @@ -1,8 +1,8 @@ package eu.mhsl.minenet.minigames.command.privileged; import eu.mhsl.minenet.minigames.command.PrivilegedCommand; -import eu.mhsl.minenet.minigames.lang.Languages; import eu.mhsl.minenet.minigames.lang.Lang; +import eu.mhsl.minenet.minigames.lang.Languages; import eu.mhsl.minenet.minigames.message.Icon; import eu.mhsl.minenet.minigames.message.TranslatableMessage; import eu.mhsl.minenet.minigames.message.type.ChatMessage; @@ -13,11 +13,11 @@ public class LangTestCommand extends PrivilegedCommand { public LangTestCommand() { super("langtest"); - setDefaultExecutor((sender, context) -> sendMessage(Languages.getInstance().getLanguage((Player) sender), "sample").send(sender)); + this.setDefaultExecutor((sender, context) -> this.sendMessage(Languages.getInstance().getLanguage((Player) sender), "sample").send(sender)); var targetString = ArgumentType.String("mapId"); - addSyntax((sender, context) -> sendMessage(Languages.getInstance().getLanguage((Player) sender), context.get("mapId")).send(sender), targetString); + this.addSyntax((sender, context) -> this.sendMessage(Languages.getInstance().getLanguage((Player) sender), context.get("mapId")).send(sender), targetString); } private TranslatableMessage sendMessage(Lang lang, String mapId) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/OpCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/OpCommand.java index aebc0d7..1f1b1e9 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/OpCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/OpCommand.java @@ -11,7 +11,7 @@ public class OpCommand extends PrivilegedCommand { public OpCommand() { super("op"); - addSyntax((sender, context) -> { + this.addSyntax((sender, context) -> { Player target = MinecraftServer.getConnectionManager().getOnlinePlayerByUsername(context.getRaw("target")); if(target != null) { target.setPermissionLevel(4); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PlayerLimitCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PlayerLimitCommand.java index 7b50a72..ef93043 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PlayerLimitCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PlayerLimitCommand.java @@ -10,8 +10,9 @@ public class PlayerLimitCommand extends PrivilegedCommand { ArgumentInteger count = ArgumentType.Integer("count"); - addSyntax((sender, context) -> { - System.setProperty("minenet.playerlimit", String.valueOf(context.get(count))); - }, count); + this.addSyntax((sender, context) -> System.setProperty( + "minenet.playerlimit", + String.valueOf(context.get(count)) + ), count); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PublishRewardCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PublishRewardCommand.java index 3313581..f679393 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PublishRewardCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PublishRewardCommand.java @@ -13,10 +13,11 @@ import java.net.http.HttpResponse; public class PublishRewardCommand extends PrivilegedCommand { private final HttpClient rewardPublishClient = HttpClient.newHttpClient(); + public PublishRewardCommand() { super("publishReward"); - setDefaultExecutor((sender, context) -> { + this.setDefaultExecutor((sender, context) -> { try { Room room = Room.getRoom((Player) sender).orElseThrow(); TournamentDisplay world = new TournamentDisplay(room.getTournament()); @@ -24,14 +25,14 @@ public class PublishRewardCommand extends PrivilegedCommand { String rewardRequestJson = new Gson().toJson(room.getTournament().getRewards()); HttpRequest giveRewardsRequest = HttpRequest.newBuilder() - .uri(new URI("http://10.20.7.1:8080/api/event/reward")) - .POST(HttpRequest.BodyPublishers.ofString(rewardRequestJson)) - .build(); + .uri(new URI("http://10.20.7.1:8080/api/event/reward")) + .POST(HttpRequest.BodyPublishers.ofString(rewardRequestJson)) + .build(); room.getTournament().getRewards(); - HttpResponse rawResponse = rewardPublishClient.send(giveRewardsRequest, HttpResponse.BodyHandlers.discarding()); + HttpResponse rawResponse = this.rewardPublishClient.send(giveRewardsRequest, HttpResponse.BodyHandlers.discarding()); sender.sendMessage(String.format("Rewards published: HTTP %s", rawResponse.statusCode())); - } catch (Exception e) { + } catch(Exception e) { sender.sendMessage(e.getMessage()); } }); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/RefreshCommandsCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/RefreshCommandsCommand.java index d0e5b36..4d9a8b8 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/RefreshCommandsCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/RefreshCommandsCommand.java @@ -1,8 +1,8 @@ package eu.mhsl.minenet.minigames.command.privileged; import eu.mhsl.minenet.minigames.command.PrivilegedCommand; -import eu.mhsl.minenet.minigames.message.type.ChatMessage; import eu.mhsl.minenet.minigames.message.Icon; +import eu.mhsl.minenet.minigames.message.type.ChatMessage; import net.minestom.server.MinecraftServer; import net.minestom.server.entity.Player; @@ -10,7 +10,7 @@ public class RefreshCommandsCommand extends PrivilegedCommand { public RefreshCommandsCommand() { super("refreshCommands"); - setDefaultExecutor((sender, context) -> { + this.setDefaultExecutor((sender, context) -> { MinecraftServer.getConnectionManager().getOnlinePlayers().forEach(Player::refreshCommands); new ChatMessage(Icon.SUCCESS).appendStatic("Updated command syntax!").send(sender); }); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/RoomCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/RoomCommand.java index e9a5cfe..242fcc1 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/RoomCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/RoomCommand.java @@ -1,10 +1,10 @@ package eu.mhsl.minenet.minigames.command.privileged; import eu.mhsl.minenet.minigames.command.PrivilegedCommand; +import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.message.Icon; import eu.mhsl.minenet.minigames.message.TranslatableMessage; import eu.mhsl.minenet.minigames.message.type.ChatMessage; -import eu.mhsl.minenet.minigames.instance.room.Room; import net.minestom.server.entity.Player; import java.util.stream.Collectors; @@ -13,14 +13,14 @@ public class RoomCommand extends PrivilegedCommand { public RoomCommand() { super("room"); - setDefaultExecutor((sender, context) -> { + this.setDefaultExecutor((sender, context) -> { TranslatableMessage out = new ChatMessage(Icon.SCIENCE).appendStatic("Rooms:").newLine(); Room.getAllRooms().forEach((roomInstance) -> out - .newLine() - .appendStatic("Owner: ").appendStatic(roomInstance.getOwner() != null ? roomInstance.getOwner().getUsername() : "none").newLine() - .appendStatic("Players: ").appendStatic(String.valueOf(roomInstance.getAllMembers().size())).newLine() - .list(roomInstance.getAllMembers().stream().map(Player::getUsername).collect(Collectors.toList())).newLine()); + .newLine() + .appendStatic("Owner: ").appendStatic(roomInstance.getOwner() != null ? roomInstance.getOwner().getUsername() : "none").newLine() + .appendStatic("Players: ").appendStatic(String.valueOf(roomInstance.getAllMembers().size())).newLine() + .list(roomInstance.getAllMembers().stream().map(Player::getUsername).collect(Collectors.toList())).newLine()); out.send(sender); }); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetMemorialCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetMemorialCommand.java index c18dd63..7724d7e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetMemorialCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetMemorialCommand.java @@ -20,37 +20,37 @@ public class SetMemorialCommand extends PrivilegedCommand { ArgumentString titleArgument = ArgumentType.String("title"); ArgumentString loreArgument = ArgumentType.String("lore"); - materialArgument.setSuggestionCallback((sender, context, suggestion) -> { - Material - .values() - .stream() - .map(material -> new SuggestionEntry(material.name(), Component.text(material.name()))) - .forEach(suggestion::addEntry); - }); + materialArgument.setSuggestionCallback( + (sender, context, suggestion) -> Material + .values() + .stream() + .map(material -> new SuggestionEntry(material.name(), Component.text(material.name()))) + .forEach(suggestion::addEntry) + ); - addSyntax((sender, context) -> { + this.addSyntax((sender, context) -> { Room - .getRoom((Player) sender) - .orElseThrow() - .getTournament() - .setMemorialConfiguration( - new MemorialConfiguration( - Material.fromNamespaceId(context.get(materialArgument)), - context.get(titleArgument), - context.get(loreArgument) - ) - ); + .getRoom((Player) sender) + .orElseThrow() + .getTournament() + .setMemorialConfiguration( + new MemorialConfiguration( + Material.fromNamespaceId(context.get(materialArgument)), + context.get(titleArgument), + context.get(loreArgument) + ) + ); sender.sendMessage( - Component.text() - .append(Component.text("Memorial gesetzt:", NamedTextColor.GOLD)) - .appendNewline() - .append(Component.text(context.get(materialArgument), NamedTextColor.AQUA)) - .appendNewline() - .append(Component.text(context.get(titleArgument), NamedTextColor.RED)) - .appendNewline() - .append(Component.text(context.get(loreArgument), NamedTextColor.DARK_RED)) - .build() + Component.text() + .append(Component.text("Memorial gesetzt:", NamedTextColor.GOLD)) + .appendNewline() + .append(Component.text(context.get(materialArgument), NamedTextColor.AQUA)) + .appendNewline() + .append(Component.text(context.get(titleArgument), NamedTextColor.RED)) + .appendNewline() + .append(Component.text(context.get(loreArgument), NamedTextColor.DARK_RED)) + .build() ); }, materialArgument, titleArgument, loreArgument); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetRewardCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetRewardCommand.java index 659a610..3e058e5 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetRewardCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetRewardCommand.java @@ -22,34 +22,34 @@ public class SetRewardCommand extends PrivilegedCommand { ArgumentWord materialArgument = ArgumentType.Word("material"); ArgumentStringArray amountsArgument = ArgumentType.StringArray("amount"); - materialArgument.setSuggestionCallback((sender, context, suggestion) -> { - Material - .values() - .stream() - .map(material -> new SuggestionEntry(material.name(), Component.text(material.name()))) - .forEach(suggestion::addEntry); - }); + materialArgument.setSuggestionCallback( + (sender, context, suggestion) -> Material + .values() + .stream() + .map(material -> new SuggestionEntry(material.name(), Component.text(material.name()))) + .forEach(suggestion::addEntry) + ); - addSyntax((sender, context) -> { + this.addSyntax((sender, context) -> { Room - .getRoom((Player) sender) - .orElseThrow() - .getTournament() - .setRewardConfiguration( - new RewardConfiguration( - Material.fromNamespaceId(context.get(materialArgument)), - Arrays.stream(context.get(amountsArgument)).map(Integer::valueOf).collect(Collectors.toList()) - ) - ); + .getRoom((Player) sender) + .orElseThrow() + .getTournament() + .setRewardConfiguration( + new RewardConfiguration( + Material.fromNamespaceId(context.get(materialArgument)), + Arrays.stream(context.get(amountsArgument)).map(Integer::valueOf).collect(Collectors.toList()) + ) + ); sender.sendMessage( - Component.text() - .append(Component.text("Belohnung gesetzt:", NamedTextColor.GOLD)) - .appendNewline() - .append(Component.text(context.get(materialArgument), NamedTextColor.AQUA)) - .appendNewline() - .append(Component.text(String.join(", ", context.get(amountsArgument)), NamedTextColor.RED)) - .build() + Component.text() + .append(Component.text("Belohnung gesetzt:", NamedTextColor.GOLD)) + .appendNewline() + .append(Component.text(context.get(materialArgument), NamedTextColor.AQUA)) + .appendNewline() + .append(Component.text(String.join(", ", context.get(amountsArgument)), NamedTextColor.RED)) + .build() ); }, materialArgument, amountsArgument); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetRoomOwnerCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetRoomOwnerCommand.java index 85cf006..b95d0ff 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetRoomOwnerCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SetRoomOwnerCommand.java @@ -15,16 +15,16 @@ public class SetRoomOwnerCommand extends PrivilegedCommand { public SetRoomOwnerCommand() { super("setRoomOwner"); - addCondition((sender, commandString) -> ((Player) sender).getInstance() instanceof Room); + this.addCondition((sender, commandString) -> ((Player) sender).getInstance() instanceof Room); - setDefaultExecutor((sender, context) -> { + this.setDefaultExecutor((sender, context) -> { if(sender instanceof Player p) { Room.getRoom(p).orElseThrow().setOwner(p); new ChatMessage(Icon.SUCCESS).appendTranslated("room#ownerSelf").send(sender); } }); - addSyntax((sender, context) -> { + this.addSyntax((sender, context) -> { System.out.println("Test"); if(sender instanceof Player p) { Player newOwner = MinecraftServer.getConnectionManager().getOnlinePlayerByUsername(context.getRaw("player")); diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SkinCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SkinCommand.java index 4de09dc..feca11f 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SkinCommand.java +++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/SkinCommand.java @@ -9,7 +9,7 @@ public class SkinCommand extends PrivilegedCommand { public SkinCommand() { super("skin"); - addSyntax((sender, context) -> { + this.addSyntax((sender, context) -> { if(sender instanceof Player p) { p.setSkin(PlayerSkin.fromUsername(context.getRaw("target"))); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/handler/Listeners.java b/src/main/java/eu/mhsl/minenet/minigames/handler/Listeners.java index 2794283..fbeba80 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/handler/Listeners.java +++ b/src/main/java/eu/mhsl/minenet/minigames/handler/Listeners.java @@ -1,6 +1,9 @@ package eu.mhsl.minenet.minigames.handler; -import eu.mhsl.minenet.minigames.handler.global.*; +import eu.mhsl.minenet.minigames.handler.global.AddEntityToInstanceEventListener; +import eu.mhsl.minenet.minigames.handler.global.ChatFormatHandler; +import eu.mhsl.minenet.minigames.handler.global.PlayerLeaveHandler; +import eu.mhsl.minenet.minigames.handler.global.PlayerLoginHandler; import net.minestom.server.MinecraftServer; import net.minestom.server.event.EventListener; diff --git a/src/main/java/eu/mhsl/minenet/minigames/handler/global/PlayerLoginHandler.java b/src/main/java/eu/mhsl/minenet/minigames/handler/global/PlayerLoginHandler.java index fa8144f..02d7725 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/handler/global/PlayerLoginHandler.java +++ b/src/main/java/eu/mhsl/minenet/minigames/handler/global/PlayerLoginHandler.java @@ -2,13 +2,13 @@ package eu.mhsl.minenet.minigames.handler.global; import eu.mhsl.minenet.minigames.Main; import eu.mhsl.minenet.minigames.api.QueuedPlayerRooms; +import eu.mhsl.minenet.minigames.instance.hub.Hub; import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.instance.transfer.Transfer; import eu.mhsl.minenet.minigames.skin.SkinCache; import eu.mhsl.minenet.minigames.util.MoveInstance; import net.minestom.server.MinecraftServer; import net.minestom.server.entity.Player; -import eu.mhsl.minenet.minigames.instance.hub.Hub; import net.minestom.server.event.EventListener; import net.minestom.server.event.player.AsyncPlayerConfigurationEvent; import net.minestom.server.network.packet.server.play.TeamsPacket; @@ -61,7 +61,8 @@ public class PlayerLoginHandler implements EventListener s.equalsIgnoreCase(p.getUsername()))) { p.setPermissionLevel(4); } - } catch (SerializationException | NullPointerException ignored) {} + } catch(SerializationException | NullPointerException ignored) { + } Logger.getLogger("user").info(p.getUsername() + " joined"); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/Dimension.java b/src/main/java/eu/mhsl/minenet/minigames/instance/Dimension.java index f1d7825..cf5085c 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/Dimension.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/Dimension.java @@ -10,39 +10,40 @@ import net.minestom.server.world.DimensionType; */ public enum Dimension { OVERWORLD( - NamespaceID.from("minenet:fullbright_overworld"), - DimensionType - .builder() - .ambientLight(2.0f) - .build() + NamespaceID.from("minenet:fullbright_overworld"), + DimensionType + .builder() + .ambientLight(2.0f) + .build() ), NETHER( - NamespaceID.from("minenet:fullbright_nether"), - DimensionType - .builder() - .ambientLight(2.0f) - .effects("minecraft:the_nether") - .build() + NamespaceID.from("minenet:fullbright_nether"), + DimensionType + .builder() + .ambientLight(2.0f) + .effects("minecraft:the_nether") + .build() ), THE_END( - NamespaceID.from("minenet:fullbright_end"), - DimensionType - .builder() - .ambientLight(2.0f) - .effects("minecraft:the_end") - .build() + NamespaceID.from("minenet:fullbright_end"), + DimensionType + .builder() + .ambientLight(2.0f) + .effects("minecraft:the_end") + .build() ); public final DimensionType DIMENSION; public final NamespaceID namespaceID; public final DynamicRegistry.Key key; + Dimension(NamespaceID namespaceID, DimensionType dimType) { this.DIMENSION = dimType; this.namespaceID = namespaceID; - this.key = MinecraftServer.getDimensionTypeRegistry().register(namespaceID, DIMENSION); + this.key = MinecraftServer.getDimensionTypeRegistry().register(namespaceID, this.DIMENSION); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/MineNetInstance.java b/src/main/java/eu/mhsl/minenet/minigames/instance/MineNetInstance.java index 051cfcd..45a47c6 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/MineNetInstance.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/MineNetInstance.java @@ -7,7 +7,6 @@ import net.minestom.server.event.instance.AddEntityToInstanceEvent; import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent; import net.minestom.server.instance.Instance; import net.minestom.server.instance.InstanceContainer; -import net.minestom.server.instance.InstanceManager; import net.minestom.server.registry.DynamicRegistry; import net.minestom.server.timer.TaskSchedule; import net.minestom.server.world.DimensionType; @@ -19,9 +18,9 @@ public class MineNetInstance extends InstanceContainer { super(UUID.randomUUID(), type); MinecraftServer.getInstanceManager().registerInstance(this); - eventNode() - .addListener(AddEntityToInstanceEvent.class, this::onEntityAdd) - .addListener(RemoveEntityFromInstanceEvent.class, this::onEntityRemove); + this.eventNode() + .addListener(AddEntityToInstanceEvent.class, this::onEntityAdd) + .addListener(RemoveEntityFromInstanceEvent.class, this::onEntityRemove); } private void onEntityRemove(RemoveEntityFromInstanceEvent removeEntityFromInstanceEvent) { @@ -38,6 +37,7 @@ public class MineNetInstance extends InstanceContainer { /** * Called when Player joins this instance + * * @param p player who is joining * @return setCanceled */ @@ -47,18 +47,15 @@ public class MineNetInstance extends InstanceContainer { /** * Called when Player leaves this instance + * * @param p player who is leaving */ protected void onPlayerLeave(Player p) { } - /** - * - * @param target - */ public void destroy(Instance target) { - getPlayers().forEach(player -> { + this.getPlayers().forEach(player -> { if(target != null) player.setInstance(target); else @@ -66,9 +63,9 @@ public class MineNetInstance extends InstanceContainer { }); MinecraftServer.getSchedulerManager().scheduleTask( - () -> MinecraftServer.getInstanceManager().unregisterInstance(this), - TaskSchedule.seconds(10), - TaskSchedule.stop() + () -> MinecraftServer.getInstanceManager().unregisterInstance(this), + TaskSchedule.seconds(10), + TaskSchedule.stop() ); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/Game.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/Game.java index e1fb406..1a9581a 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/Game.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/Game.java @@ -1,14 +1,14 @@ package eu.mhsl.minenet.minigames.instance.game; import eu.mhsl.minenet.minigames.instance.MineNetInstance; +import eu.mhsl.minenet.minigames.instance.Spawnable; import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.config.Option; +import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.message.Icon; import eu.mhsl.minenet.minigames.message.type.ChatMessage; import eu.mhsl.minenet.minigames.score.Score; import eu.mhsl.minenet.minigames.util.CommonEventHandles; -import eu.mhsl.minenet.minigames.instance.Spawnable; -import eu.mhsl.minenet.minigames.instance.room.Room; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.Player; @@ -28,34 +28,26 @@ import java.util.concurrent.CompletableFuture; import java.util.logging.Logger; public abstract class Game extends MineNetInstance implements Spawnable { - + protected final Random rnd = new Random(); + protected final Logger logger; protected Room parentRoom; protected boolean isRunning = false; protected boolean isBeforeBeginning = true; - protected final Random rnd = new Random(); //TODO better way than ths? - - protected final Logger logger; - public Game(DynamicRegistry.Key dimensionType) { super(dimensionType); MinecraftServer.getInstanceManager().registerInstance(this); - logger = Logger.getLogger("Game:" + getUuid()); + this.logger = Logger.getLogger("Game:" + this.getUuid()); - eventNode() + this.eventNode() .addListener(PlayerMoveEvent.class, this::onPlayerMove) .addListener(PlayerBlockBreakEvent.class, this::onBlockBreak) .addListener(PlayerBlockPlaceEvent.class, this::onBlockPlace) .addListener(ItemDropEvent.class, this::onItemDrop); } - public Game setParent(Room parentRoom) { - this.parentRoom = parentRoom; - return this; - } - public static void initialize(GameFactory factory, List> options, Player owner) { try { Room originRoom = Room.getRoom(owner).orElseThrow(); @@ -69,18 +61,23 @@ public abstract class Game extends MineNetInstance implements Spawnable { .appendTranslated(factory.description()) .send(originRoom.getAllMembers()); - } catch (Exception e) { + } catch(Exception e) { new ChatMessage(Icon.ERROR).appendStatic("Instance crashed: " + e.getMessage()).send(owner); MinecraftServer.getSchedulerManager().scheduleNextTick(() -> Room.getRoom(owner).orElseThrow().moveMembersToRoomLobby()); e.printStackTrace(System.err); } } + public Game setParent(Room parentRoom) { + this.parentRoom = parentRoom; + return this; + } + /** * Load and start countdown */ public void load() { - scheduler().submitTask(() -> { + this.scheduler().submitTask(() -> { CompletableFuture callback = new CompletableFuture<>(); this.onLoad(callback); // callback.whenComplete((unused, throwable) -> this.start()); @@ -90,13 +87,13 @@ public abstract class Game extends MineNetInstance implements Spawnable { } protected void start() { - isRunning = true; - isBeforeBeginning = false; + this.isRunning = true; + this.isBeforeBeginning = false; this.onStart(); } public void stop() { - isRunning = false; + this.isRunning = false; this.onStop(); this.unload(); } @@ -104,12 +101,12 @@ public abstract class Game extends MineNetInstance implements Spawnable { public void unload() { this.onUnload(); - getPlayers().forEach(Room::setOwnRoom); + this.getPlayers().forEach(Room::setOwnRoom); - scheduler().scheduleTask(() -> { + this.scheduler().scheduleTask(() -> { - logger.info("stopping game instance " + this.uuid); - getPlayers().forEach(player -> player.kick("timeout")); + this.logger.info("stopping game instance " + this.uuid); + this.getPlayers().forEach(player -> player.kick("timeout")); MinecraftServer.getInstanceManager().unregisterInstance(this); @@ -120,9 +117,14 @@ public abstract class Game extends MineNetInstance implements Spawnable { callback.complete(null); } - protected void onStart() {} - protected void onStop() {} - protected void onUnload() {} + protected void onStart() { + } + + protected void onStop() { + } + + protected void onUnload() { + } protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { @@ -146,7 +148,7 @@ public abstract class Game extends MineNetInstance implements Spawnable { } protected void checkAbandoned() { - scheduleNextTick((instance) -> { + this.scheduleNextTick((instance) -> { if(instance.getPlayers().isEmpty()) this.unload(); }); } @@ -156,10 +158,10 @@ public abstract class Game extends MineNetInstance implements Spawnable { } public boolean isRunning() { - return isRunning; + return this.isRunning; } public Pos getSpawn() { - return new Pos(0,50,0); + return new Pos(0, 50, 0); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameList.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameList.java index 628506c..bfe551d 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameList.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameList.java @@ -1,14 +1,14 @@ package eu.mhsl.minenet.minigames.instance.game; import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory; +import eu.mhsl.minenet.minigames.instance.game.stateless.types.acidRain.AcidRainFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.anvilRun.AnvilRunFactory; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.blockBreakRace.BlockBreakRaceFactory; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.bowSpleef.BowSpleefFactory; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.elytraRace.ElytraRaceFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.backrooms.BackroomsFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.bedwars.BedwarsFactory; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.acidRain.AcidRainFactory; +import eu.mhsl.minenet.minigames.instance.game.stateless.types.blockBreakRace.BlockBreakRaceFactory; +import eu.mhsl.minenet.minigames.instance.game.stateless.types.bowSpleef.BowSpleefFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.deathcube.DeathcubeFactory; +import eu.mhsl.minenet.minigames.instance.game.stateless.types.elytraRace.ElytraRaceFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.fastbridge.FastbridgeFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.highGround.HighGroundFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.jumpDive.JumpDiveFactory; @@ -16,8 +16,8 @@ import eu.mhsl.minenet.minigames.instance.game.stateless.types.minerun.MinerunFa import eu.mhsl.minenet.minigames.instance.game.stateless.types.spaceSnake.SpaceSnakeFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.spleef.SpleefFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.stickfight.StickFightFactory; -import eu.mhsl.minenet.minigames.instance.game.stateless.types.tetris.TetrisFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.sumo.SumoFactory; +import eu.mhsl.minenet.minigames.instance.game.stateless.types.tetris.TetrisFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.tntrun.TntRunFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.TowerdefenseFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.types.trafficlightrace.TrafficLightRaceFactory; @@ -48,10 +48,12 @@ public enum GameList { private final GameFactory factory; private final GameType type; + GameList(GameFactory factory, GameType type) { this.factory = factory; this.type = type; } + public GameFactory getFactory() { return this.factory; } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameType.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameType.java index ea2d329..71bffb0 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameType.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameType.java @@ -22,15 +22,15 @@ public enum GameType { } public Material getIcon() { - return icon; + return this.icon; } public TranslatedComponent getTitle() { - return title; + return this.title; } public TranslatedComponent getDescription() { - return description; + return this.description; } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/StatelessGame.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/StatelessGame.java index 36aa3f1..846d143 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/StatelessGame.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/StatelessGame.java @@ -37,7 +37,7 @@ public class StatelessGame extends Game { } public String getName() { - return name; + return this.name; } public void setTimeLimit(int limit) { @@ -47,24 +47,23 @@ public class StatelessGame extends Game { this.timePlayed = 0; } if(this.timeLimit > 0) { - this.timeLimitTask = scheduler().submitTask(() -> { - if(!isRunning || timeLimit == 0) return TaskSchedule.stop(); - if(timeLimit <= timePlayed) { - stop(); + this.timeLimitTask = this.scheduler().submitTask(() -> { + if(!this.isRunning || this.timeLimit == 0) return TaskSchedule.stop(); + if(this.timeLimit <= this.timePlayed) { + this.stop(); return TaskSchedule.stop(); } - int timeLeft = timeLimit - timePlayed; - switch (timeLeft) { - case 90, 60, 30, 10, 5, 4, 3, 2, 1 -> - new ChatMessage(Icon.TIME) - .appendStatic(String.valueOf(timeLeft)) - .appendSpace() - .appendTranslated(timeLeft == 1 ? "common#secondsLeft_singular" : "common#secondsLeft_plural") - .send(getPlayers()); + int timeLeft = this.timeLimit - this.timePlayed; + switch(timeLeft) { + case 90, 60, 30, 10, 5, 4, 3, 2, 1 -> new ChatMessage(Icon.TIME) + .appendStatic(String.valueOf(timeLeft)) + .appendSpace() + .appendTranslated(timeLeft == 1 ? "common#secondsLeft_singular" : "common#secondsLeft_plural") + .send(this.getPlayers()); } - timePlayed++; + this.timePlayed++; return TaskSchedule.seconds(1); }, ExecutionType.TICK_START); @@ -84,7 +83,7 @@ public class StatelessGame extends Game { Duration fadeIn = Duration.ofMillis(300); Duration stay = Duration.ofMillis(700); - return new Countdown(TitleMessage.class) + return new Countdown() .countdown( Audience.audience(this.getPlayers()), 5, @@ -102,26 +101,27 @@ public class StatelessGame extends Game { public void startAccessor() { this.start(); } + @Override protected void start() { - score.setInstance(this); - score.attachListeners(); + this.score.setInstance(this); + this.score.attachListeners(); - countdownStart().thenRun(super::start); + this.countdownStart().thenRun(super::start); } @Override public void stop() { - isRunning = false; + this.isRunning = false; this.onStop(); - getScore().insertRemainingPlayers(getPlayers()); - this.publishScore(getScore()); + this.getScore().insertRemainingPlayers(this.getPlayers()); + this.publishScore(this.getScore()); - countdownUnload(); + this.countdownUnload(); } private void countdownUnload() { - new TitleMessage(Duration.ofSeconds(1)).appendTranslated("score#done").send(getPlayers()); - scheduler().scheduleTask(this::unload, TaskSchedule.seconds(5), TaskSchedule.stop()); + new TitleMessage(Duration.ofSeconds(1)).appendTranslated("score#done").send(this.getPlayers()); + this.scheduler().scheduleTask(this::unload, TaskSchedule.seconds(5), TaskSchedule.stop()); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/ConfigManager.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/ConfigManager.java index 1cda99a..4d4a72e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/ConfigManager.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/ConfigManager.java @@ -5,12 +5,12 @@ import java.util.ArrayList; public class ConfigManager { private final ArrayList> items = new ArrayList<>(); - public ConfigManager addOption(Option option) { - items.add(option); + public ConfigManager addOption(Option option) { + this.items.add(option); return this; } public ArrayList> getAll() { - return items; + return this.items; } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/GameConfigurationInventory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/GameConfigurationInventory.java index 9bafa06..5f8d0c3 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/GameConfigurationInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/GameConfigurationInventory.java @@ -4,15 +4,14 @@ import eu.mhsl.minenet.minigames.instance.game.Game; import eu.mhsl.minenet.minigames.instance.game.stateless.config.restriction.Restriction; import eu.mhsl.minenet.minigames.instance.game.stateless.config.restriction.RestrictionData; import eu.mhsl.minenet.minigames.instance.game.stateless.config.restriction.RestrictionHandler; +import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.message.component.TranslatedComponent; import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory; import eu.mhsl.minenet.minigames.util.InventoryItemAlignment; -import eu.mhsl.minenet.minigames.instance.room.Room; import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.format.NamedTextColor; import net.minestom.server.MinecraftServer; import net.minestom.server.entity.Player; -import net.minestom.server.event.EventListener; import net.minestom.server.event.instance.AddEntityToInstanceEvent; import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent; import net.minestom.server.inventory.InventoryType; @@ -40,54 +39,54 @@ public class GameConfigurationInventory extends InteractableInventory { this.factory = factory; room.eventNode() - .addListener(AddEntityToInstanceEvent.class, addEntityToInstanceEvent -> MinecraftServer.getSchedulerManager().scheduleNextTick(this::updatePlayButton)) - .addListener(RemoveEntityFromInstanceEvent.class, removeEntityFromInstanceEvent -> MinecraftServer.getSchedulerManager().scheduleNextTick(this::updatePlayButton)); + .addListener(AddEntityToInstanceEvent.class, addEntityToInstanceEvent -> MinecraftServer.getSchedulerManager().scheduleNextTick(this::updatePlayButton)) + .addListener(RemoveEntityFromInstanceEvent.class, removeEntityFromInstanceEvent -> MinecraftServer.getSchedulerManager().scheduleNextTick(this::updatePlayButton)); ConfigManager config = factory.configuration(); - setClickableItem( - ItemStack.builder(Material.RED_WOOL) - .customName( - TranslatedComponent.byId("common#back") - .setColor(NamedTextColor.RED) - .getAssembled(p) - ) - .build(), - 0, - itemClick -> itemClick.getPlayer().closeInventory(), - true + this.setClickableItem( + ItemStack.builder(Material.RED_WOOL) + .customName( + TranslatedComponent.byId("common#back") + .setColor(NamedTextColor.RED) + .getAssembled(p) + ) + .build(), + 0, + itemClick -> itemClick.getPlayer().closeInventory(), + true ); - setDummyItem(Material.BLACK_STAINED_GLASS_PANE,1); + this.setDummyItem(Material.BLACK_STAINED_GLASS_PANE, 1); - setDummyItem( - ItemStack.builder(Material.NAME_TAG) - .customName( - factory.name().setColor(NamedTextColor.GOLD).getAssembled(p) - ) - .build(), - 4 + this.setDummyItem( + ItemStack.builder(Material.NAME_TAG) + .customName( + factory.name().setColor(NamedTextColor.GOLD).getAssembled(p) + ) + .build(), + 4 ); - setDummyItem(Material.BLACK_STAINED_GLASS_PANE,7); + this.setDummyItem(Material.BLACK_STAINED_GLASS_PANE, 7); - updatePlayButton(); + this.updatePlayButton(); for(int i = 9; i <= 17; i++) { - setDummyItem(Material.BLACK_STAINED_GLASS_PANE, i); + this.setDummyItem(Material.BLACK_STAINED_GLASS_PANE, i); } if(config == null) { - setDummyItem( - ItemStack.builder(Material.BARRIER) - .customName( - TranslatedComponent.byId("room#noOption").setColor(NamedTextColor.RED).getAssembled(p) - ) - .lore( - TranslatedComponent.assemble("room#noOptionDescription", p) - ) - .build(), - 31 + this.setDummyItem( + ItemStack.builder(Material.BARRIER) + .customName( + TranslatedComponent.byId("room#noOption").setColor(NamedTextColor.RED).getAssembled(p) + ) + .lore( + TranslatedComponent.assemble("room#noOptionDescription", p) + ) + .build(), + 31 ); } else { @@ -95,11 +94,11 @@ public class GameConfigurationInventory extends InteractableInventory { InventoryItemAlignment itemAlignment = new InventoryItemAlignment(config.getAll().size(), 3); for(Option item : config.getAll()) { InventoryItemAlignment.ItemOffset current = itemAlignment.next(); - map.put(offset + current.get(), item); + this.map.put(offset + current.get(), item); - setDummyItem( - item.getCurrent(p), - offset + current.get() + this.setDummyItem( + item.getCurrent(p), + offset + current.get() ); } } @@ -110,59 +109,59 @@ public class GameConfigurationInventory extends InteractableInventory { protected void onClick(Player player, int slot, ClickType clickType, InventoryConditionResult inventoryConditionResult) { inventoryConditionResult.setCancel(true); - if(!map.containsKey(slot)) return; + if(!this.map.containsKey(slot)) return; - Option item = map.get(slot); - setDummyItem( - item.getNext(p), - slot + Option item = this.map.get(slot); + this.setDummyItem( + item.getNext(this.p), + slot ); - update(); + this.update(); } private void updatePlayButton() { - RestrictionHandler restrictionHandler = factory.globalRestrictions(); - RestrictionData restrictionData = new RestrictionData(room); + RestrictionHandler restrictionHandler = this.factory.globalRestrictions(); + RestrictionData restrictionData = new RestrictionData(this.room); if(restrictionHandler.canPlay(restrictionData)) { - setClickableItem( - ItemStack.builder(restrictionHandler.getWarnings(restrictionData).size() > 0 ? Material.YELLOW_WOOL : Material.GREEN_WOOL) - .customName(TranslatedComponent.byId("restriction#success").setColor(NamedTextColor.GREEN).getAssembled(p)) - .lore(restrictionHandler.getWarnings(restrictionData).stream().map(translatedComponent -> translatedComponent.getAssembled(p)).collect(Collectors.toList())) - .build(), - 8, - itemClick -> Game.initialize(factory, map.values().stream().toList(), itemClick.getPlayer()), - true + this.setClickableItem( + ItemStack.builder(!restrictionHandler.getWarnings(restrictionData).isEmpty() ? Material.YELLOW_WOOL : Material.GREEN_WOOL) + .customName(TranslatedComponent.byId("restriction#success").setColor(NamedTextColor.GREEN).getAssembled(this.p)) + .lore(restrictionHandler.getWarnings(restrictionData).stream().map(translatedComponent -> translatedComponent.getAssembled(this.p)).collect(Collectors.toList())) + .build(), + 8, + itemClick -> Game.initialize(this.factory, this.map.values().stream().toList(), itemClick.getPlayer()), + true ); } else { - setClickableItem( - ItemStack.builder(Material.RED_WOOL) - .customName(TranslatedComponent.byId("restriction#fail").setColor(NamedTextColor.RED).getAssembled(p)) - .lore( - restrictionHandler.getRestrictions() - .stream() - .filter(iRestriction -> iRestriction.calculate(restrictionData).type().equals(Restriction.Type.FAIL)) - .map(iRestriction -> iRestriction.calculate(restrictionData).description().getAssembled(p)) - .collect(Collectors.toList())) - .build(), - 8, - itemClick -> { - if(restrictionHandler.canPlay(restrictionData)) { - updatePlayButton(); - return; - } - itemClick.getPlayer().playSound(Sound.sound(SoundEvent.ENTITY_SILVERFISH_DEATH, Sound.Source.AMBIENT, 1f, 1f)); - }, - false + this.setClickableItem( + ItemStack.builder(Material.RED_WOOL) + .customName(TranslatedComponent.byId("restriction#fail").setColor(NamedTextColor.RED).getAssembled(this.p)) + .lore( + restrictionHandler.getRestrictions() + .stream() + .filter(iRestriction -> iRestriction.calculate(restrictionData).type().equals(Restriction.Type.FAIL)) + .map(iRestriction -> iRestriction.calculate(restrictionData).description().getAssembled(this.p)) + .collect(Collectors.toList())) + .build(), + 8, + itemClick -> { + if(restrictionHandler.canPlay(restrictionData)) { + this.updatePlayButton(); + return; + } + itemClick.getPlayer().playSound(Sound.sound(SoundEvent.ENTITY_SILVERFISH_DEATH, Sound.Source.AMBIENT, 1f, 1f)); + }, + false ); } - update(); + this.update(); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/GameFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/GameFactory.java index 6f15bb7..07e72cb 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/GameFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/GameFactory.java @@ -12,9 +12,11 @@ import java.util.Map; public interface GameFactory { TranslatedComponent name(); + default ConfigManager configuration() { return null; } + default RestrictionHandler globalRestrictions() { return new RestrictionHandler(); } @@ -22,6 +24,7 @@ public interface GameFactory { default Material symbol() { return Material.GRASS_BLOCK; } + default TranslatedComponent description() { return TranslatedComponent.byId("GameFactory#missingDescription"); } @@ -29,17 +32,17 @@ public interface GameFactory { Game manufacture(Room parent, Map> configuration) throws Exception; default Game manufacture(Room parent, List> configuration) throws Exception { - if(configuration == null) return manufacture(parent); + if(configuration == null) return this.manufacture(parent); Map> cnf = new HashMap<>(); configuration.forEach(option -> cnf.put(option.getId(), option)); - return manufacture(parent, cnf); + return this.manufacture(parent, cnf); } default Game manufacture(Room parent) throws Exception { - if(this.configuration() == null) return manufacture(parent, List.of()); + if(this.configuration() == null) return this.manufacture(parent, List.of()); - return manufacture(parent, this.configuration().getAll()); + return this.manufacture(parent, this.configuration().getAll()); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/Option.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/Option.java index 1c6fc8f..b0244f2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/Option.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/Option.java @@ -12,12 +12,12 @@ import java.util.List; import java.util.Objects; public abstract class Option { - private RestrictionHandler restrictionHandler; private final Material item; private final TranslatedComponent name; private final String id; - protected T currentValue; private final List options; + protected T currentValue; + private RestrictionHandler restrictionHandler; private int pointer = 0; public Option(String id, Material item, TranslatedComponent name, List options) { @@ -26,46 +26,45 @@ public abstract class Option { this.name = name; this.options = options; - currentValue = options.getFirst(); + this.currentValue = options.getFirst(); + } + + public RestrictionHandler getRestrictionHandler() { + return this.restrictionHandler; } public void setRestrictionHandler(RestrictionHandler restrictionHandler) { this.restrictionHandler = restrictionHandler; } - public RestrictionHandler getRestrictionHandler() { - return restrictionHandler; - } - - public ItemStack getNext(Player p) { - if(++pointer >= options.size()) pointer = 0; - currentValue = options.get(pointer); - return getCurrent(p); + if(++this.pointer >= this.options.size()) this.pointer = 0; + this.currentValue = this.options.get(this.pointer); + return this.getCurrent(p); } public ItemStack getCurrent(Player p) { - String value = options.get(pointer).toString(); - return ItemStack.builder(item) - .customName(name.getAssembled(p)) - .lore(TranslatedComponent.byId("optionCommon#value").setColor(NamedTextColor.GOLD).getAssembled(p) - .append(Component.text(": ")).append(Component.text(value))) - .build(); + String value = this.options.get(this.pointer).toString(); + return ItemStack.builder(this.item) + .customName(this.name.getAssembled(p)) + .lore(TranslatedComponent.byId("optionCommon#value").setColor(NamedTextColor.GOLD).getAssembled(p) + .append(Component.text(": ")).append(Component.text(value))) + .build(); } public int getAsInt() { - return Integer.parseInt(getAsString()); + return Integer.parseInt(this.getAsString()); } public boolean getAsBoolean() { - return Objects.equals(getAsString(), "true") || Objects.equals(getAsString(), "1"); + return Objects.equals(this.getAsString(), "true") || Objects.equals(this.getAsString(), "1"); } public String getAsString() { - return currentValue.toString(); + return this.currentValue.toString(); } public String getId() { - return id; + return this.id; } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/Restriction.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/Restriction.java index d9c8989..1d5e98e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/Restriction.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/Restriction.java @@ -10,7 +10,7 @@ public record Restriction(TranslatedComponent name, TranslatedComponent descript this.warnMessage = warnMessage; this.type = type; - if (this.warnMessage == null && this.type.equals(Type.WARN)) { + if(this.warnMessage == null && this.type.equals(Type.WARN)) { throw new IllegalStateException("warnMessage cannot be null when RestrictionType is WARN"); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/RestrictionHandler.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/RestrictionHandler.java index 010f0a2..635c4e7 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/RestrictionHandler.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/RestrictionHandler.java @@ -22,18 +22,18 @@ public class RestrictionHandler { } public List getRestrictions() { - return restrictions; + return this.restrictions; } public boolean canPlay(RestrictionData data) { - if(restrictions.size() < 1) return true; + if(this.restrictions.isEmpty()) return true; return this.restrictions.stream() - .noneMatch(iRestriction -> iRestriction.calculate(data).type().equals(Restriction.Type.FAIL)); + .noneMatch(iRestriction -> iRestriction.calculate(data).type().equals(Restriction.Type.FAIL)); } public List getWarnings(RestrictionData data) { List warnings = new ArrayList<>(); - for (IRestriction r : this.restrictions) { + for(IRestriction r : this.restrictions) { Restriction calculated = r.calculate(data); if(!calculated.type().equals(Restriction.Type.WARN)) continue; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/common/MaximalPlayeramountGameRestriction.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/common/MaximalPlayeramountGameRestriction.java index 0276a7b..7b13d59 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/common/MaximalPlayeramountGameRestriction.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/common/MaximalPlayeramountGameRestriction.java @@ -15,10 +15,10 @@ public class MaximalPlayeramountGameRestriction implements IRestriction { @Override public Restriction calculate(RestrictionData data) { return new Restriction( - TranslatedComponent.byId("restriction#maxPlayersInRoom"), - TranslatedComponent.byId("restriction#maxPlayersInRoomDescription"), - null, - data.room().getAllMembers().size() > this.max ? Restriction.Type.FAIL : Restriction.Type.OK + TranslatedComponent.byId("restriction#maxPlayersInRoom"), + TranslatedComponent.byId("restriction#maxPlayersInRoomDescription"), + null, + data.room().getAllMembers().size() > this.max ? Restriction.Type.FAIL : Restriction.Type.OK ); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/common/MinimalPlayeramountGameRestriction.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/common/MinimalPlayeramountGameRestriction.java index e460b78..c0ec0e1 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/common/MinimalPlayeramountGameRestriction.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/config/restriction/common/MinimalPlayeramountGameRestriction.java @@ -15,10 +15,10 @@ public class MinimalPlayeramountGameRestriction implements IRestriction { @Override public Restriction calculate(RestrictionData data) { return new Restriction( - TranslatedComponent.byId("restriction#minPlayersInRoom"), - TranslatedComponent.byId("restriction#minPlayersInRoomDescription"), - null, - data.room().getAllMembers().size() < this.min ? Restriction.Type.FAIL : Restriction.Type.OK + TranslatedComponent.byId("restriction#minPlayersInRoom"), + TranslatedComponent.byId("restriction#minPlayersInRoomDescription"), + null, + data.room().getAllMembers().size() < this.min ? Restriction.Type.FAIL : Restriction.Type.OK ); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/acidRain/AcidRain.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/acidRain/AcidRain.java index 2aecbcb..a123979 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/acidRain/AcidRain.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/acidRain/AcidRain.java @@ -27,26 +27,26 @@ import java.util.concurrent.CompletableFuture; public class AcidRain extends StatelessGame { - final private int radius = 20; - private int generationOffset = 0; - - final private int roofHeight = 55; - private int difficulty = 0; final JNoise noise = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.09) - .build(); + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.09) + .build(); + final private int radius = 20; + final private int roofHeight = 55; + private int generationOffset = 0; + private int difficulty = 0; + public AcidRain() { super(Dimension.OVERWORLD.key, "acidRain", new LastWinsScore()); - setGenerator( - new CircularPlateTerrainGenerator(radius) - .setPlateHeight(50) - .setPlatePallet(BlockPallet.STONE) + this.setGenerator( + new CircularPlateTerrainGenerator(this.radius) + .setPlateHeight(50) + .setPlatePallet(BlockPallet.STONE) ); - eventNode().addListener(PlayerTickEvent.class, this::onPlayerTick); + this.eventNode().addListener(PlayerTickEvent.class, this::onPlayerTick); } @Override @@ -61,39 +61,40 @@ public class AcidRain extends StatelessGame { MinecraftServer.getSchedulerManager().submitTask(() -> { - getPlayers().forEach(player -> { - player.sendPacket(new ParticlePacket(Particle.SNEEZE, 0, 60, 0, radius, radius, radius, 1f, 500)); - player.sendPacket(new ParticlePacket(Particle.ITEM_SLIME, 0, 60, 0, radius, radius, radius, 1f, 500)); + this.getPlayers().forEach(player -> { + player.sendPacket(new ParticlePacket(Particle.SNEEZE, 0, 60, 0, this.radius, this.radius, this.radius, 1f, 500)); + player.sendPacket(new ParticlePacket(Particle.ITEM_SLIME, 0, 60, 0, this.radius, this.radius, this.radius, 1f, 500)); }); - if(!isRunning) return TaskSchedule.stop(); + if(!this.isRunning) return TaskSchedule.stop(); return TaskSchedule.millis(100); }, ExecutionType.TICK_END); MinecraftServer.getSchedulerManager().submitTask(() -> { - generationOffset++; - generatePlatform(generationOffset); + this.generationOffset++; + this.generatePlatform(this.generationOffset); - if(!isRunning) return TaskSchedule.stop(); - return TaskSchedule.millis((long) NumberUtil.map(50 - difficulty, 0, 50, 100, 1000)); + if(!this.isRunning) return TaskSchedule.stop(); + return TaskSchedule.millis((long) NumberUtil.map(50 - this.difficulty, 0, 50, 100, 1000)); }, ExecutionType.TICK_END); MinecraftServer.getSchedulerManager().submitTask(() -> { - difficulty++; + this.difficulty++; - if(difficulty >= 50) return TaskSchedule.stop(); + if(this.difficulty >= 50) return TaskSchedule.stop(); return TaskSchedule.seconds(3); }); } @Override protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { - if(playerMoveEvent.getNewPosition().y() < 50) playerDeath(playerMoveEvent.getPlayer()); + if(playerMoveEvent.getNewPosition().y() < 50) this.playerDeath(playerMoveEvent.getPlayer()); } private void onPlayerTick(PlayerTickEvent playerTickEvent) { - if(isBeforeBeginning) return; - if(getBlock(playerTickEvent.getPlayer().getPosition().withY(roofHeight)).isAir()) playerDeath(playerTickEvent.getPlayer()); + if(this.isBeforeBeginning) return; + if(this.getBlock(playerTickEvent.getPlayer().getPosition().withY(this.roofHeight)).isAir()) + this.playerDeath(playerTickEvent.getPlayer()); } private void generatePlatform(long offset) { @@ -102,19 +103,20 @@ public class AcidRain extends StatelessGame { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); for(int x = -radius; x <= radius; x++) { for(int z = -radius; z <= radius; z++) { - batch.setBlock(x, roofHeight, z, Block.AIR); + batch.setBlock(x, this.roofHeight, z, Block.AIR); if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > radius) continue; - if(noise.getNoise(x + offset, z + offset) > 0.4) continue; + if(this.noise.getNoise(x + offset, z + offset) > 0.4) continue; - batch.setBlock(x, roofHeight, z, Block.OAK_PLANKS); + batch.setBlock(x, this.roofHeight, z, Block.OAK_PLANKS); } } - BatchUtil.loadAndApplyBatch(batch, this, () -> {}); + BatchUtil.loadAndApplyBatch(batch, this, () -> { + }); } private void playerDeath(Player p) { p.setGameMode(GameMode.SPECTATOR); - getScore().insertResult(p); + this.getScore().insertResult(p); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRun.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRun.java index 1496048..127b106 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRun.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRun.java @@ -1,8 +1,8 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.anvilRun; +import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.score.LastWinsScore; -import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.util.BatchUtil; import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator; import net.minestom.server.MinecraftServer; @@ -27,10 +27,10 @@ class AnvilRun extends StatelessGame { final int spawnHeight = 30; final int radius; - int anvilsPerSecond; final int seconds; final int anvilHeight = 200; final List anvilSpawnPositions = new ArrayList<>(); + int anvilsPerSecond; public AnvilRun(int radius, int seconds) { super(Dimension.OVERWORLD.key, "Anvil Run", new LastWinsScore()); @@ -38,25 +38,25 @@ class AnvilRun extends StatelessGame { this.seconds = seconds; this.setGenerator(new CircularPlateTerrainGenerator(radius)); - eventNode().addListener(EntityTickEvent.class, this::onEntityTick); + this.eventNode().addListener(EntityTickEvent.class, this::onEntityTick); } @Override protected void onLoad(@NotNull CompletableFuture callback) { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for(int x = -radius; x <= radius; x++) { - for (int z = -radius; z <= radius; z++) { - if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > radius) continue; + for(int x = -this.radius; x <= this.radius; x++) { + for(int z = -this.radius; z <= this.radius; z++) { + if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > this.radius) continue; - anvilSpawnPositions.add(new Pos(x+0.5, anvilHeight, z+0.5)); + this.anvilSpawnPositions.add(new Pos(x + 0.5, this.anvilHeight, z + 0.5)); - batch.setBlock(x, spawnHeight-1, z, Block.SNOW_BLOCK); + batch.setBlock(x, this.spawnHeight - 1, z, Block.SNOW_BLOCK); } } - this.anvilsPerSecond = anvilSpawnPositions.size() / this.seconds; - Collections.shuffle(anvilSpawnPositions); + this.anvilsPerSecond = this.anvilSpawnPositions.size() / this.seconds; + Collections.shuffle(this.anvilSpawnPositions); BatchUtil.loadAndApplyBatch(batch, this, () -> callback.complete(null)); } @@ -72,12 +72,12 @@ class AnvilRun extends StatelessGame { super.onStart(); Scheduler scheduler = MinecraftServer.getSchedulerManager(); - for(int i=0; i spawnAnvil(this.anvilSpawnPositions.get(j)), + () -> this.spawnAnvil(this.anvilSpawnPositions.get(j)), TaskSchedule.millis( - (long) Math.floor((double) i/this.anvilsPerSecond * 1000) + (long) Math.floor((double) i / this.anvilsPerSecond * 1000) ), TaskSchedule.stop() ); @@ -87,25 +87,26 @@ class AnvilRun extends StatelessGame { @Override protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { super.onPlayerMove(playerMoveEvent); - if(isBeforeBeginning && playerMoveEvent.getNewPosition().y() < spawnHeight - 2) { + if(this.isBeforeBeginning && playerMoveEvent.getNewPosition().y() < this.spawnHeight - 2) { playerMoveEvent.setCancelled(true); - playerMoveEvent.getPlayer().teleport(getSpawn()); + playerMoveEvent.getPlayer().teleport(this.getSpawn()); return; } - if(playerMoveEvent.getNewPosition().y() < spawnHeight - 2) getScore().insertResult(playerMoveEvent.getPlayer()); + if(playerMoveEvent.getNewPosition().y() < this.spawnHeight - 2) + this.getScore().insertResult(playerMoveEvent.getPlayer()); } protected void onEntityTick(@NotNull EntityTickEvent entityTickEvent) { if(!entityTickEvent.getEntity().getEntityType().equals(EntityType.FALLING_BLOCK)) return; Pos anvilPosition = entityTickEvent.getEntity().getPosition(); - if(anvilPosition.y() > spawnHeight + 0.5) return; - if(anvilPosition.y() < spawnHeight - 3) entityTickEvent.getEntity().remove(); - if(this.getBlock(anvilPosition.withY(spawnHeight-1)).isAir()) return; - this.setBlock(anvilPosition.withY(spawnHeight-1), Block.AIR); + if(anvilPosition.y() > this.spawnHeight + 0.5) return; + if(anvilPosition.y() < this.spawnHeight - 3) entityTickEvent.getEntity().remove(); + if(this.getBlock(anvilPosition.withY(this.spawnHeight - 1)).isAir()) return; + this.setBlock(anvilPosition.withY(this.spawnHeight - 1), Block.AIR); } @Override public Pos getSpawn() { - return new Pos(0, spawnHeight, 0); + return new Pos(0, this.spawnHeight, 0); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRunFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRunFactory.java index 1adf9fc..f7d7aac 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRunFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRunFactory.java @@ -1,9 +1,9 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.anvilRun; import eu.mhsl.minenet.minigames.instance.game.Game; +import eu.mhsl.minenet.minigames.instance.game.stateless.config.ConfigManager; import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.config.Option; -import eu.mhsl.minenet.minigames.instance.game.stateless.config.ConfigManager; import eu.mhsl.minenet.minigames.instance.game.stateless.config.common.NumericOption; import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.message.component.TranslatedComponent; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/backrooms/Backrooms.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/backrooms/Backrooms.java index 6eedd86..f719a11 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/backrooms/Backrooms.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/backrooms/Backrooms.java @@ -10,7 +10,7 @@ public class Backrooms extends StatelessGame { public Backrooms() { super(Dimension.NETHER.key, "Backrooms", new NoScore()); BackroomsGenerator generator = new BackroomsGenerator(); - setGenerator(unit -> generator.generateRoom(unit, 50)); + this.setGenerator(unit -> generator.generateRoom(unit, 50)); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/backrooms/BackroomsGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/backrooms/BackroomsGenerator.java index 7e521b1..ab4b649 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/backrooms/BackroomsGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/backrooms/BackroomsGenerator.java @@ -3,6 +3,7 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.backrooms; import net.minestom.server.instance.block.Block; import net.minestom.server.instance.generator.GenerationUnit; import net.minestom.server.instance.generator.UnitModifier; + import java.util.concurrent.ThreadLocalRandom; public class BackroomsGenerator { @@ -11,8 +12,8 @@ public class BackroomsGenerator { var start = unit.absoluteStart(); var yPos = start.blockY() + y; - for (int x = 0; x < unit.size().blockX(); x++) { - for (int z = 0; z < unit.size().blockZ(); z++) { + for(int x = 0; x < unit.size().blockX(); x++) { + for(int z = 0; z < unit.size().blockZ(); z++) { var xPos = start.blockX() + x; var zPos = start.blockZ() + z; @@ -23,27 +24,27 @@ public class BackroomsGenerator { modifier.setBlock(xPos, yPos + 4, zPos, Block.SMOOTH_STONE_SLAB); // idk man... dont ask about this - if ( - (x - 2) % 4 == 0 && ( - ((z - 2) % 8 == 0) || - ((z - 2) % 8 == 1) || - ((z - 2) % 8 == 3) || - ((z - 2) % 8 == 4) - ) + if( + (x - 2) % 4 == 0 && ( + ((z - 2) % 8 == 0) || + ((z - 2) % 8 == 1) || + ((z - 2) % 8 == 3) || + ((z - 2) % 8 == 4) + ) ) { modifier.setBlock(xPos, yPos + 4, zPos, Block.SEA_LANTERN); } } } - generateWalls(modifier, start.blockX() + 0, yPos + 1, start.blockZ() + 0); - generateWalls(modifier, start.blockX() + 8, yPos + 1, start.blockZ() + 0); - generateWalls(modifier, start.blockX() + 0, yPos + 1, start.blockZ() + 8); - generateWalls(modifier, start.blockX() + 8, yPos + 1, start.blockZ() + 8); + this.generateWalls(modifier, start.blockX(), yPos + 1, start.blockZ()); + this.generateWalls(modifier, start.blockX() + 8, yPos + 1, start.blockZ()); + this.generateWalls(modifier, start.blockX(), yPos + 1, start.blockZ() + 8); + this.generateWalls(modifier, start.blockX() + 8, yPos + 1, start.blockZ() + 8); } private void generateWalls(UnitModifier modifier, int xPos, int yPos, int zPos) { - generatePillar(modifier, xPos, yPos, zPos, Block.CHISELED_SANDSTONE); + this.generatePillar(modifier, xPos, yPos, zPos, Block.CHISELED_SANDSTONE); var random = ThreadLocalRandom.current(); @@ -55,31 +56,31 @@ public class BackroomsGenerator { var door1pos = random.nextInt(2, 6); var door2pos = random.nextInt(2, 6); - if (wall1) { - for (int x = xPos; x < xPos + 8; x++) { - generatePillar(modifier, x, yPos, zPos, Block.SMOOTH_SANDSTONE); + if(wall1) { + for(int x = xPos; x < xPos + 8; x++) { + this.generatePillar(modifier, x, yPos, zPos, Block.SMOOTH_SANDSTONE); } } - if (wall2) { - for (int z = zPos; z < zPos + 8; z++) { - generatePillar(modifier, xPos, yPos, z, Block.SMOOTH_SANDSTONE); + if(wall2) { + for(int z = zPos; z < zPos + 8; z++) { + this.generatePillar(modifier, xPos, yPos, z, Block.SMOOTH_SANDSTONE); } } - if (door1 && wall1) { - generatePillar(modifier, xPos + door1pos, yPos, zPos, Block.AIR); - generatePillar(modifier, xPos + door1pos + 1, yPos, zPos, Block.AIR); + if(door1 && wall1) { + this.generatePillar(modifier, xPos + door1pos, yPos, zPos, Block.AIR); + this.generatePillar(modifier, xPos + door1pos + 1, yPos, zPos, Block.AIR); } - if (door2 && wall2) { - generatePillar(modifier, xPos, yPos, zPos + door2pos, Block.AIR); - generatePillar(modifier, xPos, yPos, zPos + door2pos + 1, Block.AIR); + if(door2 && wall2) { + this.generatePillar(modifier, xPos, yPos, zPos + door2pos, Block.AIR); + this.generatePillar(modifier, xPos, yPos, zPos + door2pos + 1, Block.AIR); } } private void generatePillar(UnitModifier modifier, int xPos, int yPos, int zPos, Block material) { - for (int y = yPos; y < yPos + 3; y++) { + for(int y = yPos; y < yPos + 3; y++) { modifier.setBlock(xPos, y, zPos, material); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/Bedwars.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/Bedwars.java index 88690d7..68273aa 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/Bedwars.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/Bedwars.java @@ -29,7 +29,9 @@ import net.minestom.server.timer.TaskSchedule; import org.jetbrains.annotations.NotNull; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class Bedwars extends StatelessGame { @@ -39,22 +41,22 @@ public class Bedwars extends StatelessGame { public Bedwars() throws IOException { super(Dimension.OVERWORLD.key, "Bedwars", new LastWinsScore()); - setChunkLoader(new AnvilLoader(Resource.GAME_MAP.getPath().resolve("bedwars/test"))); + this.setChunkLoader(new AnvilLoader(Resource.GAME_MAP.getPath().resolve("bedwars/test"))); Configuration config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(Resource.GAME_MAP.getPath().resolve("bedwars/test/config.yml").toFile()); List teamNames = config.getStringList("setup.teams"); teamNames.forEach(teamName -> { String path = "teams." + teamName; - teams.add(new BedwarsTeam( - config.getString(path + ".name"), - Position.getPosFromCommaSeparated(config.getString(path + ".pos.spawn")), - Position.getPosFromCommaSeparated(config.getString(path + ".pos.spawner")), - config.getStringList(path + ".pos.bed").stream().map(Position::getPosFromCommaSeparated).toList().toArray(new Pos[0]), - MaterialUtil.fromString(config.getString(path + ".material.block"), Material.BLACK_WOOL) + this.teams.add(new BedwarsTeam( + config.getString(path + ".name"), + Position.getPosFromCommaSeparated(config.getString(path + ".pos.spawn")), + Position.getPosFromCommaSeparated(config.getString(path + ".pos.spawner")), + config.getStringList(path + ".pos.bed").stream().map(Position::getPosFromCommaSeparated).toList().toArray(new Pos[0]), + MaterialUtil.fromString(config.getString(path + ".material.block"), Material.BLACK_WOOL) )); }); - eventNode().addListener(PickupItemEvent.class, pickupItemEvent -> { + this.eventNode().addListener(PickupItemEvent.class, pickupItemEvent -> { if(pickupItemEvent.getEntity() instanceof Player p) { p.getInventory().addItemStack(pickupItemEvent.getItemStack()); } @@ -68,10 +70,10 @@ public class Bedwars extends StatelessGame { @Override protected void onStart() { - scheduler().submitTask(() -> { - if(!isRunning) return TaskSchedule.stop(); + this.scheduler().submitTask(() -> { + if(!this.isRunning) return TaskSchedule.stop(); - teams.forEach(bedwarsTeam -> { + this.teams.forEach(bedwarsTeam -> { ItemEntity item = new ItemEntity(ItemStack.of(bedwarsTeam.getBlock())); item.setNoGravity(true); item.setInstance(this, bedwarsTeam.getSpawner()); @@ -84,16 +86,17 @@ public class Bedwars extends StatelessGame { @Override protected void onBlockPlace(@NotNull PlayerBlockPlaceEvent playerBlockPlaceEvent) { - placedBlocks.add(playerBlockPlaceEvent.getBlockPosition()); + this.placedBlocks.add(playerBlockPlaceEvent.getBlockPosition()); } @Override protected void onBlockBreak(@NotNull PlayerBlockBreakEvent playerBlockBreakEvent) { - if(!placedBlocks.contains(playerBlockBreakEvent.getBlockPosition())) playerBlockBreakEvent.setCancelled(true); + if(!this.placedBlocks.contains(playerBlockBreakEvent.getBlockPosition())) + playerBlockBreakEvent.setCancelled(true); - teams.forEach(bedwarsTeam -> { + this.teams.forEach(bedwarsTeam -> { if(Arrays.stream(bedwarsTeam.getBed()).anyMatch(pos -> pos.sameBlock(playerBlockBreakEvent.getBlockPosition()))) - breakBed(bedwarsTeam); + this.breakBed(bedwarsTeam); }); if(playerBlockBreakEvent.isCancelled()) @@ -102,13 +105,13 @@ public class Bedwars extends StatelessGame { @Override protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { - if(playerMoveEvent.getNewPosition().y() < 0) death(playerMoveEvent.getPlayer()); + if(playerMoveEvent.getNewPosition().y() < 0) this.death(playerMoveEvent.getPlayer()); } private void breakBed(BedwarsTeam team) { team.removeBed(); - for (Pos blockPos : team.getBed()) { - setBlock(blockPos, Material.AIR.block()); + for(Pos blockPos : team.getBed()) { + this.setBlock(blockPos, Material.AIR.block()); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/BedwarsFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/BedwarsFactory.java index 0de3d94..3290e7e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/BedwarsFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/BedwarsFactory.java @@ -20,7 +20,7 @@ public class BedwarsFactory implements GameFactory { @Override public RestrictionHandler globalRestrictions() { return new RestrictionHandler() - .addRestriction(new MinimalPlayeramountGameRestriction(1)); + .addRestriction(new MinimalPlayeramountGameRestriction(1)); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/data/BedwarsTeam.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/data/BedwarsTeam.java index 219355c..6bd1a5c 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/data/BedwarsTeam.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bedwars/data/BedwarsTeam.java @@ -8,16 +8,12 @@ import java.util.ArrayList; import java.util.List; public class BedwarsTeam { - private List members = new ArrayList<>(); - private final String name; private final Pos spawn; private final Pos spawner; - private final Pos[] bed; - private final Material block; - + private List members = new ArrayList<>(); private boolean hasBed = true; public BedwarsTeam(String name, Pos spawn, Pos spawner, Pos[] bed, Material block) { @@ -33,11 +29,11 @@ public class BedwarsTeam { } public boolean isHasBed() { - return hasBed; + return this.hasBed; } public List getMembers() { - return members; + return this.members; } public void setMembers(List members) { @@ -45,22 +41,22 @@ public class BedwarsTeam { } public String getName() { - return name; + return this.name; } public Pos getSpawn() { - return spawn; + return this.spawn; } public Pos getSpawner() { - return spawner; + return this.spawner; } public Pos[] getBed() { - return bed; + return this.bed; } public Material getBlock() { - return block; + return this.block; } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/blockBreakRace/BlockBreakRace.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/blockBreakRace/BlockBreakRace.java index 8bc5a8b..f23b408 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/blockBreakRace/BlockBreakRace.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/blockBreakRace/BlockBreakRace.java @@ -16,8 +16,8 @@ import org.jetbrains.annotations.NotNull; import java.util.List; public class BlockBreakRace extends StatelessGame { - private int spawnCount = 0; private final int height; + private int spawnCount = 0; public BlockBreakRace(int height) { super(Dimension.OVERWORLD.key, "blockBreakRace", new FirstWinsScore()); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/blockBreakRace/BlockBreakRaceGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/blockBreakRace/BlockBreakRaceGenerator.java index 768bf72..06e77d8 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/blockBreakRace/BlockBreakRaceGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/blockBreakRace/BlockBreakRaceGenerator.java @@ -11,16 +11,14 @@ import java.util.concurrent.ThreadLocalRandom; public class BlockBreakRaceGenerator extends BaseGenerator { public static final int BOTTOM_Y = 50; - public final int TOP_Y; public static final int[] ROW_OFFSETS_X = {4, 8, 12}; public static final int[] ROW_OFFSETS_Z = {4, 8, 12}; - private static final Block[] FILL_BLOCKS = { Block.STONE, Block.DIRT, Block.OAK_PLANKS }; - + public final int TOP_Y; private final Random random = ThreadLocalRandom.current(); public BlockBreakRaceGenerator(int height) { @@ -34,8 +32,8 @@ public class BlockBreakRaceGenerator extends BaseGenerator { this.addMixIn(unit -> { if(unit.absoluteStart().chunkX() != 0) return; - for (int localX : ROW_OFFSETS_X) { - for (int localZ : ROW_OFFSETS_Z) { + for(int localX : ROW_OFFSETS_X) { + for(int localZ : ROW_OFFSETS_Z) { final int absZ = unit.absoluteStart().blockZ() + localZ; this.placeTube(unit, localX, absZ); } @@ -44,7 +42,7 @@ public class BlockBreakRaceGenerator extends BaseGenerator { } private void placeTube(GenerationUnit unit, int x, int z) { - for (int y = BOTTOM_Y; y < this.TOP_Y; y++) { + for(int y = BOTTOM_Y; y < this.TOP_Y; y++) { Block fill = FILL_BLOCKS[this.random.nextInt(FILL_BLOCKS.length)]; unit.modifier().fill( new Pos(x, y, z), @@ -53,9 +51,9 @@ public class BlockBreakRaceGenerator extends BaseGenerator { ); } - for (int dx = -1; dx <= 1; dx++) { - for (int dz = -1; dz <= 1; dz++) { - if (dx == 0 && dz == 0) continue; // Zentrum überspringen + for(int dx = -1; dx <= 1; dx++) { + for(int dz = -1; dz <= 1; dz++) { + if(dx == 0 && dz == 0) continue; // Zentrum überspringen unit.modifier().fill( new Pos(x + dx, BOTTOM_Y, z + dz), new Pos(x + dx, this.TOP_Y + 3, z + dz).add(1), diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bowSpleef/BowSpleef.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bowSpleef/BowSpleef.java index bbb7d3b..f17f8cf 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bowSpleef/BowSpleef.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bowSpleef/BowSpleef.java @@ -9,7 +9,9 @@ import eu.mhsl.minenet.minigames.util.GeneratorUtils; import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Vec; -import net.minestom.server.entity.*; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.GameMode; import net.minestom.server.entity.metadata.other.PrimedTntMeta; import net.minestom.server.event.EventListener; import net.minestom.server.event.entity.projectile.ProjectileCollideWithBlockEvent; @@ -29,6 +31,7 @@ public class BowSpleef extends StatelessGame { private static final Tag ARROW_FIRST_HIT = Tag.Boolean("ARROW_ALREADY_LIT"); private final int radius = 30; private final int totalElevation = 50; + public BowSpleef() { super(Dimension.OVERWORLD.key, "bowSpleef", new LastWinsScore()); @@ -67,41 +70,41 @@ public class BowSpleef extends StatelessGame { // .build() // ); - eventNode().addListener( - EventListener - .builder(ProjectileCollideWithBlockEvent.class) - .handler(projectileBlockHitEvent -> { - Entity projectile = projectileBlockHitEvent.getEntity(); - if(!projectile.getTag(ARROW_FIRST_HIT)) { - projectile.remove(); - return; - } + this.eventNode().addListener( + EventListener + .builder(ProjectileCollideWithBlockEvent.class) + .handler(projectileBlockHitEvent -> { + Entity projectile = projectileBlockHitEvent.getEntity(); + if(!projectile.getTag(ARROW_FIRST_HIT)) { + projectile.remove(); + return; + } - float radius = 0.5F; - Point arrowPos = projectile.getPosition(); - GeneratorUtils.foreachXZ(arrowPos.add(radius), arrowPos.sub(radius), point -> { - Point location = point.add(projectile.getVelocity().mul(0.04)).withY(totalElevation); - if(!getBlock(location).isAir()) { - setBlock(location, Block.AIR); + float radius = 0.5F; + Point arrowPos = projectile.getPosition(); + GeneratorUtils.foreachXZ(arrowPos.add(radius), arrowPos.sub(radius), point -> { + Point location = point.add(projectile.getVelocity().mul(0.04)).withY(this.totalElevation); + if(!this.getBlock(location).isAir()) { + this.setBlock(location, Block.AIR); - Entity fallingTnt = new Entity(EntityType.TNT); - PrimedTntMeta fallingTntMeta = (PrimedTntMeta) fallingTnt.getEntityMeta(); - fallingTntMeta.setFuseTime(20); - fallingTnt.setInstance(this, location); - fallingTnt.setVelocity(new Vec(0, 3, 0)); - } - }); + Entity fallingTnt = new Entity(EntityType.TNT); + PrimedTntMeta fallingTntMeta = (PrimedTntMeta) fallingTnt.getEntityMeta(); + fallingTntMeta.setFuseTime(20); + fallingTnt.setInstance(this, location); + fallingTnt.setVelocity(new Vec(0, 3, 0)); + } + }); - projectile.setTag(ARROW_FIRST_HIT, false); - }) - .build() + projectile.setTag(ARROW_FIRST_HIT, false); + }) + .build() ); - eventNode().addListener( - EventListener - .builder(ProjectileCollideWithEntityEvent.class) - .handler(projectileEntityHitEvent -> projectileEntityHitEvent.setCancelled(true)) - .build() + this.eventNode().addListener( + EventListener + .builder(ProjectileCollideWithEntityEvent.class) + .handler(projectileEntityHitEvent -> projectileEntityHitEvent.setCancelled(true)) + .build() ); } @@ -109,11 +112,11 @@ public class BowSpleef extends StatelessGame { @Override protected void onLoad(@NotNull CompletableFuture callback) { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for(int x = -radius; x <= radius; x++) { - for(int z = -radius; z <= radius; z++) { - if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > radius) continue; + for(int x = -this.radius; x <= this.radius; x++) { + for(int z = -this.radius; z <= this.radius; z++) { + if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > this.radius) continue; - batch.setBlock(x, totalElevation, z, Block.TNT); + batch.setBlock(x, this.totalElevation, z, Block.TNT); } } BatchUtil.loadAndApplyBatch(batch, this, () -> callback.complete(null)); @@ -121,28 +124,28 @@ public class BowSpleef extends StatelessGame { @Override protected void onStart() { - getPlayers().forEach(player -> { + this.getPlayers().forEach(player -> { player.getInventory().setItemStack( - 0, - ItemStack - .builder(Material.BOW) - .customName(TranslatedComponent.byId("bow").getAssembled(player)) - .glowing(true) - .build() + 0, + ItemStack + .builder(Material.BOW) + .customName(TranslatedComponent.byId("bow").getAssembled(player)) + .glowing(true) + .build() ); }); } @Override protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { - if(playerMoveEvent.getNewPosition().y() < totalElevation) { - getScore().insertResult(playerMoveEvent.getPlayer()); + if(playerMoveEvent.getNewPosition().y() < this.totalElevation) { + this.getScore().insertResult(playerMoveEvent.getPlayer()); playerMoveEvent.getPlayer().setGameMode(GameMode.SPECTATOR); } } @Override public Pos getSpawn() { - return new Pos(0, totalElevation + 1, 0); + return new Pos(0, this.totalElevation + 1, 0); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bowSpleef/BowSpleefFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bowSpleef/BowSpleefFactory.java index 0694ce2..97d2acb 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bowSpleef/BowSpleefFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/bowSpleef/BowSpleefFactory.java @@ -35,6 +35,6 @@ public class BowSpleefFactory implements GameFactory { @Override public RestrictionHandler globalRestrictions() { return new RestrictionHandler() - .addRestriction(new MinimalPlayeramountGameRestriction(2)); + .addRestriction(new MinimalPlayeramountGameRestriction(2)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java index 7eff456..16c6acd 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java @@ -1,9 +1,9 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.deathcube; +import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.score.FirstWinsScore; import eu.mhsl.minenet.minigames.util.BatchUtil; -import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.world.BlockPallet; import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator; import io.github.togar2.pvp.feature.CombatFeatures; @@ -26,9 +26,9 @@ class Deathcube extends StatelessGame { this.radius = radius; this.height = height + 49; this.percentage = percentage; - this.setGenerator(new CircularPlateTerrainGenerator(radius+10).setPlateHeight(50)); + this.setGenerator(new CircularPlateTerrainGenerator(radius + 10).setPlateHeight(50)); - if(pvpEnabled == 1) eventNode().addChild( + if(pvpEnabled == 1) this.eventNode().addChild( CombatFeatures.empty() .add(CombatFeatures.VANILLA_ATTACK) .add(CombatFeatures.VANILLA_DAMAGE) @@ -42,12 +42,12 @@ class Deathcube extends StatelessGame { protected void onLoad(@NotNull CompletableFuture callback) { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for(int x = -radius; x <= radius; x++) { - for (int z = -radius; z <= radius; z++) { - if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > radius) continue; + for(int x = -this.radius; x <= this.radius; x++) { + for(int z = -this.radius; z <= this.radius; z++) { + if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > this.radius) continue; - for (int y = 49; y < height; y++) { - if(super.rnd.nextInt(1, 100) <= percentage) { + for(int y = 49; y < this.height; y++) { + if(super.rnd.nextInt(1, 100) <= this.percentage) { batch.setBlock(x, y, z, BlockPallet.WOOD.rnd()); } } @@ -62,20 +62,20 @@ class Deathcube extends StatelessGame { super.onPlayerMove(playerMoveEvent); if(playerMoveEvent.getNewPosition().y() < 48) { playerMoveEvent.setCancelled(true); - playerMoveEvent.getPlayer().teleport(getSpawn()); + playerMoveEvent.getPlayer().teleport(this.getSpawn()); return; } - if(isBeforeBeginning && playerMoveEvent.getNewPosition().y() > 51.5) { + if(this.isBeforeBeginning && playerMoveEvent.getNewPosition().y() > 51.5) { playerMoveEvent.setCancelled(true); return; } - if(playerMoveEvent.getNewPosition().y() <= height) return; - getScore().insertResult(playerMoveEvent.getPlayer()); + if(playerMoveEvent.getNewPosition().y() <= this.height) return; + this.getScore().insertResult(playerMoveEvent.getPlayer()); playerMoveEvent.getPlayer().setGameMode(GameMode.SPECTATOR); } @Override public Pos getSpawn() { - return new Pos(0, 50, -(radius+5)); + return new Pos(0, 50, -(this.radius + 5)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/DeathcubeFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/DeathcubeFactory.java index eda3151..52134eb 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/DeathcubeFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/DeathcubeFactory.java @@ -1,9 +1,9 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.deathcube; import eu.mhsl.minenet.minigames.instance.game.Game; +import eu.mhsl.minenet.minigames.instance.game.stateless.config.ConfigManager; import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.config.Option; -import eu.mhsl.minenet.minigames.instance.game.stateless.config.ConfigManager; import eu.mhsl.minenet.minigames.instance.game.stateless.config.common.NumericOption; import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.message.component.TranslatedComponent; @@ -25,10 +25,10 @@ public class DeathcubeFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 10, 20, 30)) - .addOption(new NumericOption("height", Material.SCAFFOLDING, TranslatedComponent.byId("optionCommon#height"), 10, 30, 50)) - .addOption(new NumericOption("percentage", Material.COBWEB, TranslatedComponent.byId("game_Deathcube#optionPercentageBlocks"), 5, 7, 9, 11, 13)) - .addOption(new NumericOption("pvpEnabled", Material.STICK, TranslatedComponent.byId("game_Deathcube#optionPvpEnabled"), 0, 1)); + .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 10, 20, 30)) + .addOption(new NumericOption("height", Material.SCAFFOLDING, TranslatedComponent.byId("optionCommon#height"), 10, 30, 50)) + .addOption(new NumericOption("percentage", Material.COBWEB, TranslatedComponent.byId("game_Deathcube#optionPercentageBlocks"), 5, 7, 9, 11, 13)) + .addOption(new NumericOption("pvpEnabled", Material.STICK, TranslatedComponent.byId("game_Deathcube#optionPvpEnabled"), 0, 1)); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/elytraRace/ElytraRace.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/elytraRace/ElytraRace.java index c36725a..2bad52a 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/elytraRace/ElytraRace.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/elytraRace/ElytraRace.java @@ -69,12 +69,12 @@ public class ElytraRace extends StatelessGame { Player player = playerUseItemEvent.getPlayer(); Material usedMaterial = playerUseItemEvent.getItemStack().material(); - if (usedMaterial.equals(this.boostMaterial)) { - if (!player.isFlyingWithElytra()) return; + if(usedMaterial.equals(this.boostMaterial)) { + if(!player.isFlyingWithElytra()) return; this.boost(player); InventoryUtil.removeItemFromPlayer(player, this.boostMaterial, 1); - } else if (usedMaterial.equals(this.resetMaterial)) { + } else if(usedMaterial.equals(this.resetMaterial)) { this.toCheckpoint(player); InventoryUtil.removeItemFromPlayer(player, this.resetMaterial, 1); } @@ -82,7 +82,7 @@ public class ElytraRace extends StatelessGame { this.eventNode().addListener(PlayerStopFlyingWithElytraEvent.class, playerStopFlyingWithElytraEvent -> { Player player = playerStopFlyingWithElytraEvent.getPlayer(); - if (Position.blocksBelowPlayer(this, player).contains(this.ringMaterial.block())) { + if(Position.blocksBelowPlayer(this, player).contains(this.ringMaterial.block())) { player.setFlyingWithElytra(true); this.boost(player); } else { @@ -93,7 +93,7 @@ public class ElytraRace extends StatelessGame { }); this.eventNode().addListener(PlayerStartFlyingWithElytraEvent.class, playerStartFlyingWithElytraEvent -> { - if (!this.isRunning) { + if(!this.isRunning) { playerStartFlyingWithElytraEvent.getPlayer().setFlyingWithElytra(false); return; } @@ -116,7 +116,7 @@ public class ElytraRace extends StatelessGame { protected void onStart() { this.getPlayers().forEach(player -> { player.getInventory().setEquipment(EquipmentSlot.CHESTPLATE, (byte) 0, ItemStack.of(Material.ELYTRA)); - for (int i = 0; i < 3; i++) { + for(int i = 0; i < 3; i++) { player.getInventory().setItemStack(i, ItemStack.builder(this.boostMaterial).customName(TranslatedComponent.byId("boost").getAssembled(player)).build()); } this.addResetItemToPlayer(player); @@ -128,23 +128,23 @@ public class ElytraRace extends StatelessGame { Player player = playerMoveEvent.getPlayer(); Point newPos = playerMoveEvent.getNewPosition(); - if (this.isBeforeBeginning && playerMoveEvent.getNewPosition().y() < this.getSpawn().y()) { + if(this.isBeforeBeginning && playerMoveEvent.getNewPosition().y() < this.getSpawn().y()) { player.teleport(this.getSpawn()); return; } this.playerCheckpoints.putIfAbsent(player, new CheckPointData(this.ringSpacing, this.ringSpacing * 2)); - if (newPos.z() > this.generatedUntil - this.ringSpacing) { + if(newPos.z() > this.generatedUntil - this.ringSpacing) { this.generateRing(this.generatedUntil + this.ringSpacing); } - if (newPos.z() > this.playerCheckpoints.get(player).nextCheckpoint) { + if(newPos.z() > this.playerCheckpoints.get(player).nextCheckpoint) { this.playerCheckpoints.put(player, this.playerCheckpoints.get(player).next(this.ringSpacing)); this.boost(player); } - if (newPos.y() > this.gameHeight - 5) { + if(newPos.y() > this.gameHeight - 5) { Point particlePoint = newPos.withY(this.gameHeight); ParticlePacket particle = new ParticlePacket( Particle.WAX_ON, @@ -160,11 +160,11 @@ public class ElytraRace extends StatelessGame { player.sendPacket(particle); } - if (this.getBlock(player.getPosition()).equals(Block.WATER)) { + if(this.getBlock(player.getPosition()).equals(Block.WATER)) { this.toCheckpoint(player); } - if (newPos.z() > this.ringCount * this.ringSpacing) { + if(newPos.z() > this.ringCount * this.ringSpacing) { this.getScore().insertResult(player); player.setGameMode(GameMode.SPECTATOR); player.setFlyingWithElytra(false); @@ -185,8 +185,8 @@ public class ElytraRace extends StatelessGame { return new Pos(this.vale.getXShiftAtZ(z), -45 + random.nextInt(-5, 15), z); } - private CompletableFuture generateRing(int zPos) { - if (zPos > this.ringCount * this.ringSpacing) return null; + private void generateRing(int zPos) { + if(zPos > this.ringCount * this.ringSpacing) return; boolean isLast = (zPos == this.ringCount * this.ringSpacing); this.generatedUntil = zPos; @@ -211,7 +211,6 @@ public class ElytraRace extends StatelessGame { BatchUtil.loadAndApplyBatch(batch, this, () -> { }); - return null; } private void boost(Player player) { @@ -233,7 +232,7 @@ public class ElytraRace extends StatelessGame { p.setFlying(true); p.setFlyingSpeed(0); - new Countdown(TitleMessage.class) + new Countdown() .countdown( Audience.audience(p), 3, diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/elytraRace/ElytraRaceFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/elytraRace/ElytraRaceFactory.java index 2a61818..9aa7525 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/elytraRace/ElytraRaceFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/elytraRace/ElytraRaceFactory.java @@ -30,7 +30,7 @@ public class ElytraRaceFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("ringCount", Material.DIAMOND_BLOCK, TranslatedComponent.byId("game_ElytraRace#ringCount"), 5, 10, 20, 30, 40, 50)); + .addOption(new NumericOption("ringCount", Material.DIAMOND_BLOCK, TranslatedComponent.byId("game_ElytraRace#ringCount"), 5, 10, 20, 30, 40, 50)); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/fastbridge/Fastbridge.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/fastbridge/Fastbridge.java index 2640a6a..6ca3950 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/fastbridge/Fastbridge.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/fastbridge/Fastbridge.java @@ -28,8 +28,8 @@ public class Fastbridge extends StatelessGame { Pos newPos = playerMoveEvent.getNewPosition(); if(this.getScore().hasResult(player)) return; if(newPos.y() < 0) { - player.teleport(getSpawn()); - if(!isBeforeBeginning) this.resetPlayer(player); + player.teleport(this.getSpawn()); + if(!this.isBeforeBeginning) this.resetPlayer(player); } if(newPos.x() > 53) { this.getScore().insertResult(player); @@ -39,19 +39,19 @@ public class Fastbridge extends StatelessGame { @Override protected void onStart() { - getPlayers().forEach(player -> { + this.getPlayers().forEach(player -> { player.setGameMode(GameMode.SURVIVAL); - resetPlayer(player); + this.resetPlayer(player); }); } @Override protected void onBlockPlace(@NotNull PlayerBlockPlaceEvent playerBlockPlaceEvent) { - if(isBeforeBeginning) playerBlockPlaceEvent.setCancelled(true); + if(this.isBeforeBeginning) playerBlockPlaceEvent.setCancelled(true); } private void resetPlayer(Player player) { - if(isBeforeBeginning) return; + if(this.isBeforeBeginning) return; PlayerInventory inventory = player.getInventory(); inventory.clear(); inventory.addItemStack(ItemStack.of(Material.WHITE_WOOL, 64)); @@ -59,6 +59,6 @@ public class Fastbridge extends StatelessGame { @Override public synchronized Pos getSpawn() { - return new Pos(24, 1, currentSpawn++*Chunk.CHUNK_SIZE_Z*2-8, -90, 0); + return new Pos(24, 1, this.currentSpawn++ * Chunk.CHUNK_SIZE_Z * 2 - 8, -90, 0); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/fastbridge/FastbridgeChunkgenerator.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/fastbridge/FastbridgeChunkgenerator.java index 35fd27b..b0a05b7 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/fastbridge/FastbridgeChunkgenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/fastbridge/FastbridgeChunkgenerator.java @@ -7,14 +7,14 @@ import net.minestom.server.instance.block.Block; public class FastbridgeChunkgenerator extends BaseGenerator { public FastbridgeChunkgenerator() { this.addMixIn(unit -> { - if (unit.absoluteStart().chunkZ() % 2 == 0) { + if(unit.absoluteStart().chunkZ() % 2 == 0) { unit.modifier().fill(Block.BARRIER); return; } - if (unit.absoluteStart().chunkX() != 1 && unit.absoluteStart().chunkX() != 3) return; - for (int x = 5; x <= 10; x++){ - for (int z = 5; z <= 10; z++){ + if(unit.absoluteStart().chunkX() != 1 && unit.absoluteStart().chunkX() != 3) return; + for(int x = 5; x <= 10; x++) { + for(int z = 5; z <= 10; z++) { unit.modifier().setRelative(x, 64, z, unit.absoluteStart().chunkX() == 3 ? Block.GOLD_BLOCK : Block.GRASS_BLOCK); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/highGround/HighGround.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/highGround/HighGround.java index ed0e92b..319a936 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/highGround/HighGround.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/highGround/HighGround.java @@ -43,7 +43,7 @@ class HighGround extends StatelessGame { ); this.eventNode().addListener(PrepareAttackEvent.class, prepareAttackEvent -> { - if(this.isBeforeBeginning){ + if(this.isBeforeBeginning) { prepareAttackEvent.setCancelled(true); } }); @@ -53,10 +53,10 @@ class HighGround extends StatelessGame { entityKnockbackEvent -> entityKnockbackEvent.setStrength(1.1f) ); - this.eventNode().addListener(InstanceTickEvent.class, instanceTickEvent -> { - if (this.isBeforeBeginning || !this.isRunning) return; + this.eventNode().addListener(InstanceTickEvent.class, instanceTickEvent -> { + if(this.isBeforeBeginning || !this.isRunning) return; this.getPlayers().forEach(player -> { - if((player.isOnGround() && player.getPosition().y() >= 1) || (!player.isOnGround() && player.getPosition().y() >= 1.5)){ + if((player.isOnGround() && player.getPosition().y() >= 1) || (!player.isOnGround() && player.getPosition().y() >= 1.5)) { this.scoreMap.put(player, this.scoreMap.get(player) + 1); player.setLevel(this.scoreMap.get(player) / 20); player.setExp((this.scoreMap.get(player) % 20) / 20.0f); @@ -67,20 +67,20 @@ class HighGround extends StatelessGame { @Override protected void onLoad(@NotNull CompletableFuture callback) { - for (int y = 0; y >= -3; y--) { + for(int y = 0; y >= -3; y--) { int radius = (Math.abs(y) * 5) + this.radius; - for (int x = -radius; x <= radius; x++) { - for (int z = -radius; z <= radius; z++) { + for(int x = -radius; x <= radius; x++) { + for(int z = -radius; z <= radius; z++) { double distance = new Pos(x, 0, z).distance(0, 0, 0); - if (distance <= radius) { + if(distance <= radius) { this.setBlock(x, y, z, y == 0 ? Block.DIAMOND_BLOCK : Block.GRASS_BLOCK); Pos featurePosition = new Pos(x, y + 1, z); if(y >= 0 || this.getBlock(featurePosition).isSolid()) continue; - if (this.rnd.nextDouble() < 0.1){ + if(this.rnd.nextDouble() < 0.1) { this.setBlock(featurePosition, Block.SHORT_GRASS); } - if (this.rnd.nextDouble() < 0.01){ + if(this.rnd.nextDouble() < 0.01) { this.setBlock(featurePosition, BlockPallet.FLOWER.rnd()); } } @@ -92,7 +92,7 @@ class HighGround extends StatelessGame { @Override protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { Player player = playerMoveEvent.getPlayer(); - if(playerMoveEvent.getNewPosition().y() < -10){ + if(playerMoveEvent.getNewPosition().y() < -10) { player.teleport(this.getSpawn()); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/highGround/HighGroundFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/highGround/HighGroundFactory.java index 3c2a527..6c77cac 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/highGround/HighGroundFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/highGround/HighGroundFactory.java @@ -32,8 +32,8 @@ public class HighGroundFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 3, 5, 7, 10)) - .addOption(new NumericOption("seconds", Material.CLOCK, TranslatedComponent.byId("optionCommon#seconds"), 30, 60, 90, 120)); + .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 3, 5, 7, 10)) + .addOption(new NumericOption("seconds", Material.CLOCK, TranslatedComponent.byId("optionCommon#seconds"), 30, 60, 90, 120)); } @Override @@ -44,6 +44,6 @@ public class HighGroundFactory implements GameFactory { @Override public RestrictionHandler globalRestrictions() { return new RestrictionHandler() - .addRestriction(new MinimalPlayeramountGameRestriction(2)); + .addRestriction(new MinimalPlayeramountGameRestriction(2)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/jumpDive/JumpDive.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/jumpDive/JumpDive.java index dd4cf4e..f1bd09b 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/jumpDive/JumpDive.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/jumpDive/JumpDive.java @@ -35,10 +35,10 @@ public class JumpDive extends StatelessGame { protected void onLoad(@NotNull CompletableFuture callback) { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for(int x = -radius*2; x <= radius*2; x++) { - for(int z = -radius*2; z <= radius*2; z++) { - if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > radius) { - batch.setBlock(x, height, z, BlockPallet.STONE.rnd()); + for(int x = -this.radius * 2; x <= this.radius * 2; x++) { + for(int z = -this.radius * 2; z <= this.radius * 2; z++) { + if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > this.radius) { + batch.setBlock(x, this.height, z, BlockPallet.STONE.rnd()); } else { batch.setBlock(x, 0, z, BlockPallet.GROUND.rnd()); batch.setBlock(x, 1, z, Block.WATER); @@ -51,7 +51,7 @@ public class JumpDive extends StatelessGame { @Override protected void onStart() { - setTimeLimit(timeLimit); + this.setTimeLimit(this.timeLimit); } @Override @@ -59,22 +59,22 @@ public class JumpDive extends StatelessGame { Player p = playerMoveEvent.getPlayer(); if( - p.isOnGround() && playerMoveEvent.getNewPosition().y() < height - || playerMoveEvent.getNewPosition().y() < 0 - || isBeforeBeginning && playerMoveEvent.getNewPosition().y() < height + p.isOnGround() && playerMoveEvent.getNewPosition().y() < this.height + || playerMoveEvent.getNewPosition().y() < 0 + || this.isBeforeBeginning && playerMoveEvent.getNewPosition().y() < this.height ) { - p.teleport(getSpawn()); + p.teleport(this.getSpawn()); playerMoveEvent.setCancelled(true); } if( playerMoveEvent.getNewPosition().y() <= 1 - && playerMoveEvent.getNewPosition().distance(0, 1, 0) < radius + 0.5 - && !(!isBeforeBeginning && !isRunning) + && playerMoveEvent.getNewPosition().distance(0, 1, 0) < this.radius + 0.5 + && !(!this.isBeforeBeginning && !this.isRunning) ) { - setBlock(playerMoveEvent.getNewPosition().withY(1), Block.REDSTONE_BLOCK); - scores.merge(p, 1, Integer::sum); - p.teleport(getSpawn()); + this.setBlock(playerMoveEvent.getNewPosition().withY(1), Block.REDSTONE_BLOCK); + this.scores.merge(p, 1, Integer::sum); + p.teleport(this.getSpawn()); playerMoveEvent.setCancelled(true); p.playSound(Sound.sound(SoundEvent.ENTITY_EXPERIENCE_ORB_PICKUP, Sound.Source.PLAYER, 2f, 2f)); } @@ -82,18 +82,18 @@ public class JumpDive extends StatelessGame { @Override protected void onStop() { - getPlayers().forEach(player -> getScore().insertResult(player, scores.getOrDefault(player, 0))); + this.getPlayers().forEach(player -> this.getScore().insertResult(player, this.scores.getOrDefault(player, 0))); } @Override public Pos getSpawn() { - double theta = rnd.nextDouble() * 2 * Math.PI; + double theta = this.rnd.nextDouble() * 2 * Math.PI; - double spawnRadius = radius + 2; + double spawnRadius = this.radius + 2; double x = spawnRadius * Math.cos(theta); double z = spawnRadius * Math.sin(theta); - return new Pos(x, height + 2, z).withLookAt(new Pos(0, height, 0)); + return new Pos(x, this.height + 2, z).withLookAt(new Pos(0, this.height, 0)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/minerun/Minerun.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/minerun/Minerun.java index 79255b0..1dad159 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/minerun/Minerun.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/minerun/Minerun.java @@ -1,11 +1,11 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.minerun; +import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.score.FirstWinsScore; import eu.mhsl.minenet.minigames.util.BatchUtil; import eu.mhsl.minenet.minigames.util.CommonProperties; import eu.mhsl.minenet.minigames.util.Intersect; -import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.world.BlockPallet; import eu.mhsl.minenet.minigames.world.generator.terrain.SquarePlateTerrainGenerator; import net.kyori.adventure.sound.Sound; @@ -18,7 +18,7 @@ import net.minestom.server.instance.block.Block; import net.minestom.server.sound.SoundEvent; import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.Random; import java.util.concurrent.CompletableFuture; class Minerun extends StatelessGame { @@ -33,7 +33,7 @@ class Minerun extends StatelessGame { public Minerun(int width, int length, int minePercentage) { super(Dimension.THE_END.key, "Minerun", new FirstWinsScore()); - setGenerator(new SquarePlateTerrainGenerator(width, length + preRun + afterFinishLine).setPlateHeight(50).setGenerateBorders(true)); + this.setGenerator(new SquarePlateTerrainGenerator(width, length + this.preRun + this.afterFinishLine).setPlateHeight(50).setGenerateBorders(true)); this.width = width; this.length = length; @@ -42,24 +42,24 @@ class Minerun extends StatelessGame { @Override protected void onLoad(@NotNull CompletableFuture callback) { - int spawnToFinishLine = preRun + length + afterMines; + int spawnToFinishLine = this.preRun + this.length + this.afterMines; Random random = new Random(); AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for(int x = 0; x <= width; x++) { - for(int z = preRun; z <= length + preRun; z++) { + for(int x = 0; x <= this.width; x++) { + for(int z = this.preRun; z <= this.length + this.preRun; z++) { - if (random.nextInt(0, 100) < minePercentage) { + if(random.nextInt(0, 100) < this.minePercentage) { batch.setBlock(x, 50, z, BlockPallet.PRESSURE_PLATES.rnd()); } } } - for(int x = 0; x <= width; x++) { + for(int x = 0; x <= this.width; x++) { batch.setBlock(x, 49, spawnToFinishLine, Block.GOLD_BLOCK); - batch.setBlock(x, 49, preRun, Block.GOLD_BLOCK); - batch.setBlock(x, 50, preRun, Block.OAK_FENCE.withProperties(CommonProperties.fenceEastWest)); + batch.setBlock(x, 49, this.preRun, Block.GOLD_BLOCK); + batch.setBlock(x, 50, this.preRun, Block.OAK_FENCE.withProperties(CommonProperties.fenceEastWest)); } BatchUtil.loadAndApplyBatch(batch, this, () -> callback.complete(null)); } @@ -67,11 +67,11 @@ class Minerun extends StatelessGame { @Override protected void onStart() { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for(int x = 0; x <= width; x++) { - batch.setBlock(x, 50, preRun, Block.AIR); + for(int x = 0; x <= this.width; x++) { + batch.setBlock(x, 50, this.preRun, Block.AIR); } - BatchUtil.loadAndApplyBatch(batch, this, () -> playSound(Sound.sound(SoundEvent.BLOCK_WOOD_BREAK, Sound.Source.BLOCK, 1f, 1f))); + BatchUtil.loadAndApplyBatch(batch, this, () -> this.playSound(Sound.sound(SoundEvent.BLOCK_WOOD_BREAK, Sound.Source.BLOCK, 1f, 1f))); } @Override @@ -80,23 +80,23 @@ class Minerun extends StatelessGame { Player p = playerMoveEvent.getPlayer(); Pos middle = playerMoveEvent.getNewPosition(); - if(isBeforeBeginning && middle.z() > preRun+0.5) { //player cannot go forward before the game start + if(this.isBeforeBeginning && middle.z() > this.preRun + 0.5) { //player cannot go forward before the game start playerMoveEvent.setCancelled(true); } if(Intersect.withPressurePlate(this, BlockPallet.PRESSURE_PLATES, middle)) { //Player died p.playSound(Sound.sound(SoundEvent.ENTITY_GENERIC_EXPLODE, Sound.Source.PLAYER, 1f, 1f)); - p.teleport(new Pos(p.getPosition().x(), getSpawn().y(), getSpawn().z())); + p.teleport(new Pos(p.getPosition().x(), this.getSpawn().y(), this.getSpawn().z())); } - if(middle.z() > preRun + length + afterMines) { // Player finished - getScore().insertResult(p); + if(middle.z() > this.preRun + this.length + this.afterMines) { // Player finished + this.getScore().insertResult(p); p.setGameMode(GameMode.SPECTATOR); } } @Override public Pos getSpawn() { - return new Pos((double) width /2, 50, 3); + return new Pos((double) this.width / 2, 50, 3); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/minerun/MinerunFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/minerun/MinerunFactory.java index ef534f5..43ebdca 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/minerun/MinerunFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/minerun/MinerunFactory.java @@ -20,9 +20,9 @@ public class MinerunFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("width", Material.OAK_FENCE, TranslatedComponent.byId("optionCommon#width"), 10, 30, 50, 100)) - .addOption(new NumericOption("length", Material.ZOMBIE_HEAD, TranslatedComponent.byId("optionCommon#length"), 50, 100, 150, 200)) - .addOption(new NumericOption("percentage", Material.LIGHT_WEIGHTED_PRESSURE_PLATE, TranslatedComponent.byId("game_Minerun#optionPercentageMines"), 30, 40, 50, 60, 70)); + .addOption(new NumericOption("width", Material.OAK_FENCE, TranslatedComponent.byId("optionCommon#width"), 10, 30, 50, 100)) + .addOption(new NumericOption("length", Material.ZOMBIE_HEAD, TranslatedComponent.byId("optionCommon#length"), 50, 100, 150, 200)) + .addOption(new NumericOption("percentage", Material.LIGHT_WEIGHTED_PRESSURE_PLATE, TranslatedComponent.byId("game_Minerun#optionPercentageMines"), 30, 40, 50, 60, 70)); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spaceSnake/SpaceSnake.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spaceSnake/SpaceSnake.java index 6e2ab4e..5737e00 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spaceSnake/SpaceSnake.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spaceSnake/SpaceSnake.java @@ -10,7 +10,10 @@ import io.github.togar2.pvp.feature.CombatFeatures; import net.kyori.adventure.sound.Sound; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; -import net.minestom.server.entity.*; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.GameMode; +import net.minestom.server.entity.Player; import net.minestom.server.entity.metadata.other.FallingBlockMeta; import net.minestom.server.event.entity.EntityTickEvent; import net.minestom.server.event.player.PlayerBlockPlaceEvent; @@ -29,25 +32,17 @@ import java.util.function.Consumer; import java.util.function.Supplier; public class SpaceSnake extends StatelessGame { - record PlayState(AtomicInteger length, Queue blocks, Material blockType, Pos spawn) { - public void cutToLength(Consumer removed) { - while (this.blocks.size() > this.length.get()) { - removed.accept(this.blocks.poll()); - } - } - } - private final Map playerStates = new WeakHashMap<>(); - private int mapSize; - private final Supplier posInBoundsW = () -> this.rnd.nextInt(-this.mapSize/2, this.mapSize/2); private final Supplier posInBoundsH = () -> this.rnd.nextInt(-60, 300); + private int mapSize; + private final Supplier posInBoundsW = () -> this.rnd.nextInt(-this.mapSize / 2, this.mapSize / 2); public SpaceSnake(int mapSize, int powerUpCount) { super(Dimension.THE_END.key, "spaceSnake", new PointsWinScore()); this.mapSize = mapSize; this.setWorldBorder(new WorldBorder(this.mapSize, 0, 0, 0, 0)); - for (int i = 0; i < powerUpCount; i++) { + for(int i = 0; i < powerUpCount; i++) { this.spawnPowerUp(); } @@ -61,7 +56,7 @@ public class SpaceSnake extends StatelessGame { ); this.eventNode().addListener(PrepareAttackEvent.class, prepareAttackEvent -> { - if (this.isBeforeBeginning) prepareAttackEvent.setCancelled(true); + if(this.isBeforeBeginning) prepareAttackEvent.setCancelled(true); }); this.eventNode().addListener(FinalAttackEvent.class, finalAttackEvent -> { @@ -179,4 +174,12 @@ public class SpaceSnake extends StatelessGame { player.setLevel(player.getLevel() + 1); player.playSound(Sound.sound(SoundEvent.ENTITY_EXPERIENCE_ORB_PICKUP, Sound.Source.PLAYER, 1f, 1f)); } + + record PlayState(AtomicInteger length, Queue blocks, Material blockType, Pos spawn) { + public void cutToLength(Consumer removed) { + while(this.blocks.size() > this.length.get()) { + removed.accept(this.blocks.poll()); + } + } + } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spleef/Spleef.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spleef/Spleef.java index 093661d..e2caf54 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spleef/Spleef.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spleef/Spleef.java @@ -14,40 +14,40 @@ import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerStartDiggingEvent; import net.minestom.server.instance.batch.AbsoluteBlockBatch; import net.minestom.server.instance.block.Block; -import net.minestom.server.item.*; +import net.minestom.server.item.ItemStack; +import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; import java.util.concurrent.CompletableFuture; public class Spleef extends StatelessGame { + final int heightPerLevel = 20; + final int totalElevation = 50; int radius; int stackCount; - final int heightPerLevel = 20; - final int totalElevation = 50; - public Spleef(int radius, int stackCount) { super(Dimension.OVERWORLD.key, "Spleef", new LastWinsScore()); - getScore().setIgnoreLastPlayers(1); + this.getScore().setIgnoreLastPlayers(1); this.radius = radius; this.stackCount = stackCount; - setGenerator(new CircularPlateTerrainGenerator(50)); + this.setGenerator(new CircularPlateTerrainGenerator(50)); - eventNode().addListener(PlayerStartDiggingEvent.class, this::destroyBlock); + this.eventNode().addListener(PlayerStartDiggingEvent.class, this::destroyBlock); } @Override protected void onLoad(@NotNull CompletableFuture callback) { AbsoluteBlockBatch circle = new AbsoluteBlockBatch(); - for (int level = 0; level < stackCount; level++) { - for(int x = -radius; x <= radius; x++) { - for(int z = -radius; z <= radius; z++) { - if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > radius) continue; + for(int level = 0; level < this.stackCount; level++) { + for(int x = -this.radius; x <= this.radius; x++) { + for(int z = -this.radius; z <= this.radius; z++) { + if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > this.radius) continue; - circle.setBlock(x, totalElevation + (level * heightPerLevel), z, BlockPallet.WINTER.rnd()); + circle.setBlock(x, this.totalElevation + (level * this.heightPerLevel), z, BlockPallet.WINTER.rnd()); } } } @@ -57,13 +57,13 @@ public class Spleef extends StatelessGame { @Override protected void onStart() { - getPlayers().forEach(player -> { + this.getPlayers().forEach(player -> { player.setGameMode(GameMode.SURVIVAL); player.getInventory().addItemStack( - ItemStack - .builder(Material.DIAMOND_SHOVEL) - .customName(TranslatedComponent.byId("game_Spleef#shovelName").getAssembled(player)) - .build() + ItemStack + .builder(Material.DIAMOND_SHOVEL) + .customName(TranslatedComponent.byId("game_Spleef#shovelName").getAssembled(player)) + .build() ); player.setHeldItemSlot((byte) 0); }); @@ -71,29 +71,29 @@ public class Spleef extends StatelessGame { @Override protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { - if(playerMoveEvent.getNewPosition().y() < totalElevation) { + if(playerMoveEvent.getNewPosition().y() < this.totalElevation) { playerMoveEvent.getPlayer().setGameMode(GameMode.SPECTATOR); playerMoveEvent.getPlayer().getInventory().clear(); - getScore().insertResult(playerMoveEvent.getPlayer()); + this.getScore().insertResult(playerMoveEvent.getPlayer()); } } @Override protected void onBlockBreak(@NotNull PlayerBlockBreakEvent event) { - if(!isRunning) { + if(!this.isRunning) { event.setCancelled(true); return; } - setBlock(event.getBlockPosition(), Block.AIR); + this.setBlock(event.getBlockPosition(), Block.AIR); } private void destroyBlock(PlayerStartDiggingEvent event) { - if(!isRunning) return; - setBlock(event.getBlockPosition(), Block.AIR); + if(!this.isRunning) return; + this.setBlock(event.getBlockPosition(), Block.AIR); } @Override public Pos getSpawn() { - return new Pos(0, totalElevation + heightPerLevel * (stackCount-1) + 1, 0); + return new Pos(0, this.totalElevation + this.heightPerLevel * (this.stackCount - 1) + 1, 0); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spleef/SpleefFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spleef/SpleefFactory.java index 9d8a328..1fb459f 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spleef/SpleefFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/spleef/SpleefFactory.java @@ -22,7 +22,7 @@ public class SpleefFactory implements GameFactory { @Override public RestrictionHandler globalRestrictions() { return new RestrictionHandler() - .addRestriction(new MinimalPlayeramountGameRestriction(2)); + .addRestriction(new MinimalPlayeramountGameRestriction(2)); } @Override @@ -33,8 +33,8 @@ public class SpleefFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 10, 20, 30)) - .addOption(new NumericOption("stackCount", Material.SCAFFOLDING, TranslatedComponent.byId("game_Spleef#stackCount"), 1, 2, 3, 4, 5)); + .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 10, 20, 30)) + .addOption(new NumericOption("stackCount", Material.SCAFFOLDING, TranslatedComponent.byId("game_Spleef#stackCount"), 1, 2, 3, 4, 5)); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/stickfight/StickFightFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/stickfight/StickFightFactory.java index 5fc1b12..c27bda9 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/stickfight/StickFightFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/stickfight/StickFightFactory.java @@ -28,14 +28,14 @@ public class StickFightFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("length", Material.SANDSTONE, TranslatedComponent.byId("optionCommon#length"), 7, 10, 13, 16, 19)); + .addOption(new NumericOption("length", Material.SANDSTONE, TranslatedComponent.byId("optionCommon#length"), 7, 10, 13, 16, 19)); } @Override public RestrictionHandler globalRestrictions() { return new RestrictionHandler() - .addRestriction(new MinimalPlayeramountGameRestriction(2)) - .addRestriction(new MaximalPlayeramountGameRestriction(4)); + .addRestriction(new MinimalPlayeramountGameRestriction(2)) + .addRestriction(new MaximalPlayeramountGameRestriction(4)); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/stickfight/Stickfight.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/stickfight/Stickfight.java index 5afb4c6..25d9e55 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/stickfight/Stickfight.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/stickfight/Stickfight.java @@ -27,7 +27,7 @@ public class Stickfight extends StatelessGame { super(Dimension.OVERWORLD.key, "Stickfight", new LowestPointsWinScore()); this.radius = length; - eventNode().addChild( + this.eventNode().addChild( CombatFeatures.empty() .add(CombatFeatures.VANILLA_ATTACK) .add(CombatFeatures.VANILLA_DAMAGE) @@ -35,13 +35,13 @@ public class Stickfight extends StatelessGame { .build().createNode() ); - eventNode().addListener(FinalAttackEvent.class, finalAttackEvent -> { - if(isBeforeBeginning) finalAttackEvent.setCancelled(true); + this.eventNode().addListener(FinalAttackEvent.class, finalAttackEvent -> { + if(this.isBeforeBeginning) finalAttackEvent.setCancelled(true); finalAttackEvent.setBaseDamage(0); ((Player) finalAttackEvent.getTarget()).setHealth(20); }); - setGenerator(new CircularPlateTerrainGenerator(20)); + this.setGenerator(new CircularPlateTerrainGenerator(20)); } @Override @@ -51,8 +51,8 @@ public class Stickfight extends StatelessGame { private void replaceCircle(Block block) { int radius = 8; - for (int x = -radius; x <= radius; x++) { - for (int z = -radius; z <= radius; z++) { + for(int x = -radius; x <= radius; x++) { + for(int z = -radius; z <= radius; z++) { Pos blockPosition = this.getSpawn().add(x, -1, z); if(blockPosition.distance(this.getSpawn().sub(0, 1, 0)) <= radius) this.setBlock(blockPosition, block); } @@ -61,60 +61,60 @@ public class Stickfight extends StatelessGame { @Override protected void start() { - List players = getPlayers().stream().toList(); + List players = this.getPlayers().stream().toList(); int numPlayers = players.size(); this.countdownStarted = true; this.replaceCircle(Block.AIR); - for (int i = 0; i < numPlayers; i++) { + for(int i = 0; i < numPlayers; i++) { double angle = (2 * Math.PI / numPlayers) * i; - int spawnX = (int) (radius * Math.cos(angle)); - int spawnZ = (int) (radius * Math.sin(angle)); + int spawnX = (int) (this.radius * Math.cos(angle)); + int spawnZ = (int) (this.radius * Math.sin(angle)); int spawnY = 50; Pos spawnpoint = new Pos(spawnX, spawnY + 1, spawnZ).add(0.5); - spawnPoints.put(players.get(i), spawnpoint.withLookAt(getSpawn())); + this.spawnPoints.put(players.get(i), spawnpoint.withLookAt(this.getSpawn())); players.get(i).teleport(spawnpoint); - generateBridge(spawnX, spawnY, spawnZ); + this.generateBridge(spawnX, spawnY, spawnZ); } - setBlock(0, 50, 0, Block.GOLD_BLOCK); + this.setBlock(0, 50, 0, Block.GOLD_BLOCK); super.start(); } @Override protected void onStop() { - this.scoreMap.forEach((player, score) -> getScore().insertResult(player, score)); + this.scoreMap.forEach((player, score) -> this.getScore().insertResult(player, score)); } private void generateBridge(int startX, int startY, int startZ) { - int steps = (int) (radius * 1.5); - for (int i = 0; i < steps; i++) { + int steps = (int) (this.radius * 1.5); + for(int i = 0; i < steps; i++) { double t = (double) i / steps; int x = (int) (startX * (1 - t)); int z = (int) (startZ * (1 - t)); - setBlock(x, startY, z, Block.SANDSTONE); + this.setBlock(x, startY, z, Block.SANDSTONE); } } @Override protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { Player player = playerMoveEvent.getPlayer(); - if(!spawnPoints.containsKey(player)) { + if(!this.spawnPoints.containsKey(player)) { if(playerMoveEvent.getNewPosition().y() < 45) player.teleport(this.getSpawn()); if(this.countdownStarted) playerMoveEvent.setCancelled(true); return; } - if(isBeforeBeginning) { - if(spawnPoints.get(player).distance(playerMoveEvent.getNewPosition()) < 1) return; + if(this.isBeforeBeginning) { + if(this.spawnPoints.get(player).distance(playerMoveEvent.getNewPosition()) < 1) return; playerMoveEvent.setCancelled(true); - player.teleport(spawnPoints.get(player)); + player.teleport(this.spawnPoints.get(player)); } if(playerMoveEvent.getNewPosition().y() < 40) { - player.teleport(spawnPoints.get(player)); + player.teleport(this.spawnPoints.get(player)); this.scoreMap.putIfAbsent(player, 0); this.scoreMap.put(player, this.scoreMap.get(player) + 1); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/sumo/Sumo.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/sumo/Sumo.java index 06d9fcb..607f109 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/sumo/Sumo.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/sumo/Sumo.java @@ -42,16 +42,16 @@ public class Sumo extends StatelessGame { this.timer = seconds; this.eventNode().addChild( - CombatFeatures.empty() - .add(CombatFeatures.VANILLA_ATTACK) - .add(CombatFeatures.VANILLA_DAMAGE) - .add(CombatFeatures.VANILLA_KNOCKBACK) - .build() - .createNode() + CombatFeatures.empty() + .add(CombatFeatures.VANILLA_ATTACK) + .add(CombatFeatures.VANILLA_DAMAGE) + .add(CombatFeatures.VANILLA_KNOCKBACK) + .build() + .createNode() ); this.eventNode().addListener(PrepareAttackEvent.class, prepareAttackEvent -> { - if (this.isBeforeBeginning) + if(this.isBeforeBeginning) prepareAttackEvent.setCancelled(true); }); @@ -74,7 +74,7 @@ public class Sumo extends StatelessGame { this.timer--; double percent = (double) this.timer / this.seconds; int radius = (int) (this.originalRadius * percent); - if (this.radius >= 5) { + if(this.radius >= 5) { this.radius = radius; this.generatePlatform(); return TaskSchedule.seconds(1); @@ -115,7 +115,7 @@ public class Sumo extends StatelessGame { player.teleport(this.getSpawn()); this.healthMap.put(player, this.healthMap.get(player) - 1); player.setLevel(this.healthMap.get(player)); - if (this.healthMap.get(player) == 0) { + if(this.healthMap.get(player) == 0) { this.getScore().insertResult(player); player.setGameMode(GameMode.SPECTATOR); } @@ -124,6 +124,6 @@ public class Sumo extends StatelessGame { @Override public Pos getSpawn() { - return new Pos(0, 2, 0); + return new Pos(0, 2, 0); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/sumo/SumoFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/sumo/SumoFactory.java index d6bb2f5..0cc6c26 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/sumo/SumoFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/sumo/SumoFactory.java @@ -31,9 +31,9 @@ public class SumoFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 10, 20, 30)) - .addOption(new NumericOption("health", Material.GOLDEN_APPLE, TranslatedComponent.byId("game_Sumo#lives"), 1, 2, 3, 4, 5)) - .addOption(new NumericOption("seconds", Material.CLOCK, TranslatedComponent.byId("optionCommon#seconds"), 30, 60, 90, 120)); + .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 10, 20, 30)) + .addOption(new NumericOption("health", Material.GOLDEN_APPLE, TranslatedComponent.byId("game_Sumo#lives"), 1, 2, 3, 4, 5)) + .addOption(new NumericOption("seconds", Material.CLOCK, TranslatedComponent.byId("optionCommon#seconds"), 30, 60, 90, 120)); } @Override @@ -44,6 +44,6 @@ public class SumoFactory implements GameFactory { @Override public RestrictionHandler globalRestrictions() { return new RestrictionHandler() - .addRestriction(new MinimalPlayeramountGameRestriction(2)); + .addRestriction(new MinimalPlayeramountGameRestriction(2)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/Tetris.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/Tetris.java index aa6997e..cd4d98d 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/Tetris.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/Tetris.java @@ -1,8 +1,8 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.tetris; +import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.instance.game.stateless.types.tetris.game.TetrisGame; -import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.types.tetris.game.Tetromino; import eu.mhsl.minenet.minigames.score.PointsWinScore; import net.kyori.adventure.text.Component; @@ -10,20 +10,25 @@ import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.Entity; import net.minestom.server.entity.GameMode; import net.minestom.server.entity.Player; -import net.minestom.server.event.player.*; +import net.minestom.server.event.player.PlayerHandAnimationEvent; +import net.minestom.server.event.player.PlayerMoveEvent; +import net.minestom.server.event.player.PlayerTickEvent; +import net.minestom.server.event.player.PlayerUseItemEvent; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.Map; +import java.util.Random; +import java.util.WeakHashMap; class Tetris extends StatelessGame { private final Map tetrisGames = new WeakHashMap<>(); private final int nextTetrominoesCount; private final boolean isFast; private final boolean hasCombat; - private boolean setTimeLimit = false; private final long randomSeed; + private boolean setTimeLimit = false; public Tetris(int nextTetrominoesCount, boolean isFast, boolean hasCombat) { super(Dimension.THE_END.key, "Tetris", new PointsWinScore()); @@ -136,7 +141,7 @@ class Tetris extends StatelessGame { if(this.tetrisGames.get(p) == null) { this.tetrisGames.put(p, new TetrisGame( this, - this.getSpawn().sub(6, 8, 15).add(this.tetrisGames.size()*30, 0, 0), + this.getSpawn().sub(6, 8, 15).add(this.tetrisGames.size() * 30, 0, 0), Tetromino.Shape.J, this.nextTetrominoesCount, this.isFast, diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/TetrisFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/TetrisFactory.java index 56630f7..94d018b 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/TetrisFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/TetrisFactory.java @@ -1,9 +1,9 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.tetris; import eu.mhsl.minenet.minigames.instance.game.Game; +import eu.mhsl.minenet.minigames.instance.game.stateless.config.ConfigManager; import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.config.Option; -import eu.mhsl.minenet.minigames.instance.game.stateless.config.ConfigManager; import eu.mhsl.minenet.minigames.instance.game.stateless.config.common.BoolOption; import eu.mhsl.minenet.minigames.instance.game.stateless.config.common.NumericOption; import eu.mhsl.minenet.minigames.instance.room.Room; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/Playfield.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/Playfield.java index 115e0fa..64dbc24 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/Playfield.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/Playfield.java @@ -10,10 +10,10 @@ import org.apache.commons.lang3.ArrayUtils; import java.util.Random; public class Playfield { - private final Pos lowerLeftCorner; - private final StatelessGame instance; private final static int height = 22; private final static Block scoreBlock = Block.STONE; + private final Pos lowerLeftCorner; + private final StatelessGame instance; private final int nextTetrominoesCount; private final Random random; @@ -41,19 +41,19 @@ public class Playfield { } public Pos getScorePosition() { - return this.lowerLeftCorner.add(-5, height+3, 0); + return this.lowerLeftCorner.add(-5, height + 3, 0); } public void generate() { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); // actual playfield: - for(int x=0; x<12; x++) { - for(int y = 0; y< height; y++) { + for(int x = 0; x < 12; x++) { + for(int y = 0; y < height; y++) { batch.setBlock(this.lowerLeftCorner.add(x, y, 0), Block.GLASS); batch.setBlock(this.lowerLeftCorner.add(x, y, -1), Block.BLACK_CONCRETE); - if(x==0 || x==11 || y==0) { + if(x == 0 || x == 11 || y == 0) { batch.setBlock(this.lowerLeftCorner.add(x, y, 1), Block.GRAY_CONCRETE); batch.setBlock(this.lowerLeftCorner.add(x, y, 0), Block.GRAY_CONCRETE); } @@ -63,14 +63,14 @@ public class Playfield { // hold position: for(int x = 0; x < 4; x++) { for(int y = 0; y < 4; y++) { - batch.setBlock(this.getHoldPosition().add(x-1, y-1, -1), Block.QUARTZ_BLOCK); + batch.setBlock(this.getHoldPosition().add(x - 1, y - 1, -1), Block.QUARTZ_BLOCK); } } // next positions: for(int x = 0; x < 4; x++) { - for(int y = -4*this.nextTetrominoesCount+4; y < 4; y++) { - batch.setBlock(this.getNextPosition().add(x-1, y-1, -1), Block.QUARTZ_BLOCK); + for(int y = -4 * this.nextTetrominoesCount + 4; y < 4; y++) { + batch.setBlock(this.getNextPosition().add(x - 1, y - 1, -1), Block.QUARTZ_BLOCK); } } @@ -79,14 +79,15 @@ public class Playfield { batch.setBlock(this.getPlayerSpawnPosition().sub(1, 1, 1), Block.STONE); batch.setBlock(this.getPlayerSpawnPosition().sub(0, 1, 1), Block.STONE); - BatchUtil.loadAndApplyBatch(batch, this.instance, () -> {}); + BatchUtil.loadAndApplyBatch(batch, this.instance, () -> { + }); } public int removeFullLines() { int removedLinesCounter = 0; - for(int y = 1; y< height; y++) { + for(int y = 1; y < height; y++) { boolean isFullLine = true; - for(int x=1; x<11; x++) { + for(int x = 1; x < 11; x++) { if(this.instance.getBlock(this.lowerLeftCorner.add(x, y, 1)) == Block.AIR) isFullLine = false; } if(isFullLine) { @@ -101,9 +102,9 @@ public class Playfield { public void addLines(int lines) { int xPosMissing = this.random.nextInt(1, 10); - for (int i = 0; i < lines; i++) { + for(int i = 0; i < lines; i++) { this.moveAllLinesUp(); - for (int x = 1; x < 11; x++) { + for(int x = 1; x < 11; x++) { if(x != xPosMissing) { this.instance.setBlock(this.lowerLeftCorner.add(x, 1, 1), Block.LIGHT_GRAY_CONCRETE); } else { @@ -114,7 +115,7 @@ public class Playfield { } public void updateAttackingLines(int attackingLines) { - for (int y = 0; y < height + 5; y++) { + for(int y = 0; y < height + 5; y++) { if(attackingLines > 0) { this.instance.setBlock(this.lowerLeftCorner.add(12, y, 1), Block.REDSTONE_BLOCK); attackingLines -= 1; @@ -132,48 +133,49 @@ public class Playfield { for(int i = 6; i > 0; i--) { char digit; if(i <= characters.length) { - digit = characters[i-1]; + digit = characters[i - 1]; } else { digit = '0'; } - this.displayDigit(digit, 6-i); + this.displayDigit(digit, 6 - i); } } private void displayDigit(char digit, int positionFromLeft) { int[][] digitArray; - switch (digit) { - case '1' -> digitArray = new int[][]{{0,0,1},{0,1,1},{0,0,1},{0,0,1},{0,0,1}}; - case '2' -> digitArray = new int[][]{{1,1,1},{0,0,1},{1,1,1},{1,0,0},{1,1,1}}; - case '3' -> digitArray = new int[][]{{1,1,1},{0,0,1},{0,1,1},{0,0,1},{1,1,1}}; - case '4' -> digitArray = new int[][]{{1,0,1},{1,0,1},{1,1,1},{0,0,1},{0,0,1}}; - case '5' -> digitArray = new int[][]{{1,1,1},{1,0,0},{1,1,1},{0,0,1},{1,1,1}}; - case '6' -> digitArray = new int[][]{{1,1,1},{1,0,0},{1,1,1},{1,0,1},{1,1,1}}; - case '7' -> digitArray = new int[][]{{1,1,1},{0,0,1},{0,1,0},{0,1,0},{0,1,0}}; - case '8' -> digitArray = new int[][]{{1,1,1},{1,0,1},{1,1,1},{1,0,1},{1,1,1}}; - case '9' -> digitArray = new int[][]{{1,1,1},{1,0,1},{1,1,1},{0,0,1},{1,1,1}}; - default -> digitArray = new int[][]{{1,1,1},{1,0,1},{1,0,1},{1,0,1},{1,1,1}}; + switch(digit) { + case '1' -> digitArray = new int[][]{{0, 0, 1}, {0, 1, 1}, {0, 0, 1}, {0, 0, 1}, {0, 0, 1}}; + case '2' -> digitArray = new int[][]{{1, 1, 1}, {0, 0, 1}, {1, 1, 1}, {1, 0, 0}, {1, 1, 1}}; + case '3' -> digitArray = new int[][]{{1, 1, 1}, {0, 0, 1}, {0, 1, 1}, {0, 0, 1}, {1, 1, 1}}; + case '4' -> digitArray = new int[][]{{1, 0, 1}, {1, 0, 1}, {1, 1, 1}, {0, 0, 1}, {0, 0, 1}}; + case '5' -> digitArray = new int[][]{{1, 1, 1}, {1, 0, 0}, {1, 1, 1}, {0, 0, 1}, {1, 1, 1}}; + case '6' -> digitArray = new int[][]{{1, 1, 1}, {1, 0, 0}, {1, 1, 1}, {1, 0, 1}, {1, 1, 1}}; + case '7' -> digitArray = new int[][]{{1, 1, 1}, {0, 0, 1}, {0, 1, 0}, {0, 1, 0}, {0, 1, 0}}; + case '8' -> digitArray = new int[][]{{1, 1, 1}, {1, 0, 1}, {1, 1, 1}, {1, 0, 1}, {1, 1, 1}}; + case '9' -> digitArray = new int[][]{{1, 1, 1}, {1, 0, 1}, {1, 1, 1}, {0, 0, 1}, {1, 1, 1}}; + default -> digitArray = new int[][]{{1, 1, 1}, {1, 0, 1}, {1, 0, 1}, {1, 0, 1}, {1, 1, 1}}; } - for (int x = 0; x < 3; x++) { - for (int y = 0; y < 5; y++) { - if(digitArray[4-y][x] == 1) this.instance.setBlock(this.getScorePosition().add(positionFromLeft*4+x, y, 0), scoreBlock); + for(int x = 0; x < 3; x++) { + for(int y = 0; y < 5; y++) { + if(digitArray[4 - y][x] == 1) + this.instance.setBlock(this.getScorePosition().add(positionFromLeft * 4 + x, y, 0), scoreBlock); } } } private void removeDigits() { - for (int x = 0; x < 4 * 6; x++) { - for (int y = 0; y < 5; y++) { + for(int x = 0; x < 4 * 6; x++) { + for(int y = 0; y < 5; y++) { this.instance.setBlock(this.getScorePosition().add(x, y, 0), Block.AIR); } } } private void moveAllLinesUp() { - for (int y = height + 3; y > 1; y--) { - for (int x = 1; x < 11; x++) { + for(int y = height + 3; y > 1; y--) { + for(int x = 1; x < 11; x++) { Block blockBeneath = this.instance.getBlock(this.lowerLeftCorner.add(x, y - 1, 1)); this.instance.setBlock(this.lowerLeftCorner.add(x, y, 1), blockBeneath); } @@ -181,9 +183,9 @@ public class Playfield { } private void removeFullLine(int positionY) { - for(int y = positionY; y< height; y++) { - for(int x=1; x<11; x++) { - Block blockAbove = this.instance.getBlock(this.lowerLeftCorner.add(x, y+1, 1)); + for(int y = positionY; y < height; y++) { + for(int x = 1; x < 11; x++) { + Block blockAbove = this.instance.getBlock(this.lowerLeftCorner.add(x, y + 1, 1)); this.instance.setBlock(this.lowerLeftCorner.add(x, y, 1), blockAbove); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/TetrisGame.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/TetrisGame.java index dc6cabe..44dbe5f 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/TetrisGame.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/TetrisGame.java @@ -14,36 +14,26 @@ public class TetrisGame { private final StatelessGame instance; private final Playfield playfield; private final boolean isFast; + private final boolean hasCombat; + private final List nextTetrominoes = new ArrayList<>(); + private final List tetrominoBag = new ArrayList<>(); + private final Pos nextPosition; + private final Pos holdPosition; + private final Pos tetrominoSpawnPosition; + private final Map lastPresses = new HashMap<>(); + private final List otherTetrisGames = new ArrayList<>(); + private final Random random; + public boolean lost = false; + public boolean paused = true; + public Tetromino currentTetromino; + public Sidebar sidebar = new Sidebar(Component.text("Info:")); private int level = 1; private int lines = 0; private int score = 0; private int combo = 0; private int attackingLines = 0; - public boolean lost = false; - public boolean paused = true; - private final boolean hasCombat; - public Tetromino currentTetromino; - private final List nextTetrominoes = new ArrayList<>(); private Tetromino holdTetromino; - private final List tetrominoBag = new ArrayList<>(); private boolean holdPossible = true; - private final Pos nextPosition; - private final Pos holdPosition; - private final Pos tetrominoSpawnPosition; - public Sidebar sidebar = new Sidebar(Component.text("Info:")); - private final Map lastPresses = new HashMap<>(); - private final List otherTetrisGames = new ArrayList<>(); - private final Random random; - - public enum Button { - W, - A, - S, - D, - mouseLeft, - mouseRight, - space - } public TetrisGame(StatelessGame instance, Pos lowerLeftCorner, Tetromino.Shape startTetrominoShape, int nextTetrominoesCount, boolean isfast, boolean hasCombat, long randomSeed) { this.isFast = isfast; @@ -58,7 +48,7 @@ public class TetrisGame { this.buildSidebar(); this.currentTetromino = new Tetromino(this.instance, startTetrominoShape); - for (int i = 0; i < nextTetrominoesCount; i++) { + for(int i = 0; i < nextTetrominoesCount; i++) { this.updateNextTetrominoes(); } } @@ -67,15 +57,15 @@ public class TetrisGame { final int standardButtonDelay = 100; final int buttonDebounce = 70; - if(this.lastPresses.getOrDefault(button, 0L) >= System.currentTimeMillis()-standardButtonDelay) return; + if(this.lastPresses.getOrDefault(button, 0L) >= System.currentTimeMillis() - standardButtonDelay) return; this.lastPresses.put(button, System.currentTimeMillis()); - if(button == Button.W) this.lastPresses.put(button, System.currentTimeMillis()+buttonDebounce); - if(button == Button.S) this.lastPresses.put(button, System.currentTimeMillis()-buttonDebounce); + if(button == Button.W) this.lastPresses.put(button, System.currentTimeMillis() + buttonDebounce); + if(button == Button.S) this.lastPresses.put(button, System.currentTimeMillis() - buttonDebounce); if(this.lost || this.paused) return; - switch (button) { + switch(button) { case A -> this.currentTetromino.moveLeft(); case S -> this.moveDown(); case D -> this.currentTetromino.moveRight(); @@ -98,7 +88,7 @@ public class TetrisGame { int standardTickDelay = 40; if(this.isFast) standardTickDelay = 20; - TaskSchedule nextTick = TaskSchedule.tick(Math.round((float) standardTickDelay /this.level)); + TaskSchedule nextTick = TaskSchedule.tick(Math.round((float) standardTickDelay / this.level)); if(this.paused) return nextTick; this.tick(); return nextTick; @@ -107,7 +97,7 @@ public class TetrisGame { this.updateInfo(); this.nextTetrominoes.forEach(tetromino -> { double xChange = -tetromino.getXChange(); - tetromino.setPosition(this.nextPosition.sub(xChange, 4*this.nextTetrominoes.indexOf(tetromino), 0)); + tetromino.setPosition(this.nextPosition.sub(xChange, 4 * this.nextTetrominoes.indexOf(tetromino), 0)); tetromino.drawAsEntities(); }); } @@ -149,7 +139,6 @@ public class TetrisGame { this.lost = true; } - private boolean moveDown() { if(!this.currentTetromino.moveDown()) { this.setActiveTetrominoDown(); @@ -203,7 +192,6 @@ public class TetrisGame { return true; } - private void updateNextTetrominoes() { if(this.tetrominoBag.isEmpty()) { for(Tetromino.Shape shape : Tetromino.Shape.values()) { @@ -217,7 +205,7 @@ public class TetrisGame { this.nextTetrominoes.add(newTetromino); this.nextTetrominoes.forEach(tetromino -> { double xChange = -tetromino.getXChange(); - tetromino.setPosition(this.nextPosition.sub(xChange, 4*this.nextTetrominoes.indexOf(tetromino), 0)); + tetromino.setPosition(this.nextPosition.sub(xChange, 4 * this.nextTetrominoes.indexOf(tetromino), 0)); tetromino.drawAsEntities(); }); } @@ -242,7 +230,7 @@ public class TetrisGame { private void updateInfo() { this.playfield.updateScore(this.score); - this.sidebar.updateLineScore("0", this.score); + this.sidebar.updateLineScore("0", this.score); this.sidebar.updateLineScore("1", this.lines); this.sidebar.updateLineScore("2", this.level); } @@ -256,7 +244,7 @@ public class TetrisGame { int removedLines = this.playfield.removeFullLines(); int combatLines = 0; this.combo += 1; - switch (removedLines) { + switch(removedLines) { case 0 -> this.combo = 0; case 1 -> { this.lines += 1; @@ -281,7 +269,7 @@ public class TetrisGame { this.score += 50 * this.combo * this.level; if(this.combo >= 2) { - combatLines += (int) Math.floor((double) this.combo /2); + combatLines += (int) Math.floor((double) this.combo / 2); } if(this.hasCombat && this.attackingLines > 0) { @@ -315,4 +303,14 @@ public class TetrisGame { this.loose(); } } + + public enum Button { + W, + A, + S, + D, + mouseLeft, + mouseRight, + space + } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/Tetromino.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/Tetromino.java index 1c8a95c..7acf4fe 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/Tetromino.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tetris/game/Tetromino.java @@ -14,37 +14,27 @@ import java.util.List; import java.util.UUID; public class Tetromino { + private final static EntityType ghostEntityType = EntityType.FALLING_BLOCK; + private final static Tag uuidTag = Tag.String("uuid"); private final Shape shape; private final StatelessGame instance; + private final UUID uuid; private Pos position; private int[][] shapeArray; - private final static EntityType ghostEntityType = EntityType.FALLING_BLOCK; - private final UUID uuid; - private final static Tag uuidTag = Tag.String("uuid"); - - public enum Shape { - I, - J, - L, - O, - S, - T, - Z - } public Tetromino(StatelessGame instance, Shape shape) { this.instance = instance; this.shape = shape; this.uuid = UUID.randomUUID(); - switch (this.shape) { + switch(this.shape) { case I -> this.shapeArray = new int[][]{{0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}}; - case J -> this.shapeArray = new int[][]{{1,0,0}, {1,1,1}, {0,0,0}}; - case L -> this.shapeArray = new int[][]{{0,0,1}, {1,1,1}, {0,0,0}}; - case O -> this.shapeArray = new int[][]{{1,1}, {1,1}}; - case S -> this.shapeArray = new int[][]{{0,1,1}, {1,1,0}, {0,0,0}}; - case T -> this.shapeArray = new int[][]{{0,1,0}, {1,1,1}, {0,0,0}}; - case Z -> this.shapeArray = new int[][]{{1,1,0}, {0,1,1}, {0,0,0}}; + case J -> this.shapeArray = new int[][]{{1, 0, 0}, {1, 1, 1}, {0, 0, 0}}; + case L -> this.shapeArray = new int[][]{{0, 0, 1}, {1, 1, 1}, {0, 0, 0}}; + case O -> this.shapeArray = new int[][]{{1, 1}, {1, 1}}; + case S -> this.shapeArray = new int[][]{{0, 1, 1}, {1, 1, 0}, {0, 0, 0}}; + case T -> this.shapeArray = new int[][]{{0, 1, 0}, {1, 1, 1}, {0, 0, 0}}; + case Z -> this.shapeArray = new int[][]{{1, 1, 0}, {0, 1, 1}, {0, 0, 0}}; } } @@ -83,7 +73,7 @@ public class Tetromino { public void draw(boolean withGhost) { if(withGhost) { Pos ghostPos = this.position; - while (!this.checkCollision(ghostPos.sub(0, 1, 0), this.shapeArray)) { + while(!this.checkCollision(ghostPos.sub(0, 1, 0), this.shapeArray)) { ghostPos = ghostPos.sub(0, 1, 0); } Pos positionChange = this.position.sub(ghostPos); @@ -117,7 +107,7 @@ public class Tetromino { public Block getColoredBlock() { Block returnBlock; - switch (this.shape) { + switch(this.shape) { case I -> returnBlock = Block.LIGHT_BLUE_CONCRETE; case J -> returnBlock = Block.BLUE_CONCRETE; case L -> returnBlock = Block.ORANGE_CONCRETE; @@ -141,7 +131,7 @@ public class Tetromino { } public double getXChange() { - switch (this.shape) { + switch(this.shape) { case O, I -> { return 0; } @@ -151,14 +141,13 @@ public class Tetromino { } } - public Shape getShape() { return this.shape; } private Block getGhostBlock() { Block returnBlock; - switch (this.shape) { + switch(this.shape) { case I -> returnBlock = Block.LIGHT_BLUE_STAINED_GLASS; case J -> returnBlock = Block.BLUE_STAINED_GLASS; case L -> returnBlock = Block.ORANGE_STAINED_GLASS; @@ -179,10 +168,10 @@ public class Tetromino { int[][] startArray = Arrays.stream(this.shapeArray).map(int[]::clone).toArray(int[][]::new); int[][] returnArray = new int[arrayLength][arrayLength]; - for(int k=0; k returnList.add(position.add(x-1, y-2, 0)); + for(int x = 0; x < arrayLength; x++) { + for(int y = 0; y < arrayLength; y++) { + if(shapeArray[arrayLength - 1 - y][x] == 1) { + switch(this.shape) { + case I -> returnList.add(position.add(x - 1, y - 2, 0)); case O -> returnList.add(position.add(x, y, 0)); - default -> returnList.add(position.add(x-1, y-1, 0)); + default -> returnList.add(position.add(x - 1, y - 1, 0)); } } } @@ -243,4 +232,14 @@ public class Tetromino { } return false; } + + public enum Shape { + I, + J, + L, + O, + S, + T, + Z + } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tntrun/TntRun.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tntrun/TntRun.java index 403a657..4a95429 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tntrun/TntRun.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tntrun/TntRun.java @@ -23,22 +23,23 @@ public class TntRun extends StatelessGame { final int radius; final int stackCount; + public TntRun(int radius, int stackCount) { super(Dimension.OVERWORLD.key, "tntRun", new LastWinsScore()); this.radius = radius; this.stackCount = stackCount; - setGenerator(new CircularPlateTerrainGenerator(radius)); + this.setGenerator(new CircularPlateTerrainGenerator(radius)); } @Override protected void onLoad(@NotNull CompletableFuture callback) { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for (int level = 0; level < stackCount; level++) { - for(int x = -radius; x <= radius; x++) { - for(int z = -radius; z <= radius; z++) { - if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > radius) continue; + for(int level = 0; level < this.stackCount; level++) { + for(int x = -this.radius; x <= this.radius; x++) { + for(int z = -this.radius; z <= this.radius; z++) { + if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > this.radius) continue; - batch.setBlock(x, totalElevation + (level * heightPerLevel), z, Block.TNT); + batch.setBlock(x, this.totalElevation + (level * this.heightPerLevel), z, Block.TNT); } } } @@ -50,25 +51,25 @@ public class TntRun extends StatelessGame { protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { - if(playerMoveEvent.getNewPosition().y() < totalElevation) { - if(isBeforeBeginning) { - playerMoveEvent.getPlayer().teleport(getSpawn()); + if(playerMoveEvent.getNewPosition().y() < this.totalElevation) { + if(this.isBeforeBeginning) { + playerMoveEvent.getPlayer().teleport(this.getSpawn()); return; } playerMoveEvent.getPlayer().setGameMode(GameMode.SPECTATOR); - getScore().insertResult(playerMoveEvent.getPlayer()); + this.getScore().insertResult(playerMoveEvent.getPlayer()); } - if(isRunning && !getScore().hasResult(playerMoveEvent.getPlayer())) { + if(this.isRunning && !this.getScore().hasResult(playerMoveEvent.getPlayer())) { MinecraftServer.getSchedulerManager().scheduleTask(() -> { float radius = 0.5F; - for (float x = -radius; x <= radius; x++) { - for (float z = -radius; z <= radius; z++) { + for(float x = -radius; x <= radius; x++) { + for(float z = -radius; z <= radius; z++) { Pos firstLocation = playerMoveEvent.getNewPosition().add(x, -1, z); - Pos secondLocation = firstLocation.withY(y -> y-1); - if(!getBlock(firstLocation).isAir() || !getBlock(secondLocation).isAir()) { - setBlock(firstLocation, Block.AIR); - setBlock(secondLocation, Block.AIR); + Pos secondLocation = firstLocation.withY(y -> y - 1); + if(!this.getBlock(firstLocation).isAir() || !this.getBlock(secondLocation).isAir()) { + this.setBlock(firstLocation, Block.AIR); + this.setBlock(secondLocation, Block.AIR); // Entity fallingTnt = new Entity(EntityType.TNT); // PrimedTntMeta fallingTntMeta = (PrimedTntMeta) fallingTnt.getEntityMeta(); @@ -83,6 +84,6 @@ public class TntRun extends StatelessGame { @Override public Pos getSpawn() { - return new Pos(0, totalElevation + heightPerLevel * (stackCount-1) + 1, 0); + return new Pos(0, this.totalElevation + this.heightPerLevel * (this.stackCount - 1) + 1, 0); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tntrun/TntRunFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tntrun/TntRunFactory.java index 79665b2..c5cb351 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tntrun/TntRunFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/tntrun/TntRunFactory.java @@ -30,8 +30,8 @@ public class TntRunFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("radius", Material.STICK, TranslatedComponent.byId("optionCommon#radius"), 20, 30, 50, 60)) - .addOption(new NumericOption("levels", Material.SCAFFOLDING, TranslatedComponent.byId("game_TntRun#levels"), 1, 2, 3, 4, 5)); + .addOption(new NumericOption("radius", Material.STICK, TranslatedComponent.byId("optionCommon#radius"), 20, 30, 50, 60)) + .addOption(new NumericOption("levels", Material.SCAFFOLDING, TranslatedComponent.byId("game_TntRun#levels"), 1, 2, 3, 4, 5)); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/Towerdefense.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/Towerdefense.java index f736463..62cc440 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/Towerdefense.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/Towerdefense.java @@ -18,12 +18,12 @@ public class Towerdefense extends StatelessGame { private final Random random = new Random(); private final AbsoluteBlockBatch mazeBatch = new AbsoluteBlockBatch(); private final List mazePath = new ArrayList<>(); - private List instances = new ArrayList<>(); + private final List instances = new ArrayList<>(); public Towerdefense() { super(Dimension.NETHER.key, "Towerdefense", new LastWinsScore()); - setGenerator(new MazeGenerator()); + this.setGenerator(new MazeGenerator()); this.generateMaze(); } @@ -33,9 +33,9 @@ public class Towerdefense extends StatelessGame { List previousDirections = new ArrayList<>(); int direction = 1; // 0 -> right; 1 -> straight; 2 -> left - for (int i = 0; i < 9; i++) { - for (int j = 0; j < 3; j++) { - position = position.add(direction-1,0,direction%2); + for(int i = 0; i < 9; i++) { + for(int j = 0; j < 3; j++) { + position = position.add(direction - 1, 0, direction % 2); this.addMazePosition(position, Block.WHITE_WOOL); } @@ -48,13 +48,13 @@ public class Towerdefense extends StatelessGame { previousDirections.add(direction); } this.addMazePosition(position, Block.WHITE_WOOL); - this.addMazePosition(position.add(0,0,1), Block.WHITE_WOOL); - this.addMazePosition(position.add(0,0,2), Block.RED_WOOL); + this.addMazePosition(position.add(0, 0, 1), Block.WHITE_WOOL); + this.addMazePosition(position.add(0, 0, 2), Block.RED_WOOL); } private void addMazePosition(Pos position, Block pathBlock) { this.mazeBatch.setBlock(position, pathBlock); - this.mazePath.add(position.add(0.5,1,0.5)); + this.mazePath.add(position.add(0.5, 1, 0.5)); } public AbsoluteBlockBatch getMazeBatch() { diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/TowerdefenseFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/TowerdefenseFactory.java index 1c215b5..02043e7 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/TowerdefenseFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/TowerdefenseFactory.java @@ -14,6 +14,7 @@ public class TowerdefenseFactory implements GameFactory { public TranslatedComponent name() { return TranslatedComponent.byId("game_Towerdefense#name"); } + @Override public Material symbol() { return Material.ARMOR_STAND; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/TowerdefenseRoom.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/TowerdefenseRoom.java index 9b02e0f..fc723a2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/TowerdefenseRoom.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/towerdefense/TowerdefenseRoom.java @@ -4,7 +4,10 @@ import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.generator.MazeGenerator; import eu.mhsl.minenet.minigames.util.BatchUtil; import net.minestom.server.MinecraftServer; -import net.minestom.server.entity.*; +import net.minestom.server.entity.EntityCreature; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.GameMode; +import net.minestom.server.entity.Player; import net.minestom.server.entity.attribute.Attribute; import net.minestom.server.instance.InstanceContainer; import net.minestom.server.item.ItemStack; @@ -27,8 +30,9 @@ public class TowerdefenseRoom extends InstanceContainer { this.player.setAllowFlying(true); this.player.getInventory().setItemStack(0, ItemStack.of(Material.ARMOR_STAND)); - setGenerator(new MazeGenerator()); - BatchUtil.loadAndApplyBatch(this.game.getMazeBatch(), this, () -> {}); + this.setGenerator(new MazeGenerator()); + BatchUtil.loadAndApplyBatch(this.game.getMazeBatch(), this, () -> { + }); } public void startWave(List entities) { @@ -37,7 +41,7 @@ public class TowerdefenseRoom extends InstanceContainer { MinecraftServer.getSchedulerManager().scheduleTask(() -> { this.addEntity(new EntityCreature(entityType)); return TaskSchedule.stop(); - }, TaskSchedule.millis(800L*counter)); + }, TaskSchedule.millis(800L * counter)); counter++; } } @@ -45,14 +49,14 @@ public class TowerdefenseRoom extends InstanceContainer { private void addEntity(EntityCreature entity) { entity.setInstance(this, this.game.getMazePath().getFirst()); entity.getAttribute(Attribute.MOVEMENT_SPEED).setBaseValue(0.15); - entity.getNavigator().setPathTo(this.game.getMazePath().get(1), 0.7, () -> changeEntityGoal(entity, 1)); + entity.getNavigator().setPathTo(this.game.getMazePath().get(1), 0.7, () -> this.changeEntityGoal(entity, 1)); } private void changeEntityGoal(EntityCreature entity, int positionIndex) { - if(positionIndex == this.game.getMazePath().size()-1) { + if(positionIndex == this.game.getMazePath().size() - 1) { return; } - entity.getNavigator().setPathTo(this.game.getMazePath().get(positionIndex+1), 0.7, () -> changeEntityGoal(entity, positionIndex+1)); + entity.getNavigator().setPathTo(this.game.getMazePath().get(positionIndex + 1), 0.7, () -> this.changeEntityGoal(entity, positionIndex + 1)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/LightPhase.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/LightPhase.java index 9cd6d34..ada7f2f 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/LightPhase.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/LightPhase.java @@ -11,10 +11,10 @@ enum LightPhase { YELLOW(Material.YELLOW_WOOL, 500, 1500), GREEN(Material.GREEN_WOOL, 2000, 5000); + private static final Random rnd = new Random(); public final ItemStack item; private final int minDuration; private final int maxDuration; - private static final Random rnd = new Random(); LightPhase(Material material, int minDuration, int maxDuration) { this.item = ItemStack.of(material); @@ -23,7 +23,7 @@ enum LightPhase { } public TaskSchedule taskScheduleRandomDuration() { - return TaskSchedule.millis(rnd.nextLong(minDuration, maxDuration)); + return TaskSchedule.millis(rnd.nextLong(this.minDuration, this.maxDuration)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/TrafficLightRace.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/TrafficLightRace.java index 2793273..3cfffe7 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/TrafficLightRace.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/TrafficLightRace.java @@ -1,10 +1,10 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.trafficlightrace; import de.articdive.jnoise.JNoise; +import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.score.FirstWinsScore; import eu.mhsl.minenet.minigames.util.BatchUtil; -import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.util.CommonProperties; import eu.mhsl.minenet.minigames.world.BlockPallet; import eu.mhsl.minenet.minigames.world.generator.terrain.SquarePlateTerrainGenerator; @@ -26,56 +26,55 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; class TrafficLightRace extends StatelessGame { - private LightPhase phase = LightPhase.RED; - private int phaseCounter = 0; - private final int width; private final int length; private final int preRun = 10; private final int afterRun = 10; - private final List trafficLights = new ArrayList<>(); + private LightPhase phase = LightPhase.RED; + private int phaseCounter = 0; public TrafficLightRace(int width, int length) { super(Dimension.THE_END.key, "Ampelrennen", new FirstWinsScore()); this.width = width; this.length = length; - setGenerator( - new SquarePlateTerrainGenerator(width, length + preRun + afterRun) - .setPlateHeight(50) - .setGenerateBorders(true) + this.setGenerator( + new SquarePlateTerrainGenerator(width, length + this.preRun + this.afterRun) + .setPlateHeight(50) + .setGenerateBorders(true) ); } @Override protected void onLoad(@NotNull CompletableFuture callback) { final JNoise slowBatches = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.1) - .build(); + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.1) + .build(); AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for (int x = 0; x <= width; x++) { - for (int z = 0; z <= preRun; z++) { + for(int x = 0; x <= this.width; x++) { + for(int z = 0; z <= this.preRun; z++) { batch.setBlock(x, 50, z, BlockPallet.GROUND.rnd()); } - for (int z = preRun; z <= length + preRun; z++) { + for(int z = this.preRun; z <= this.length + this.preRun; z++) { batch.setBlock(x, 50, z, slowBatches.getNoise(x, z) > 0.6 ? Block.SOUL_SAND : BlockPallet.STREET.rnd()); } - for (int z = preRun + length; z <= preRun + length + afterRun; z++) { + for(int z = this.preRun + this.length; z <= this.preRun + this.length + this.afterRun; z++) { batch.setBlock(x, 50, z, BlockPallet.GROUND.rnd()); } - batch.setBlock(x, 51, preRun-1, Block.OAK_FENCE.withProperties(CommonProperties.fenceEastWest)); - batch.setBlock(x, 50, preRun + length, Block.GOLD_BLOCK); + batch.setBlock(x, 51, this.preRun - 1, Block.OAK_FENCE.withProperties(CommonProperties.fenceEastWest)); + batch.setBlock(x, 50, this.preRun + this.length, Block.GOLD_BLOCK); } - record TrafficLightsInput(int x, int z) {} + record TrafficLightsInput(int x, int z) { + } Consumer generateTrafficLight = (input) -> { batch.setBlock(input.x, 51, input.z, Block.ANVIL); @@ -84,36 +83,36 @@ class TrafficLightRace extends StatelessGame { batch.setBlock(input.x, y, input.z, Block.ANDESITE_WALL); } - for (int x = input.x-3; x <= input.x+3; x++) { + for(int x = input.x - 3; x <= input.x + 3; x++) { batch.setBlock(x, 60, input.z, Block.SMOOTH_STONE_SLAB); } - batch.setBlock(input.x-2, 59, input.z, Block.STONE_BRICK_WALL); - trafficLights.add(new Pos(input.x-2, 58, input.z)); - trafficLights.add(new Pos(input.x-2, 57, input.z)); + batch.setBlock(input.x - 2, 59, input.z, Block.STONE_BRICK_WALL); + this.trafficLights.add(new Pos(input.x - 2, 58, input.z)); + this.trafficLights.add(new Pos(input.x - 2, 57, input.z)); - batch.setBlock(input.x+2, 59, input.z, Block.STONE_BRICK_WALL); - trafficLights.add(new Pos(input.x+2, 58, input.z)); - trafficLights.add(new Pos(input.x+2, 57, input.z)); + batch.setBlock(input.x + 2, 59, input.z, Block.STONE_BRICK_WALL); + this.trafficLights.add(new Pos(input.x + 2, 58, input.z)); + this.trafficLights.add(new Pos(input.x + 2, 57, input.z)); - for (Pos trafficLight : trafficLights) { + for(Pos trafficLight : this.trafficLights) { batch.setBlock(trafficLight, Block.WHITE_WOOL); } }; - for (int count = 0; count <= this.rnd.nextInt(1, 2); count++) { - generateTrafficLight.accept(new TrafficLightsInput(0, this.rnd.nextInt(preRun + 10, length + preRun - 10))); - generateTrafficLight.accept(new TrafficLightsInput(width, this.rnd.nextInt(preRun + 10, length + preRun - 10))); + for(int count = 0; count <= this.rnd.nextInt(1, 2); count++) { + generateTrafficLight.accept(new TrafficLightsInput(0, this.rnd.nextInt(this.preRun + 10, this.length + this.preRun - 10))); + generateTrafficLight.accept(new TrafficLightsInput(this.width, this.rnd.nextInt(this.preRun + 10, this.length + this.preRun - 10))); } - if(width > 30) { - for (int count = 0; count <= this.rnd.nextInt(1, 2); count++) { - generateTrafficLight.accept(new TrafficLightsInput(width/2, this.rnd.nextInt(preRun, length + preRun))); + if(this.width > 30) { + for(int count = 0; count <= this.rnd.nextInt(1, 2); count++) { + generateTrafficLight.accept(new TrafficLightsInput(this.width / 2, this.rnd.nextInt(this.preRun, this.length + this.preRun))); } } - generateTrafficLight.accept(new TrafficLightsInput(0, length + preRun)); - generateTrafficLight.accept(new TrafficLightsInput(width, length + preRun)); + generateTrafficLight.accept(new TrafficLightsInput(0, this.length + this.preRun)); + generateTrafficLight.accept(new TrafficLightsInput(this.width, this.length + this.preRun)); BatchUtil.loadAndApplyBatch(batch, this, () -> callback.complete(null)); } @@ -121,50 +120,51 @@ class TrafficLightRace extends StatelessGame { @Override protected void onStart() { AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); - for(int x = 0; x <= width; x++) { - batch.setBlock(x, 51, preRun-1, Block.AIR); + for(int x = 0; x <= this.width; x++) { + batch.setBlock(x, 51, this.preRun - 1, Block.AIR); } - BatchUtil.loadAndApplyBatch(batch, this, () -> playSound(Sound.sound(SoundEvent.BLOCK_WOOD_BREAK, Sound.Source.BLOCK, 1f, 1f))); + BatchUtil.loadAndApplyBatch(batch, this, () -> this.playSound(Sound.sound(SoundEvent.BLOCK_WOOD_BREAK, Sound.Source.BLOCK, 1f, 1f))); - scheduler().submitTask(() -> { + this.scheduler().submitTask(() -> { if(!super.isRunning) return TaskSchedule.stop(); - phaseCounter++; - if(phaseCounter >= 3) phaseCounter = 0; + this.phaseCounter++; + if(this.phaseCounter >= 3) this.phaseCounter = 0; - if(phaseCounter == 0) phase = LightPhase.RED; - if(phaseCounter == 1) phase = LightPhase.GREEN; - if(phaseCounter == 2) phase = LightPhase.YELLOW; + if(this.phaseCounter == 0) this.phase = LightPhase.RED; + if(this.phaseCounter == 1) this.phase = LightPhase.GREEN; + if(this.phaseCounter == 2) this.phase = LightPhase.YELLOW; - getPlayers().forEach(player -> { + this.getPlayers().forEach(player -> { for(int i = 0; i < 9; i++) { - player.getInventory().setItemStack(i, phase.item); + player.getInventory().setItemStack(i, this.phase.item); } }); AbsoluteBlockBatch changeLightsBatch = new AbsoluteBlockBatch(); - for (Pos trafficLight : trafficLights) { - changeLightsBatch.setBlock(trafficLight, phase.item.material().block()); + for(Pos trafficLight : this.trafficLights) { + changeLightsBatch.setBlock(trafficLight, this.phase.item.material().block()); } - BatchUtil.loadAndApplyBatch(changeLightsBatch, this, () -> {}); + BatchUtil.loadAndApplyBatch(changeLightsBatch, this, () -> { + }); - return phase.taskScheduleRandomDuration(); + return this.phase.taskScheduleRandomDuration(); }, ExecutionType.TICK_END); } @Override protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { - if(isBeforeBeginning) return; - if(getScore().hasResult(playerMoveEvent.getPlayer())) return; + if(this.isBeforeBeginning) return; + if(this.getScore().hasResult(playerMoveEvent.getPlayer())) return; - if(phase.equals(LightPhase.RED) && playerMoveEvent.getNewPosition().z()-0.01 > playerMoveEvent.getPlayer().getPosition().z()) { + if(this.phase.equals(LightPhase.RED) && playerMoveEvent.getNewPosition().z() - 0.01 > playerMoveEvent.getPlayer().getPosition().z()) { playerMoveEvent.getPlayer().setVelocity(new Vec(0, 8, -15)); playerMoveEvent.getPlayer().playSound(Sound.sound(SoundEvent.ENTITY_BLAZE_SHOOT, Sound.Source.PLAYER, 1f, 1f)); } - if(playerMoveEvent.getNewPosition().z() > preRun+length) { - getScore().insertResult(playerMoveEvent.getPlayer()); + if(playerMoveEvent.getNewPosition().z() > this.preRun + this.length) { + this.getScore().insertResult(playerMoveEvent.getPlayer()); playerMoveEvent.getPlayer().getInventory().clear(); playerMoveEvent.getPlayer().setGameMode(GameMode.SPECTATOR); } @@ -172,6 +172,6 @@ class TrafficLightRace extends StatelessGame { @Override public Pos getSpawn() { - return new Pos((double) width/2, 51, 3); + return new Pos((double) this.width / 2, 51, 3); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/TrafficLightRaceFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/TrafficLightRaceFactory.java index cf78b58..c2d1be4 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/TrafficLightRaceFactory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/trafficlightrace/TrafficLightRaceFactory.java @@ -1,8 +1,8 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.trafficlightrace; import eu.mhsl.minenet.minigames.instance.game.Game; -import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.config.ConfigManager; +import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory; import eu.mhsl.minenet.minigames.instance.game.stateless.config.Option; import eu.mhsl.minenet.minigames.instance.game.stateless.config.common.NumericOption; import eu.mhsl.minenet.minigames.instance.room.Room; @@ -25,8 +25,8 @@ public class TrafficLightRaceFactory implements GameFactory { @Override public ConfigManager configuration() { return new ConfigManager() - .addOption(new NumericOption("width", Material.OAK_FENCE, TranslatedComponent.byId("game_TrafficlightRace#width"), 20, 30, 40)) - .addOption(new NumericOption("length", Material.BLACK_CONCRETE_POWDER, TranslatedComponent.byId("game_TrafficlightRace#length"), 50, 80, 100, 120, 150)); + .addOption(new NumericOption("width", Material.OAK_FENCE, TranslatedComponent.byId("game_TrafficlightRace#width"), 20, 30, 40)) + .addOption(new NumericOption("length", Material.BLACK_CONCRETE_POWDER, TranslatedComponent.byId("game_TrafficlightRace#length"), 50, 80, 100, 120, 150)); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/turtleGame/TurtleGame.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/turtleGame/TurtleGame.java index c2ab1b3..08bc107 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/turtleGame/TurtleGame.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/turtleGame/TurtleGame.java @@ -10,7 +10,10 @@ import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; -import net.minestom.server.entity.*; +import net.minestom.server.entity.Entity; +import net.minestom.server.entity.EntityType; +import net.minestom.server.entity.GameMode; +import net.minestom.server.entity.Player; import net.minestom.server.entity.metadata.other.FallingBlockMeta; import net.minestom.server.event.player.PlayerStartSneakingEvent; import net.minestom.server.event.player.PlayerStopSneakingEvent; @@ -171,7 +174,7 @@ class TurtleGame extends StatelessGame { } private void generateNewSnacks(int count) { - for (int i = 0; i < count; i++) { + for(int i = 0; i < count; i++) { this.generateNewSnack(); } } @@ -192,7 +195,7 @@ class TurtleGame extends StatelessGame { } private void generateNewBombs(int count) { - for (int i = 0; i < count; i++) { + for(int i = 0; i < count; i++) { this.generateNewBomb(); } } @@ -222,21 +225,21 @@ class TurtleGame extends StatelessGame { boolean isInRadius, collides; do { if(counter > 200) return null; - int x = this.rnd.nextInt(-this.radius+2, this.radius-2); - int z = this.rnd.nextInt(-this.radius+2, this.radius-2); + int x = this.rnd.nextInt(-this.radius + 2, this.radius - 2); + int z = this.rnd.nextInt(-this.radius + 2, this.radius - 2); spawnPosition = new Pos(x, 1, z).add(0.5, 0, 0.5); Pos checkPosition = spawnPosition; - isInRadius = checkPosition.distance(0, 1, 0) < this.radius-2; + isInRadius = checkPosition.distance(0, 1, 0) < this.radius - 2; collides = this.getEntities().stream() .filter(e -> !e.equals(entity)) .anyMatch(e -> entity.getBoundingBox().intersectBox(e.getPosition().sub(checkPosition), e.getBoundingBox())); if(!collides && !nearPlayers) collides = this.turtlePlayerMap.values().stream() - .filter(turtle -> !turtle.equals(entity)) - .anyMatch(turtle -> entity.getBoundingBox() - .growSymmetrically(turtle.getBombBorder(), 1, turtle.getBombBorder()) - .intersectBox(turtle.getPosition().sub(checkPosition), turtle.getBoundingBox())); + .filter(turtle -> !turtle.equals(entity)) + .anyMatch(turtle -> entity.getBoundingBox() + .growSymmetrically(turtle.getBombBorder(), 1, turtle.getBombBorder()) + .intersectBox(turtle.getPosition().sub(checkPosition), turtle.getBoundingBox())); counter++; - } while (!isInRadius || collides); + } while(!isInRadius || collides); return spawnPosition; } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/hub/Hub.java b/src/main/java/eu/mhsl/minenet/minigames/instance/hub/Hub.java index 06ea4a2..ae79a8b 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/hub/Hub.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/hub/Hub.java @@ -1,14 +1,16 @@ package eu.mhsl.minenet.minigames.instance.hub; import eu.mhsl.minenet.minigames.Resource; +import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.MineNetInstance; +import eu.mhsl.minenet.minigames.instance.Spawnable; import eu.mhsl.minenet.minigames.instance.hub.entity.RoomSelector; import eu.mhsl.minenet.minigames.util.CommonEventHandles; -import eu.mhsl.minenet.minigames.instance.Spawnable; -import eu.mhsl.minenet.minigames.instance.Dimension; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; -import net.minestom.server.event.player.*; +import net.minestom.server.event.player.PlayerBlockBreakEvent; +import net.minestom.server.event.player.PlayerBlockInteractEvent; +import net.minestom.server.event.player.PlayerBlockPlaceEvent; import net.minestom.server.instance.anvil.AnvilLoader; import java.nio.file.Path; @@ -22,19 +24,19 @@ public class Hub extends MineNetInstance implements Spawnable { INSTANCE.setChunkLoader(new AnvilLoader(Resource.HUB_MAP.getPath())); INSTANCE.eventNode() - .addListener(PlayerBlockBreakEvent.class, CommonEventHandles::cancel) - .addListener(PlayerBlockPlaceEvent.class, CommonEventHandles::cancel) - .addListener(PlayerBlockInteractEvent.class, CommonEventHandles::cancel); + .addListener(PlayerBlockBreakEvent.class, CommonEventHandles::cancel) + .addListener(PlayerBlockPlaceEvent.class, CommonEventHandles::cancel) + .addListener(PlayerBlockInteractEvent.class, CommonEventHandles::cancel); new RoomSelector().setInstance(INSTANCE, new Pos(0.5, 11, 4.5)); } private Hub() { super(Dimension.THE_END.key); - setChunkLoader(new AnvilLoader(Path.of("maps/hub"))); + this.setChunkLoader(new AnvilLoader(Path.of("maps/hub"))); - setTime(18000); - setTimeRate(0); + this.setTime(18000); + this.setTimeRate(0); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/hub/entity/RoomSelector.java b/src/main/java/eu/mhsl/minenet/minigames/instance/hub/entity/RoomSelector.java index 37839b4..09f32a2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/hub/entity/RoomSelector.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/hub/entity/RoomSelector.java @@ -11,10 +11,11 @@ import org.jetbrains.annotations.NotNull; public class RoomSelector extends InteractableEntity { final AbstractVillagerMeta abstractVillagerMeta; + public RoomSelector() { super(EntityType.VILLAGER); - abstractVillagerMeta = (AbstractVillagerMeta) this.getEntityMeta(); + this.abstractVillagerMeta = (AbstractVillagerMeta) this.getEntityMeta(); } @Override @@ -25,7 +26,7 @@ public class RoomSelector extends InteractableEntity { @Override public void onAttack(@NotNull EntityAttackEvent entityAttackEvent) { super.onAttack(entityAttackEvent); - abstractVillagerMeta.setHeadShakeTimer(20); + this.abstractVillagerMeta.setHeadShakeTimer(20); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/hub/inventory/HubInventory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/hub/inventory/HubInventory.java index 1cb0c51..b49a5db 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/hub/inventory/HubInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/hub/inventory/HubInventory.java @@ -12,25 +12,25 @@ public class HubInventory extends InteractableInventory { public HubInventory(Player p) { super(InventoryType.CHEST_3_ROW, TranslatedComponent.assemble("hub#invTitle", p)); - setClickableItem( - ItemStack - .builder(Material.WRITABLE_BOOK) - .customName(TranslatedComponent.assemble("hub#create", p)) - .lore(TranslatedComponent.assemble("hub#create_description", p)) - .build(), - 12, - itemClick -> Room.createRoom(itemClick.getPlayer()), - true + this.setClickableItem( + ItemStack + .builder(Material.WRITABLE_BOOK) + .customName(TranslatedComponent.assemble("hub#create", p)) + .lore(TranslatedComponent.assemble("hub#create_description", p)) + .build(), + 12, + itemClick -> Room.createRoom(itemClick.getPlayer()), + true ); - setClickableItem( - ItemStack - .builder(Material.KNOWLEDGE_BOOK) - .customName(TranslatedComponent.assemble("hub#join", p)) - .lore(TranslatedComponent.assemble("hub#join_description", p)) - .build(), - 14, - itemClick -> itemClick.getPlayer().openInventory(new JoinInventory(itemClick.getPlayer())) + this.setClickableItem( + ItemStack + .builder(Material.KNOWLEDGE_BOOK) + .customName(TranslatedComponent.assemble("hub#join", p)) + .lore(TranslatedComponent.assemble("hub#join_description", p)) + .build(), + 14, + itemClick -> itemClick.getPlayer().openInventory(new JoinInventory(itemClick.getPlayer())) ); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/hub/inventory/JoinInventory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/hub/inventory/JoinInventory.java index 4244894..0fd70dc 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/hub/inventory/JoinInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/hub/inventory/JoinInventory.java @@ -1,11 +1,11 @@ package eu.mhsl.minenet.minigames.instance.hub.inventory; +import eu.mhsl.minenet.minigames.instance.hub.Hub; import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.message.Icon; import eu.mhsl.minenet.minigames.message.component.TranslatedComponent; import eu.mhsl.minenet.minigames.message.type.ChatMessage; import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory; -import eu.mhsl.minenet.minigames.instance.hub.Hub; import net.kyori.adventure.text.Component; import net.minestom.server.MinecraftServer; import net.minestom.server.entity.Player; @@ -21,23 +21,24 @@ import java.util.Locale; import java.util.Optional; public class JoinInventory extends InteractableInventory { - private String typedText = ""; private final String prefix = "Suche: "; + private String typedText = ""; public JoinInventory(Player p) { super(InventoryType.ANVIL, TranslatedComponent.assemble("hub#join_title", p)); - setClickableItem( - ItemStack.builder(Material.GREEN_STAINED_GLASS_PANE) - .customName(Component.text(prefix)) - .build(), - 0, - itemClick -> {} + this.setClickableItem( + ItemStack.builder(Material.GREEN_STAINED_GLASS_PANE) + .customName(Component.text(this.prefix)) + .build(), + 0, + itemClick -> { + } ); Hub.INSTANCE.eventNode().addListener(PlayerPacketEvent.class, event -> { - if (event.getPacket() instanceof ClientNameItemPacket packet) { - typedText = packet.itemName(); + if(event.getPacket() instanceof ClientNameItemPacket(String itemName)) { + this.typedText = itemName; } }); @@ -49,22 +50,22 @@ public class JoinInventory extends InteractableInventory { inventoryConditionResult.setCancel(true); player.closeInventory(); - typedText = formatInput(typedText); + this.typedText = this.formatInput(this.typedText); - Optional target = Room.getRoom(MinecraftServer.getConnectionManager().findOnlinePlayer(typedText)); + Optional target = Room.getRoom(MinecraftServer.getConnectionManager().findOnlinePlayer(this.typedText)); if(target.isPresent()) Room.setRoom(player, target.get()); else new ChatMessage(Icon.ERROR) .appendTranslated("hub#join_notFound") .appendSpace() - .quote(typedText.trim()) + .quote(this.typedText.trim()) .send(player); } private String formatInput(String raw) { - if(raw.startsWith(prefix)) { - raw = raw.split(prefix)[1]; + if(raw.startsWith(this.prefix)) { + raw = raw.split(this.prefix)[1]; } return raw.toLowerCase(Locale.ROOT).trim(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/room/Room.java b/src/main/java/eu/mhsl/minenet/minigames/instance/room/Room.java index cc2f0df..4e156ce 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/room/Room.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/room/Room.java @@ -1,16 +1,16 @@ package eu.mhsl.minenet.minigames.instance.room; import eu.mhsl.minenet.minigames.Resource; +import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.MineNetInstance; +import eu.mhsl.minenet.minigames.instance.Spawnable; +import eu.mhsl.minenet.minigames.instance.hub.Hub; +import eu.mhsl.minenet.minigames.instance.room.entity.GameSelector; import eu.mhsl.minenet.minigames.message.Icon; import eu.mhsl.minenet.minigames.message.type.ChatMessage; import eu.mhsl.minenet.minigames.score.tournament.Tournament; import eu.mhsl.minenet.minigames.util.CommonEventHandles; import eu.mhsl.minenet.minigames.util.MoveInstance; -import eu.mhsl.minenet.minigames.instance.Spawnable; -import eu.mhsl.minenet.minigames.instance.Dimension; -import eu.mhsl.minenet.minigames.instance.hub.Hub; -import eu.mhsl.minenet.minigames.instance.room.entity.GameSelector; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.GameMode; @@ -27,6 +27,24 @@ public class Room extends MineNetInstance implements Spawnable { private static final Set rooms = new HashSet<>(); private static final Map players = new WeakHashMap<>(); private static final Logger logger = Logger.getLogger("room"); + public final UUID uuid = UUID.randomUUID(); + public final boolean apiDriven; + private final Tournament tournament = new Tournament(); + private Player owner; + private GameSelector gameSelector; + + private Room(Player owner) { + super(Dimension.THE_END.key); + this.apiDriven = false; + this.construct(); + this.setOwner(owner); + } + + protected Room() { + super(Dimension.THE_END.key); + this.apiDriven = true; + this.construct(); + } public static Room createRoom(Player owner) { logger.info("Creating room with owner " + owner.getUsername()); @@ -82,24 +100,6 @@ public class Room extends MineNetInstance implements Spawnable { return rooms; } - private Player owner; - public final UUID uuid = UUID.randomUUID(); - public final boolean apiDriven; - private GameSelector gameSelector; - private final Tournament tournament = new Tournament(); - private Room(Player owner) { - super(Dimension.THE_END.key); - this.apiDriven = false; - this.construct(); - this.setOwner(owner); - } - - protected Room() { - super(Dimension.THE_END.key); - this.apiDriven = true; - this.construct(); - } - private void construct() { MinecraftServer.getInstanceManager().registerInstance(this); this.setChunkLoader(new AnvilLoader(Resource.LOBBY_MAP.getPath())); @@ -126,12 +126,12 @@ public class Room extends MineNetInstance implements Spawnable { if(p != this.owner) return; this.getAllMembers().stream() - .filter(player -> player != p) // exclude the current leaving owner - .findFirst() - .ifPresentOrElse( - this::setOwner, - () -> Room.getRoom(p).ifPresent(Room::deleteRoom) // delete room if no players are left - ); + .filter(player -> player != p) // exclude the current leaving owner + .findFirst() + .ifPresentOrElse( + this::setOwner, + () -> Room.getRoom(p).ifPresent(Room::deleteRoom) // delete room if no players are left + ); Room.unsetRoom(p); @@ -159,8 +159,8 @@ public class Room extends MineNetInstance implements Spawnable { public Set getAllMembers() { return players.keySet().stream() - .filter(player -> getRoom(player).orElse(null) == this) - .collect(Collectors.toSet()); + .filter(player -> getRoom(player).orElse(null) == this) + .collect(Collectors.toSet()); } public Tournament getTournament() { diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/room/entity/GameSelector.java b/src/main/java/eu/mhsl/minenet/minigames/instance/room/entity/GameSelector.java index 8ad6ac9..ffdd17c 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/room/entity/GameSelector.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/room/entity/GameSelector.java @@ -14,10 +14,11 @@ import org.jetbrains.annotations.NotNull; public class GameSelector extends InteractableEntity { final AbstractVillagerMeta abstractVillagerMeta; + public GameSelector() { super(EntityType.VILLAGER); - abstractVillagerMeta = (AbstractVillagerMeta) this.getEntityMeta(); + this.abstractVillagerMeta = (AbstractVillagerMeta) this.getEntityMeta(); } @Override @@ -32,10 +33,10 @@ public class GameSelector extends InteractableEntity { @Override public void onInteract(@NotNull PlayerEntityInteractEvent playerEntityInteractEvent) { - Room room = (Room) instance; + Room room = (Room) this.instance; if(playerEntityInteractEvent.getPlayer() != room.getOwner()) { - abstractVillagerMeta.setHeadShakeTimer(20); + this.abstractVillagerMeta.setHeadShakeTimer(20); new ChatMessage(Icon.ERROR) .appendTranslated("room#onlyOwnerCanStart") diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameSelectInventory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameSelectInventory.java index cc3da93..f8709ec 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameSelectInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/room/inventory/MinigameSelectInventory.java @@ -19,25 +19,26 @@ import java.util.List; public class MinigameSelectInventory extends InteractableInventory { final private Room room; final private Player p; + public MinigameSelectInventory(Room room, Player p) { super(InventoryType.CHEST_6_ROW, TranslatedComponent.assemble("room#invTitle", p)); this.room = room; this.p = p; InventoryItemAlignment itemAlignment = new InventoryItemAlignment(GameType.values().length, 1); - for (GameType type : GameType.values()) { - setClickableItem( - ItemStack.builder(type.getIcon()) - .customName(type.getTitle().getAssembled(p)) - .lore(type.getDescription().addWrap().getWrappedAssembled(p)) - .build(), - itemAlignment.next().get(), - itemClick -> drawGames(type) + for(GameType type : GameType.values()) { + this.setClickableItem( + ItemStack.builder(type.getIcon()) + .customName(type.getTitle().getAssembled(p)) + .lore(type.getDescription().addWrap().getWrappedAssembled(p)) + .build(), + itemAlignment.next().get(), + itemClick -> this.drawGames(type) ); } for(int i = 9; i <= 17; i++) { - setDummyItem(Material.CYAN_STAINED_GLASS_PANE, i); + this.setDummyItem(Material.CYAN_STAINED_GLASS_PANE, i); } @@ -45,23 +46,23 @@ public class MinigameSelectInventory extends InteractableInventory { private void drawGames(GameType type) { for(int i = 18; i <= 53; i++) { - setDummyItem(Material.AIR, i); + this.setDummyItem(Material.AIR, i); } int offset = 18; List games = Arrays.stream(GameList.values()).filter(gameList -> gameList.getType().equals(type)).toList(); InventoryItemAlignment itemAlignment = new InventoryItemAlignment(games.size(), 4); - for (GameList game : games) { + for(GameList game : games) { GameFactory gameFactory = game.getFactory(); - setClickableItem( - ItemStack.builder(gameFactory.symbol()) - .customName(gameFactory.name().getAssembled(p)) - .lore(gameFactory.description().addWrap().getWrappedAssembled(p)) - .build(), - offset + itemAlignment.next().get(), - itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(room, itemClick.getPlayer(), gameFactory)) + this.setClickableItem( + ItemStack.builder(gameFactory.symbol()) + .customName(gameFactory.name().getAssembled(this.p)) + .lore(gameFactory.description().addWrap().getWrappedAssembled(this.p)) + .build(), + offset + itemAlignment.next().get(), + itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(this.room, itemClick.getPlayer(), gameFactory)) ); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/transfer/Transfer.java b/src/main/java/eu/mhsl/minenet/minigames/instance/transfer/Transfer.java index 1b527c7..0c63b57 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/transfer/Transfer.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/transfer/Transfer.java @@ -11,8 +11,8 @@ import net.minestom.server.instance.block.Block; public class Transfer extends MineNetInstance implements Spawnable { public Transfer() { super(Dimension.THE_END.key); - eventNode().addListener(PlayerMoveEvent.class, CommonEventHandles::cancel); - setBlock(0, 0, 0, Block.BARRIER); + this.eventNode().addListener(PlayerMoveEvent.class, CommonEventHandles::cancel); + this.setBlock(0, 0, 0, Block.BARRIER); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/lang/Lang.java b/src/main/java/eu/mhsl/minenet/minigames/lang/Lang.java index 2dd6d49..1da619f 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/lang/Lang.java +++ b/src/main/java/eu/mhsl/minenet/minigames/lang/Lang.java @@ -14,17 +14,17 @@ public class Lang { } public void addEntry(String key, String value) { - entries.put(key, value); + this.entries.put(key, value); } public String getEntry(String key) { - return entries.computeIfAbsent(key, s -> { + return this.entries.computeIfAbsent(key, s -> { Logger.getLogger("localisation").warning(s + " is not known by translation files!"); return new DummyLang().getEntry(s); }); } public String getLangId() { - return langId; + return this.langId; } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/lang/Languages.java b/src/main/java/eu/mhsl/minenet/minigames/lang/Languages.java index 0c70f86..a73f37c 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/lang/Languages.java +++ b/src/main/java/eu/mhsl/minenet/minigames/lang/Languages.java @@ -8,35 +8,37 @@ import java.nio.file.Files; import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.logging.Logger; public class Languages { - private static Languages instance; + public static final String defaultLanguage = "de_de"; private static final Logger logger = Logger.getLogger("translation"); - - + private static Languages instance; private final Map languages = new HashMap<>(); - public static final String defaultLanguage = "de_de"; + private Languages() { + this.readAll(); + } + public static Languages getInstance() { if(instance == null) instance = new Languages(); return instance; } - private Languages() { - readAll(); + public Lang getLanguage(Player p) { + return this.getLanguage(p.getSettings().locale().toString()); } - public Lang getLanguage(Player p) { - return getLanguage(p.getSettings().locale().toString()); // TODO funktioniert die locale noch? - } public Lang getLanguage(String mapId) { - return languages.computeIfAbsent(mapId.toLowerCase(), unused -> languages.computeIfAbsent(defaultLanguage, (key) -> new DummyLang())); + return this.languages.computeIfAbsent(mapId.toLowerCase(), unused -> this.languages.computeIfAbsent(defaultLanguage, (key) -> new DummyLang())); } private void readAll() { File locales = new File(Resource.LOCALES.getPath().toString()); - File[] files = Arrays.stream(locales.listFiles(File::canRead)).filter(file -> file.getName().endsWith("map.csv")).toArray(File[]::new); + File[] files = Arrays.stream(Objects.requireNonNull(locales.listFiles(File::canRead))) + .filter(file -> file.getName().endsWith("map.csv")) + .toArray(File[]::new); if(files.length == 0) { logger.warning("Failed to find any Language-files!"); @@ -66,20 +68,22 @@ public class Languages { index++; if(langId.endsWith("map")) continue; - languages.computeIfAbsent(langId, Lang::new); - Lang lang = languages.get(langId); + this.languages.computeIfAbsent(langId, Lang::new); + Lang lang = this.languages.get(langId); langColumn.put(index, lang); - languages.put(langId, lang); + this.languages.put(langId, lang); } } else if(columns[0].startsWith("ns:")) { - if(!computedFileHeader) throw new IllegalStateException("Cannot compute namespace data before file-header was red!"); + if(!computedFileHeader) + throw new IllegalStateException("Cannot compute namespace data before file-header was red!"); namespace = columns[0].split(":")[1]; } else { // file contents - if(!computedFileHeader) throw new IllegalStateException("Cannot compute translation data before file-header was red!"); + if(!computedFileHeader) + throw new IllegalStateException("Cannot compute translation data before file-header was red!"); int index = 0; String mapId = ""; for(String translation : columns) { @@ -97,7 +101,7 @@ public class Languages { } } - } catch (Exception e) { + } catch(Exception e) { logger.warning("Exception while parsing lang-files: " + e.getMessage()); e.printStackTrace(); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/message/Countdown.java b/src/main/java/eu/mhsl/minenet/minigames/message/Countdown.java index 0e7df40..e1fb6bd 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/message/Countdown.java +++ b/src/main/java/eu/mhsl/minenet/minigames/message/Countdown.java @@ -9,8 +9,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; public class Countdown { - public Countdown(Class messageType) { - } public CompletableFuture countdown(Audience targets, int from, Consumer modifier) { CompletableFuture future = new CompletableFuture<>(); AtomicInteger count = new AtomicInteger(from); @@ -23,7 +21,7 @@ public class Countdown { CountdownModifier countdownModifier = new CountdownModifier(count.getAndDecrement()); modifier.accept(countdownModifier); countdownModifier.message.send(targets); - } catch (Exception e) { + } catch(Exception e) { throw new RuntimeException(e); } return TaskSchedule.seconds(1); @@ -33,8 +31,9 @@ public class Countdown { public static class CountdownModifier { - public TranslatableMessage message; public final int timeLeft; + public TranslatableMessage message; + public CountdownModifier(int timeLeft) { this.timeLeft = timeLeft; } diff --git a/src/main/java/eu/mhsl/minenet/minigames/message/Icon.java b/src/main/java/eu/mhsl/minenet/minigames/message/Icon.java index 0879e21..8ed8fbf 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/message/Icon.java +++ b/src/main/java/eu/mhsl/minenet/minigames/message/Icon.java @@ -3,6 +3,7 @@ package eu.mhsl.minenet.minigames.message; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +@SuppressWarnings("UnnecessaryUnicodeEscape") public enum Icon { SCIENCE("\uD83E\uDDEA", NamedTextColor.LIGHT_PURPLE), STAR("\u2606", NamedTextColor.GOLD), @@ -15,20 +16,21 @@ public enum Icon { private final String symbol; private final NamedTextColor color; + Icon(String symbol, NamedTextColor color) { this.symbol = symbol; this.color = color; } public String getSymbol() { - return symbol; + return this.symbol; } public NamedTextColor getColor() { - return color; + return this.color; } public Component getComponent() { - return Component.text(getSymbol(), getColor()); + return Component.text(this.getSymbol(), this.getColor()); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/message/TranslatableMessage.java b/src/main/java/eu/mhsl/minenet/minigames/message/TranslatableMessage.java index a485896..d51bab0 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/message/TranslatableMessage.java +++ b/src/main/java/eu/mhsl/minenet/minigames/message/TranslatableMessage.java @@ -14,75 +14,75 @@ import java.util.ArrayList; import java.util.List; public abstract class TranslatableMessage implements Sendable { - protected int indention = 0; final List chain = new ArrayList<>(); + protected int indention = 0; public TranslatableMessage() { } public TranslatableMessage appendStatic(Component component) { - chain.add(component); + this.chain.add(component); return this; } public TranslatableMessage appendStatic(String text) { - chain.add(Component.text(text)); + this.chain.add(Component.text(text)); return this; } public TranslatableMessage appendSpace() { - chain.add(Component.text(" ")); + this.chain.add(Component.text(" ")); return this; } public TranslatableMessage appendTranslated(String mapId) { - chain.add(TranslatedComponent.byId(mapId).setColor(NamedTextColor.WHITE)); + this.chain.add(TranslatedComponent.byId(mapId).setColor(NamedTextColor.WHITE)); return this; } public TranslatableMessage appendTranslated(String mapId, NamedTextColor color) { - chain.add(TranslatedComponent.byId(mapId).setColor(color)); + this.chain.add(TranslatedComponent.byId(mapId).setColor(color)); return this; } public TranslatableMessage appendTranslated(TranslatedComponent component) { - chain.add(component); + this.chain.add(component); return this; } public TranslatableMessage list(List list) { - newLine(); + this.newLine(); list.forEach(s -> { - chain.add(Component.text(s)); - newLine(); + this.chain.add(Component.text(s)); + this.newLine(); }); return this; } public TranslatableMessage numberedList(List list) { - newLine(); - for (int i = 0; i < list.size(); i++) { - appendStatic(i+1 + ". "); - appendStatic(list.get(i)); - newLine(); + this.newLine(); + for(int i = 0; i < list.size(); i++) { + this.appendStatic(i + 1 + ". "); + this.appendStatic(list.get(i)); + this.newLine(); } return this; } public TranslatableMessage pipe() { - chain.add(Component.text(" | ", NamedTextColor.DARK_GRAY)); + this.chain.add(Component.text(" | ", NamedTextColor.DARK_GRAY)); return this; } public TranslatableMessage quote(String text) { - chain.add(Component.text("'" + text + "'")); + this.chain.add(Component.text("'" + text + "'")); return this; } public TranslatableMessage newLine() { - chain.add(Component.text("\n")); - this.appendStatic(" ".repeat(indention)); + this.chain.add(Component.text("\n")); + this.appendStatic(" ".repeat(this.indention)); return this; } @@ -102,15 +102,15 @@ public abstract class TranslatableMessage implements Sendable { } public TranslatableMessage resetIndention() { - indention = 0; + this.indention = 0; return this; } - public Component build(Player p) { ComponentBuilder out = Component.text(); - chain.forEach(componentLike -> { - if(componentLike == null) componentLike = Component.text("NULL", NamedTextColor.RED, TextDecoration.ITALIC); + this.chain.forEach(componentLike -> { + if(componentLike == null) + componentLike = Component.text("NULL", NamedTextColor.RED, TextDecoration.ITALIC); if(componentLike instanceof Translatable t) t.assemble(p); out.append(componentLike); }); diff --git a/src/main/java/eu/mhsl/minenet/minigames/message/component/NamespacedTranslatable.java b/src/main/java/eu/mhsl/minenet/minigames/message/component/NamespacedTranslatable.java deleted file mode 100644 index a5bae9e..0000000 --- a/src/main/java/eu/mhsl/minenet/minigames/message/component/NamespacedTranslatable.java +++ /dev/null @@ -1,14 +0,0 @@ -package eu.mhsl.minenet.minigames.message.component; - - -public class NamespacedTranslatable { - private final String namespace; - - public NamespacedTranslatable(String namespace) { - this.namespace = namespace; - } - - public TranslatedComponent get(String mapId) { - return TranslatedComponent.byId(namespace + mapId); - } -} diff --git a/src/main/java/eu/mhsl/minenet/minigames/message/component/TranslatedComponent.java b/src/main/java/eu/mhsl/minenet/minigames/message/component/TranslatedComponent.java index 311635f..3c5cc39 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/message/component/TranslatedComponent.java +++ b/src/main/java/eu/mhsl/minenet/minigames/message/component/TranslatedComponent.java @@ -18,6 +18,10 @@ public class TranslatedComponent implements ComponentLike, Translatable { private NamedTextColor color; private int wrap = 0; + private TranslatedComponent(String mapId) { + this.mapId = mapId; + } + public static TranslatedComponent byId(String mapId) { return new TranslatedComponent(mapId); } @@ -26,20 +30,17 @@ public class TranslatedComponent implements ComponentLike, Translatable { return new TranslatedComponent(mapid).getAssembled(p); } - private TranslatedComponent(String mapId) { - this.mapId = mapId; - } - public void assemble(Player p) { - result = Languages.getInstance().getLanguage(p).getEntry(mapId); - if(wrap > 0) { - result = WordUtils.wrap(result, wrap, "\n", false); + this.result = Languages.getInstance().getLanguage(p).getEntry(this.mapId); + if(this.wrap > 0) { + this.result = WordUtils.wrap(this.result, this.wrap, "\n", false); } } public TranslatedComponent addWrap() { return this.addWrap(30); } + public TranslatedComponent addWrap(int wrap) { this.wrap = wrap; return this; @@ -47,12 +48,12 @@ public class TranslatedComponent implements ComponentLike, Translatable { public Component getAssembled(Player p) { this.assemble(p); - return asComponent(); + return this.asComponent(); } public List getWrappedAssembled(Player p) { this.assemble(p); - return asWrappedComponent(); + return this.asWrappedComponent(); } public TranslatedComponent setColor(NamedTextColor color) { @@ -62,16 +63,16 @@ public class TranslatedComponent implements ComponentLike, Translatable { @Override public @NotNull Component asComponent() { - return this.componentFromString(result); + return this.componentFromString(this.result); } public List asWrappedComponent() { - return Arrays.stream(result.split("\n")).map(this::componentFromString).toList(); + return Arrays.stream(this.result.split("\n")).map(this::componentFromString).toList(); } private Component componentFromString(String data) { - if(color != null) - return Component.text(data, color); + if(this.color != null) + return Component.text(data, this.color); else return Component.text(data); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/message/type/ActionBarMessage.java b/src/main/java/eu/mhsl/minenet/minigames/message/type/ActionBarMessage.java index 622e48e..f5123aa 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/message/type/ActionBarMessage.java +++ b/src/main/java/eu/mhsl/minenet/minigames/message/type/ActionBarMessage.java @@ -6,6 +6,6 @@ import net.minestom.server.entity.Player; public class ActionBarMessage extends TranslatableMessage { @Override public void send(Player p) { - p.sendActionBar(build(p)); + p.sendActionBar(this.build(p)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/message/type/ChatMessage.java b/src/main/java/eu/mhsl/minenet/minigames/message/type/ChatMessage.java index 62bf22d..55762c7 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/message/type/ChatMessage.java +++ b/src/main/java/eu/mhsl/minenet/minigames/message/type/ChatMessage.java @@ -6,25 +6,25 @@ import net.minestom.server.entity.Player; public class ChatMessage extends TranslatableMessage { public ChatMessage() { - construct(Icon.CHAT, false); + this.construct(Icon.CHAT, false); } public ChatMessage(Icon icon) { - construct(icon, false); + this.construct(icon, false); } public ChatMessage(Icon icon, boolean preSpace) { - construct(icon, preSpace); + this.construct(icon, preSpace); } private void construct(Icon icon, boolean preSpace) { if(preSpace) { super.appendStatic(" "); - pipe(); + this.pipe(); super.appendStatic("\n"); } - appendStatic(icon.getComponent()); - pipe(); + this.appendStatic(icon.getComponent()); + this.pipe(); } @Override @@ -37,6 +37,6 @@ public class ChatMessage extends TranslatableMessage { } public void send(Player p) { - p.sendMessage(build(p)); + p.sendMessage(this.build(p)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/message/type/TitleMessage.java b/src/main/java/eu/mhsl/minenet/minigames/message/type/TitleMessage.java index 0cc484a..11ddef5 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/message/type/TitleMessage.java +++ b/src/main/java/eu/mhsl/minenet/minigames/message/type/TitleMessage.java @@ -18,13 +18,15 @@ public class TitleMessage extends TranslatableMessage { private SubtitleMessage subtitle = new SubtitleMessage(); public TitleMessage() { - times = Title.Times.times(Duration.ZERO, Duration.ofSeconds(1), Duration.ZERO); + this.times = Title.Times.times(Duration.ZERO, Duration.ofSeconds(1), Duration.ZERO); } + public TitleMessage(Duration stay) { - times = Title.Times.times(Duration.ZERO, stay, Duration.ZERO); + this.times = Title.Times.times(Duration.ZERO, stay, Duration.ZERO); } + public TitleMessage(Duration stay, Duration fade) { - times = Title.Times.times(fade, stay, fade); + this.times = Title.Times.times(fade, stay, fade); } public void setTimes(Title.Times times) { @@ -33,7 +35,7 @@ public class TitleMessage extends TranslatableMessage { public TranslatableMessage subtitle(Consumer callback) { this.subtitle = new SubtitleMessage(); - callback.accept(subtitle); + callback.accept(this.subtitle); return this; } @@ -42,17 +44,17 @@ public class TitleMessage extends TranslatableMessage { Audience.audience(p).showTitle(new Title() { @Override public @NotNull Component title() { - return build(p); + return TitleMessage.this.build(p); } @Override public @NotNull Component subtitle() { - return subtitle.build(p); + return TitleMessage.this.subtitle.build(p); } @Override public @Nullable Times times() { - return times; + return TitleMessage.this.times; } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/FirstWinsScore.java b/src/main/java/eu/mhsl/minenet/minigames/score/FirstWinsScore.java index bc505dd..16a2886 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/FirstWinsScore.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/FirstWinsScore.java @@ -10,7 +10,7 @@ import java.util.Set; public class FirstWinsScore extends Score { @Override public void insertResultImplementation(Set p) { - getScores().add(p); + this.getScores().add(p); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/LastWinsScore.java b/src/main/java/eu/mhsl/minenet/minigames/score/LastWinsScore.java index c37cb96..a93e173 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/LastWinsScore.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/LastWinsScore.java @@ -10,7 +10,7 @@ import java.util.Set; public class LastWinsScore extends Score { @Override public void insertResultImplementation(Set p) { - getScores().addFirst(p); + this.getScores().addFirst(p); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/LowestPointsWinScore.java b/src/main/java/eu/mhsl/minenet/minigames/score/LowestPointsWinScore.java index ea763a3..384e35b 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/LowestPointsWinScore.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/LowestPointsWinScore.java @@ -11,19 +11,19 @@ import java.util.Set; public class LowestPointsWinScore extends PointsWinScore { @Override protected void insertResultImplementation(Set p, int currentPoints) { - Set combined = scoreOrder.entrySet().stream() - .filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints)) - .map(Map.Entry::getKey) - .findFirst() - .orElseGet(() -> { - Set s = new HashSet<>(); - scoreOrder.put(s, currentPoints); - return s; - }); + Set combined = this.scoreOrder.entrySet().stream() + .filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints)) + .map(Map.Entry::getKey) + .findFirst() + .orElseGet(() -> { + Set s = new HashSet<>(); + this.scoreOrder.put(s, currentPoints); + return s; + }); combined.addAll(p); this.scoreOrder = MapUtil.sortReversedByValue(this.scoreOrder); - getScores().clear(); - this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player)); + this.getScores().clear(); + this.scoreOrder.forEach((player, integer) -> this.getScores().addFirst(player)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/PointsWinScore.java b/src/main/java/eu/mhsl/minenet/minigames/score/PointsWinScore.java index 4068195..2f50458 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/PointsWinScore.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/PointsWinScore.java @@ -16,20 +16,20 @@ public class PointsWinScore extends Score { @Override protected void insertResultImplementation(Set p, int currentPoints) { - Set combined = scoreOrder.entrySet().stream() + Set combined = this.scoreOrder.entrySet().stream() .filter(entrySet -> Objects.equals(entrySet.getValue(), currentPoints)) .map(Map.Entry::getKey) .findFirst() .orElseGet(() -> { Set s = new HashSet<>(); - scoreOrder.put(s, currentPoints); + this.scoreOrder.put(s, currentPoints); return s; }); combined.addAll(p); this.scoreOrder = MapUtil.sortByValue(this.scoreOrder); - getScores().clear(); - this.scoreOrder.forEach((player, integer) -> getScores().addFirst(player)); + this.getScores().clear(); + this.scoreOrder.forEach((player, integer) -> this.getScores().addFirst(player)); } @Override @@ -39,32 +39,32 @@ public class PointsWinScore extends Score { @Override public void setDone() { - if(isClosed()) return; - close(); + if(this.isClosed()) return; + this.close(); new ChatMessage(Icon.STAR, true) .appendTranslated("score#result") .newLine() .indent() .numberedList( - getScores() + this.getScores() .stream() .filter(players -> !players.stream() .filter(player -> !player.getUsername().isBlank()) .toList() .isEmpty()) - .map(players -> players.stream() - .map(Player::getUsername) - .sorted() - .collect(Collectors.joining(", ")) - + " : " + scoreOrder.get(players) - ).toList() + .map(players -> players.stream() + .map(Player::getUsername) + .sorted() + .collect(Collectors.joining(", ")) + + " : " + this.scoreOrder.get(players) + ).toList() ) .undent() .newLine() .appendTranslated("score#thanks") - .send(instance.getPlayers()); + .send(this.instance.getPlayers()); - instance.stop(); + this.instance.stop(); } @Override diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/Score.java b/src/main/java/eu/mhsl/minenet/minigames/score/Score.java index dce3e92..cd7982d 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/Score.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/Score.java @@ -16,12 +16,13 @@ import java.util.Set; import java.util.stream.Collectors; public abstract class Score { + private final List> scores = new ArrayList<>(); + protected Game instance; private int ignoreLastPlayers = 0; private boolean isClosed = false; - protected Game instance; - private final List> scores = new ArrayList<>(); - public Score() {} + public Score() { + } protected abstract void insertResultImplementation(Set p); @@ -39,28 +40,28 @@ public abstract class Score { public void attachListeners() { this.instance.eventNode() - .addListener(AddEntityToInstanceEvent.class, addEntityToInstanceEvent -> checkGameEnd()) - .addListener(RemoveEntityFromInstanceEvent.class, addEntityToInstanceEvent -> checkGameEnd()) - .addListener(PlayerDisconnectEvent.class, addEntityToInstanceEvent -> checkGameEnd()); + .addListener(AddEntityToInstanceEvent.class, addEntityToInstanceEvent -> this.checkGameEnd()) + .addListener(RemoveEntityFromInstanceEvent.class, addEntityToInstanceEvent -> this.checkGameEnd()) + .addListener(PlayerDisconnectEvent.class, addEntityToInstanceEvent -> this.checkGameEnd()); } protected void checkGameEnd() { if(this.isClosed()) return; - if(!instance.isRunning()) return; - if(instance.getPlayers().isEmpty()) return; - if(resultCount() >= instance.getPlayers().size() - ignoreLastPlayers) { - if(ignoreLastPlayers > 0) { - insertRemainingPlayers(instance.getPlayers()); + if(!this.instance.isRunning()) return; + if(this.instance.getPlayers().isEmpty()) return; + if(this.resultCount() >= this.instance.getPlayers().size() - this.ignoreLastPlayers) { + if(this.ignoreLastPlayers > 0) { + this.insertRemainingPlayers(this.instance.getPlayers()); } - setDone(); + this.setDone(); } } protected abstract TranslatableMessage scoreMessage(); public void insertRemainingPlayers(Set players) { - this.insertResultImplementation(players.stream().filter(p -> !hasResult(p)).collect(Collectors.toSet())); - setDone(); + this.insertResultImplementation(players.stream().filter(p -> !this.hasResult(p)).collect(Collectors.toSet())); + this.setDone(); } public boolean hasResult(Player p) { @@ -72,49 +73,47 @@ public abstract class Score { } public void setDone() { - if(isClosed) return; - isClosed = true; + if(this.isClosed) return; + this.isClosed = true; new ChatMessage(Icon.STAR, true) - .appendTranslated("score#result") - .newLine() - .indent() - .numberedList( - getScores() - .stream() - .map(players -> players - .stream() - .map(Player::getUsername) - .collect(Collectors.joining(", ")) - ) - .toList() - ) - .undent() - .newLine() - .appendTranslated("score#thanks") - .send(instance.getPlayers()); + .appendTranslated("score#result") + .newLine() + .indent() + .numberedList( + this.getScores() + .stream() + .map(players -> players + .stream() + .map(Player::getUsername) + .collect(Collectors.joining(", ")) + ) + .toList() + ) + .undent() + .newLine() + .appendTranslated("score#thanks") + .send(this.instance.getPlayers()); - instance.stop(); + this.instance.stop(); } private void insertResultProcessor(Player p, Runnable callback) { - if(hasResult(p)) return; + if(this.hasResult(p)) return; this.scoreMessage().send(p); callback.run(); this.checkGameEnd(); } public boolean isClosed() { - return isClosed; + return this.isClosed; } - public void close() { isClosed = true; } - - protected void onGameEnd() { - this.instance.stop(); + public void close() { + this.isClosed = true; } public List> getScores() { - return scores; + return this.scores; } public void setInstance(Game instance) { @@ -122,7 +121,7 @@ public abstract class Score { } public int getIgnoreLastPlayers() { - return ignoreLastPlayers; + return this.ignoreLastPlayers; } public void setIgnoreLastPlayers(int ignoreLastPlayers) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/tournament/Rewards.java b/src/main/java/eu/mhsl/minenet/minigames/score/tournament/Rewards.java index ed62832..a17aed0 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/tournament/Rewards.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/tournament/Rewards.java @@ -4,5 +4,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; -public record Rewards(String memorialMaterial, String memorialTitle, String memorialLore, List memorials, String material, Map rewards) { +public record Rewards(String memorialMaterial, String memorialTitle, String memorialLore, List memorials, + String material, Map rewards) { } diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/tournament/Tournament.java b/src/main/java/eu/mhsl/minenet/minigames/score/tournament/Tournament.java index 03040de..e91523e 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/tournament/Tournament.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/tournament/Tournament.java @@ -15,23 +15,14 @@ public class Tournament { this.gameScores.add(score); } - public int getScoreCount() { - return this.gameScores.size(); - } - - public void reset() { - this.gameScores.clear(); - } - - public Map getGameScores() { Map data = new HashMap<>(); - gameScores.forEach(game -> { + this.gameScores.forEach(game -> { int count = 0; - for (Set players : game.getScores()) { + for(Set players : game.getScores()) { count++; - for (Player player : players) { - int points = (game.getScores().size() - count) + boost(count, game.getScores().size()); + for(Player player : players) { + int points = (game.getScores().size() - count) + this.boost(count, game.getScores().size()); data.computeIfPresent(player, (existingPlayer, existingPoints) -> existingPoints + points); data.computeIfAbsent(player, newPlayer -> points); @@ -44,7 +35,7 @@ public class Tournament { public Rewards getRewards() { Map itemCount = new HashMap<>(); int count = 0; - for (Set players : getPlaces()) { + for(Set players : this.getPlaces()) { if(count >= this.rewardConfiguration.rewardCount().size()) break; for(Player player : players) { itemCount.put(player.getUuid(), this.rewardConfiguration.rewardCount().get(count)); @@ -53,24 +44,24 @@ public class Tournament { } return new Rewards( - this.memorialConfiguration.memorialMaterial().namespace().value(), - this.memorialConfiguration.memorialTitle(), - this.memorialConfiguration.memorialLore(), - getGameScores().keySet().stream().map(Player::getUuid).toList(), - this.rewardConfiguration.item().namespace().value(), - itemCount + this.memorialConfiguration.memorialMaterial().namespace().value(), + this.memorialConfiguration.memorialTitle(), + this.memorialConfiguration.memorialLore(), + this.getGameScores().keySet().stream().map(Player::getUuid).toList(), + this.rewardConfiguration.item().namespace().value(), + itemCount ); } public List> getPlaces() { List> players = new ArrayList<>( - getGameScores().entrySet().stream() - .collect( - Collectors.groupingBy( - Map.Entry::getValue, - Collectors.mapping(Map.Entry::getKey, Collectors.toSet()) - ) - ).values() + this.getGameScores().entrySet().stream() + .collect( + Collectors.groupingBy( + Map.Entry::getValue, + Collectors.mapping(Map.Entry::getKey, Collectors.toSet()) + ) + ).values() ); Collections.reverse(players); @@ -78,7 +69,7 @@ public class Tournament { } private int boost(int selfPlace, int placeCount) { - return switch (selfPlace) { + return switch(selfPlace) { case 0 -> placeCount / 3; case 1 -> placeCount / 4; case 2 -> placeCount / 5; diff --git a/src/main/java/eu/mhsl/minenet/minigames/score/tournament/TournamentDisplay.java b/src/main/java/eu/mhsl/minenet/minigames/score/tournament/TournamentDisplay.java index dab65df..16d5495 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/score/tournament/TournamentDisplay.java +++ b/src/main/java/eu/mhsl/minenet/minigames/score/tournament/TournamentDisplay.java @@ -8,7 +8,8 @@ import eu.mhsl.minenet.minigames.message.Icon; import eu.mhsl.minenet.minigames.message.type.ChatMessage; import net.minestom.server.MinecraftServer; import net.minestom.server.coordinate.Pos; -import net.minestom.server.entity.*; +import net.minestom.server.entity.GameMode; +import net.minestom.server.entity.Player; import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.instance.anvil.AnvilLoader; @@ -20,35 +21,35 @@ public class TournamentDisplay extends MineNetInstance implements Spawnable { private final List> places; private final Tournament tournament; - private final Pos[] placePositions = new Pos[] { - new Pos(8.5, -56, 22.5, 180, 0), - new Pos(12.5, -57, 20.5, 180, 0), - new Pos(4.5, -58, 20.5, 180, 0) + private final Pos[] placePositions = new Pos[]{ + new Pos(8.5, -56, 22.5, 180, 0), + new Pos(12.5, -57, 20.5, 180, 0), + new Pos(4.5, -58, 20.5, 180, 0) }; public TournamentDisplay(Tournament tournament) { super(Dimension.OVERWORLD.key); - setChunkLoader(new AnvilLoader(Resource.RESULT_DISPLAY.getPath())); + this.setChunkLoader(new AnvilLoader(Resource.RESULT_DISPLAY.getPath())); this.places = tournament.getPlaces(); this.tournament = tournament; this.places.forEach(players -> players.forEach(player -> player.setGameMode(GameMode.ADVENTURE))); - eventNode().addListener(PlayerMoveEvent.class, playerMoveEvent -> { - if(isOnDisplay(playerMoveEvent.getPlayer()) && !playerMoveEvent.getNewPosition().sameBlock(placePositions[getRankPosition(playerMoveEvent.getPlayer())])) { + this.eventNode().addListener(PlayerMoveEvent.class, playerMoveEvent -> { + if(this.isOnDisplay(playerMoveEvent.getPlayer()) && !playerMoveEvent.getNewPosition().sameBlock(this.placePositions[this.getRankPosition(playerMoveEvent.getPlayer())])) { playerMoveEvent.setCancelled(true); } }); } private boolean isOnDisplay(Player player) { - if(getRankPosition(player) == -1) return false; - return getRankPosition(player) < this.placePositions.length; + if(this.getRankPosition(player) == -1) return false; + return this.getRankPosition(player) < this.placePositions.length; } private int getRankPosition(Player player) { - for (int i = 0; i < places.size(); i++) { - if (places.get(i).contains(player)) return i; + for(int i = 0; i < this.places.size(); i++) { + if(this.places.get(i).contains(player)) return i; } return -1; } @@ -56,17 +57,17 @@ public class TournamentDisplay extends MineNetInstance implements Spawnable { @Override protected boolean onPlayerJoin(Player p) { MinecraftServer.getSchedulerManager().scheduleNextTick(() -> { - if(isOnDisplay(p)) { + if(this.isOnDisplay(p)) { p.sendMessage("You are on Display!"); - p.teleport(placePositions[getRankPosition(p)]); + p.teleport(this.placePositions[this.getRankPosition(p)]); } }); List players = this.places.stream() - .flatMap(s -> s.stream().sorted(Comparator.comparing(Player::getUsername))) - .toList(); + .flatMap(s -> s.stream().sorted(Comparator.comparing(Player::getUsername))) + .toList(); new ChatMessage(Icon.STAR) - .list(players.stream().map(player -> String.format("%d. %s - %s Punkte", this.getRankPosition(player)+1, player.getUsername(), tournament.getGameScores().get(player))).toList()) - .send(p); + .list(players.stream().map(player -> String.format("%d. %s - %s Punkte", this.getRankPosition(player) + 1, player.getUsername(), this.tournament.getGameScores().get(player))).toList()) + .send(p); return false; } diff --git a/src/main/java/eu/mhsl/minenet/minigames/server/tasks/TablistUpdateTask.java b/src/main/java/eu/mhsl/minenet/minigames/server/tasks/TablistUpdateTask.java index 4422c6d..4f5d306 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/server/tasks/TablistUpdateTask.java +++ b/src/main/java/eu/mhsl/minenet/minigames/server/tasks/TablistUpdateTask.java @@ -13,21 +13,21 @@ public class TablistUpdateTask implements Runnable { @Override public void run() { Collection players = MinecraftServer.getConnectionManager().getOnlinePlayers(); - if (players.isEmpty()) return; + if(players.isEmpty()) return; final Component header = - Component.newline() - .append(Component.text("MineNet Network", NamedTextColor.GOLD)) - .append(Component.newline()).append(Component.text("Players: " + players.size())) - .append(Component.newline()) - .append(Component.newline()).append(Component.text("RAM: " + Monitoring.getRamUsage() + " MB", NamedTextColor.GRAY)) - .append(Component.newline()).append(Component.text("TICK: " + Monitoring.getTickMonitor().getTickTime() + "ms", NamedTextColor.GRAY)) - .append(Component.newline()); + Component.newline() + .append(Component.text("MineNet Network", NamedTextColor.GOLD)) + .append(Component.newline()).append(Component.text("Players: " + players.size())) + .append(Component.newline()) + .append(Component.newline()).append(Component.text("RAM: " + Monitoring.getRamUsage() + " MB", NamedTextColor.GRAY)) + .append(Component.newline()).append(Component.text("TICK: " + Monitoring.getTickMonitor().getTickTime() + "ms", NamedTextColor.GRAY)) + .append(Component.newline()); final Component footer = - Component.newline() - .append(Component.text("mhsl.eu")) - .append(Component.newline()); + Component.newline() + .append(Component.text("mhsl.eu")) + .append(Component.newline()); Audiences.players().sendPlayerListHeaderAndFooter(header, footer); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/shared/entity/InteractableEntity.java b/src/main/java/eu/mhsl/minenet/minigames/shared/entity/InteractableEntity.java index 70e6d86..b3900b6 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/shared/entity/InteractableEntity.java +++ b/src/main/java/eu/mhsl/minenet/minigames/shared/entity/InteractableEntity.java @@ -15,47 +15,44 @@ public class InteractableEntity extends EntityCreature { /** * Declares an Entity with direct callbacks on interaction + * * @param entityType type of entity */ public InteractableEntity(@NotNull EntityType entityType) { super(entityType); - eventNode() - .addListener(AddEntityToInstanceEvent.class, this::setInstanceEvent) - - .addListener(AddEntityToInstanceEvent.class, this::onSpawn) - .addListener(RemoveEntityFromInstanceEvent.class, this::onDespawn) - .addListener(PlayerEntityInteractEvent.class, this::onInteract) //TODO Why are some of these listeners not working? - - .addListener(EntityAttackEvent.class, this::onAttack); + this.eventNode() + .addListener(AddEntityToInstanceEvent.class, this::setInstanceEvent) + .addListener(AddEntityToInstanceEvent.class, this::onSpawn) + .addListener(RemoveEntityFromInstanceEvent.class, this::onDespawn) + .addListener(PlayerEntityInteractEvent.class, this::onInteract) + .addListener(EntityAttackEvent.class, this::onAttack); } private void setInstanceEvent(@NotNull AddEntityToInstanceEvent addEntityToInstanceEvent) { - if(addEntityToInstanceEvent.getInstance() instanceof Spawnable instance) { - scheduleNextTick((unused) -> this.teleport(this.position.withPitch(180).withYaw(0))); + if(addEntityToInstanceEvent.getInstance() instanceof Spawnable) { + this.scheduleNextTick((unused) -> this.teleport(this.position.withPitch(180).withYaw(0))); } addEntityToInstanceEvent.getInstance().eventNode() - .addListener(PlayerMoveEvent.class, playerMoveEvent -> { - //TODO might be expensive - if(this.position.distance(playerMoveEvent.getNewPosition()) < 5) - this.lookAt(playerMoveEvent.getPlayer()); - }) - .addListener(PlayerEntityInteractEvent.class, playerEntityInteractEvent -> { - if(playerEntityInteractEvent.getTarget() == this) { - onInteract(playerEntityInteractEvent); - } - }) - .addListener(EntityAttackEvent.class, entityAttackEvent -> { - if(entityAttackEvent.getTarget() == this) { - onAttack(entityAttackEvent); - } - }); + .addListener(PlayerMoveEvent.class, playerMoveEvent -> { + if(this.position.distance(playerMoveEvent.getNewPosition()) < 5) + this.lookAt(playerMoveEvent.getPlayer()); + }) + .addListener(PlayerEntityInteractEvent.class, playerEntityInteractEvent -> { + if(playerEntityInteractEvent.getTarget() == this) { + this.onInteract(playerEntityInteractEvent); + } + }) + .addListener(EntityAttackEvent.class, entityAttackEvent -> { + if(entityAttackEvent.getTarget() == this) { + this.onAttack(entityAttackEvent); + } + }); } /** * Called when instance of entity is set - * @param addEntityToInstanceEvent */ protected void onSpawn(@NotNull AddEntityToInstanceEvent addEntityToInstanceEvent) { @@ -63,7 +60,6 @@ public class InteractableEntity extends EntityCreature { /** * Called when instance of entity is unset - * @param removeEntityFromInstanceEvent */ protected void onDespawn(@NotNull RemoveEntityFromInstanceEvent removeEntityFromInstanceEvent) { @@ -71,7 +67,6 @@ public class InteractableEntity extends EntityCreature { /** * Called when a Player interacts with the entity - * @param playerEntityInteractEvent */ protected void onInteract(@NotNull PlayerEntityInteractEvent playerEntityInteractEvent) { @@ -79,7 +74,6 @@ public class InteractableEntity extends EntityCreature { /** * Called when a Player attacks the entity - * @param entityAttackEvent */ protected void onAttack(@NotNull EntityAttackEvent entityAttackEvent) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/shared/inventory/InteractableInventory.java b/src/main/java/eu/mhsl/minenet/minigames/shared/inventory/InteractableInventory.java index 01095eb..13a1eab 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/shared/inventory/InteractableInventory.java +++ b/src/main/java/eu/mhsl/minenet/minigames/shared/inventory/InteractableInventory.java @@ -15,24 +15,19 @@ import java.util.function.Consumer; public class InteractableInventory extends Inventory { /** * Defines an Inventory with direct callbacks for ItemSlots - * @param inventoryType - * @param title */ protected InteractableInventory(@NotNull InventoryType inventoryType, @NotNull Component title) { super(inventoryType, title); - addInventoryCondition(this::onClick); + this.addInventoryCondition(this::onClick); } /** * Set Item with Callback - * @param item - * @param slot - * @param callback */ protected void setClickableItem(ItemStack item, int slot, Consumer callback, boolean closeAfter) { - setItemStack(slot, item); - addInventoryCondition((player, clickedSlot, clickType, inventoryConditionResult) -> { + this.setItemStack(slot, item); + this.addInventoryCondition((player, clickedSlot, clickType, inventoryConditionResult) -> { if(clickedSlot == slot) { if(closeAfter) player.closeInventory(); callback.accept(new ItemClick(player, this, clickedSlot, item, clickType)); @@ -47,30 +42,25 @@ public class InteractableInventory extends Inventory { /** * Set Item without handler - * @param item - * @param slot */ protected void setDummyItem(ItemStack item, int slot) { this.setClickableItem( - item, - slot, - itemClick -> {} + item, + slot, + itemClick -> { + } ); } protected void setDummyItem(Material material, int slot) { this.setDummyItem( - ItemStack.builder(material).customName(Component.text("")).build(), - slot + ItemStack.builder(material).customName(Component.text("")).build(), + slot ); } /** * You may want to Override this method to get more generic click events - * @param player - * @param slot - * @param clickType - * @param inventoryConditionResult */ protected void onClick(Player player, int slot, ClickType clickType, InventoryConditionResult inventoryConditionResult) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/shared/inventory/ItemClick.java b/src/main/java/eu/mhsl/minenet/minigames/shared/inventory/ItemClick.java index dd1c762..f28ab8f 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/shared/inventory/ItemClick.java +++ b/src/main/java/eu/mhsl/minenet/minigames/shared/inventory/ItemClick.java @@ -14,11 +14,6 @@ public class ItemClick { /** * Describes a click on an Item from an IntractableInventory - * @param player - * @param inventory - * @param clickedSlot - * @param item - * @param clickType */ public ItemClick(Player player, InteractableInventory inventory, int clickedSlot, ItemStack item, ClickType clickType) { this.player = player; @@ -29,22 +24,22 @@ public class ItemClick { } public Player getPlayer() { - return player; + return this.player; } public Inventory getInventory() { - return inventory; + return this.inventory; } public int getClickedSlot() { - return clickedSlot; + return this.clickedSlot; } public ItemStack getItem() { - return item; + return this.item; } public ClickType getClickType() { - return clickType; + return this.clickType; } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/BatchUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/BatchUtil.java index 225b115..6e9a312 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/BatchUtil.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/BatchUtil.java @@ -10,7 +10,7 @@ import java.lang.reflect.Field; import java.util.concurrent.CompletableFuture; public class BatchUtil { - public static long[] getAffectedChunks(Batch batch) { + public static long[] getAffectedChunks(Batch batch) { try { Field field = batch.getClass().getDeclaredField("chunkBatchesMap"); field.setAccessible(true); @@ -19,7 +19,7 @@ public class BatchUtil { Long2ObjectMap chunkBatchesMap = (Long2ObjectMap) field.get(batch); return chunkBatchesMap.keySet().toLongArray(); - } catch (NoSuchFieldException | IllegalAccessException e) { + } catch(NoSuchFieldException | IllegalAccessException e) { throw new RuntimeException(e); } } @@ -48,7 +48,7 @@ public class BatchUtil { try { future.get(); - } catch (Exception e) { + } catch(Exception e) { throw new RuntimeException(e); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/ColorUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/ColorUtil.java deleted file mode 100644 index b09466d..0000000 --- a/src/main/java/eu/mhsl/minenet/minigames/util/ColorUtil.java +++ /dev/null @@ -1,15 +0,0 @@ -package eu.mhsl.minenet.minigames.util; - -import net.kyori.adventure.text.format.NamedTextColor; - -public class ColorUtil { - public static NamedTextColor scoreColor(int score) { - return switch (score) { - case 1 -> NamedTextColor.GOLD; - case 2 -> NamedTextColor.GREEN; - case 3 -> NamedTextColor.DARK_GREEN; - default -> NamedTextColor.GRAY; - }; - - } -} diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/CommonEventHandles.java b/src/main/java/eu/mhsl/minenet/minigames/util/CommonEventHandles.java index fc72991..e28a8d2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/CommonEventHandles.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/CommonEventHandles.java @@ -5,13 +5,8 @@ import net.minestom.server.event.trait.CancellableEvent; public class CommonEventHandles { /** * Cancels the given Event - * @param event */ public static void cancel(CancellableEvent event) { event.setCancelled(true); } - - public static void cancel(CancellableEvent event, boolean condition) { - event.setCancelled(condition); - } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/CommonProperties.java b/src/main/java/eu/mhsl/minenet/minigames/util/CommonProperties.java index 588cf66..dfd93f1 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/CommonProperties.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/CommonProperties.java @@ -6,8 +6,8 @@ import java.util.Map; public class CommonProperties { public static Map fenceEastWest = new HashMap<>() { { - put("west", "true"); - put("east", "true"); + this.put("west", "true"); + this.put("east", "true"); } }; } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/GeneratorUtils.java b/src/main/java/eu/mhsl/minenet/minigames/util/GeneratorUtils.java index 6b7c5cc..c450567 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/GeneratorUtils.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/GeneratorUtils.java @@ -14,8 +14,8 @@ public class GeneratorUtils { double startZ = unit.absoluteStart().z(); double endZ = unit.absoluteEnd().z() - 1; - for (double x = startX; x <= endX; x++) { - for (double z = startZ; z <= endZ; z++) { + for(double x = startX; x <= endX; x++) { + for(double z = startZ; z <= endZ; z++) { Point currentPoint = new Pos(x, unit.absoluteStart().y(), z); bottomPoint.accept(currentPoint); } @@ -28,8 +28,8 @@ public class GeneratorUtils { double startZ = Math.min(start.z(), end.z()); double endZ = Math.max(start.z(), end.z()); - for (double x = startX; x <= endX; x++) { - for (double z = startZ; z <= endZ; z++) { + for(double x = startX; x <= endX; x++) { + for(double z = startZ; z <= endZ; z++) { Point currentPoint = new Pos(x, start.y(), z); callback.accept(currentPoint); } @@ -44,9 +44,9 @@ public class GeneratorUtils { int minZ = (int) Math.min(pos1.z(), pos2.z()); int maxZ = (int) Math.max(pos1.z(), pos2.z()); - for (int x = minX; x <= maxX; x++) { - for (int y = minY; y <= maxY; y++) { - for (int z = minZ; z <= maxZ; z++) { + for(int x = minX; x <= maxX; x++) { + for(int y = minY; y <= maxY; y++) { + for(int z = minZ; z <= maxZ; z++) { Point point = new Pos(x, y, z); callback.accept(point); } @@ -55,7 +55,8 @@ public class GeneratorUtils { } public static void outline(Point pos1, Point pos2, Consumer outline) { - outline(pos1, pos2, outline, point -> {}); + outline(pos1, pos2, outline, point -> { + }); } public static void outline(Point pos1, Point pos2, Consumer outline, Consumer innerFill) { @@ -67,11 +68,11 @@ public class GeneratorUtils { int maxY = (int) Math.max(pos1.y(), pos2.y()); int maxZ = (int) Math.max(pos1.z(), pos2.z()); - for (int x = minX; x <= maxX; x++) { - for (int y = minY; y <= maxY; y++) { - for (int z = minZ; z <= maxZ; z++) { + for(int x = minX; x <= maxX; x++) { + for(int y = minY; y <= maxY; y++) { + for(int z = minZ; z <= maxZ; z++) { Point blockPos = new Pos(x, y, z); - if (x == minX || x == maxX || y == minY || y == maxY || z == minZ || z == maxZ) { + if(x == minX || x == maxX || y == minY || y == maxY || z == minZ || z == maxZ) { outline.accept(blockPos); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/Intersect.java b/src/main/java/eu/mhsl/minenet/minigames/util/Intersect.java index a3e9cb3..e9937d3 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/Intersect.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/Intersect.java @@ -8,10 +8,10 @@ import net.minestom.server.instance.block.Block; public class Intersect { public static boolean withPressurePlate(Instance instance, BlockPallet target, Pos playerPosition) { Pos[] corners = { - playerPosition.add(0.3-Position.PIXEL, 0, 0.3-Position.PIXEL), - playerPosition.add(0.3-Position.PIXEL, 0, -0.3+Position.PIXEL), - playerPosition.add(-0.3+Position.PIXEL, 0, 0.3-Position.PIXEL), - playerPosition.add(-0.3+Position.PIXEL, 0, -0.3+Position.PIXEL) + playerPosition.add(0.3 - Position.PIXEL, 0, 0.3 - Position.PIXEL), + playerPosition.add(0.3 - Position.PIXEL, 0, -0.3 + Position.PIXEL), + playerPosition.add(-0.3 + Position.PIXEL, 0, 0.3 - Position.PIXEL), + playerPosition.add(-0.3 + Position.PIXEL, 0, -0.3 + Position.PIXEL) }; for(Pos coroner : corners) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/InventoryItemAlignment.java b/src/main/java/eu/mhsl/minenet/minigames/util/InventoryItemAlignment.java index 283cfa1..94c800c 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/InventoryItemAlignment.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/InventoryItemAlignment.java @@ -24,13 +24,13 @@ public class InventoryItemAlignment { this.x = 9; this.y = y; - if(x * y < size) throw new RuntimeException("Not enough space for Item alignment"); + if(this.x * y < size) throw new RuntimeException("Not enough space for Item alignment"); } public ItemOffset next() { - counter++; + this.counter++; - if(this.size < 9) return new ItemOffset(this.row(this.size).get(counter), y > 1 ? 1 : 0); + if(this.size < 9) return new ItemOffset(this.row(this.size).get(this.counter), this.y > 1 ? 1 : 0); //TODO more items? return new ItemOffset(0, 0); @@ -41,89 +41,89 @@ public class InventoryItemAlignment { return new ArrayList>() { { //noinspection EmptyClassInitializer - add(new ArrayList<>() { + this.add(new ArrayList<>() { static { } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(4); + this.add(4); } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(3); - add(5); + this.add(3); + this.add(5); } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(2); - add(4); - add(6); + this.add(2); + this.add(4); + this.add(6); } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(1); - add(3); - add(5); - add(7); + this.add(1); + this.add(3); + this.add(5); + this.add(7); } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(2); - add(3); - add(4); - add(5); - add(6); + this.add(2); + this.add(3); + this.add(4); + this.add(5); + this.add(6); } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(1); - add(2); - add(3); - add(5); - add(6); - add(7); + this.add(1); + this.add(2); + this.add(3); + this.add(5); + this.add(6); + this.add(7); } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(1); - add(2); - add(3); - add(4); - add(5); - add(6); - add(7); + this.add(1); + this.add(2); + this.add(3); + this.add(4); + this.add(5); + this.add(6); + this.add(7); } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(0); - add(1); - add(2); - add(3); - add(5); - add(6); - add(7); - add(8); + this.add(0); + this.add(1); + this.add(2); + this.add(3); + this.add(5); + this.add(6); + this.add(7); + this.add(8); } }); - add(new ArrayList<>() { + this.add(new ArrayList<>() { { - add(0); - add(1); - add(2); - add(3); - add(4); - add(5); - add(6); - add(7); - add(8); + this.add(0); + this.add(1); + this.add(2); + this.add(3); + this.add(4); + this.add(5); + this.add(6); + this.add(7); + this.add(8); } }); } @@ -133,7 +133,7 @@ public class InventoryItemAlignment { public record ItemOffset(int x, int z) { public int get() { - return x + (z * 9); - } + return this.x + (this.z * 9); } + } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/InventoryUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/InventoryUtil.java index b47f1a3..8fd51d3 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/InventoryUtil.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/InventoryUtil.java @@ -7,12 +7,12 @@ import net.minestom.server.item.Material; public class InventoryUtil { public static void removeItemFromPlayer(Player player, Material material, int amount) { ItemStack[] items = player.getInventory().getItemStacks(); - for (int i = 0; i < items.length; i++) { + for(int i = 0; i < items.length; i++) { ItemStack item = items[i]; - if (item.material() != material) continue; + if(item.material() != material) continue; int stackSize = item.amount(); - if (stackSize < amount) { + if(stackSize < amount) { amount -= stackSize; player.getInventory().setItemStack(i, ItemStack.AIR); } else { diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/MapUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/MapUtil.java index a94cf9c..cc5b611 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/MapUtil.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/MapUtil.java @@ -1,6 +1,9 @@ package eu.mhsl.minenet.minigames.util; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; public class MapUtil { public static > Map sortByValue(Map map) { @@ -8,7 +11,7 @@ public class MapUtil { list.sort(Map.Entry.comparingByValue()); Map result = new LinkedHashMap<>(); - for (Map.Entry entry : list) { + for(Map.Entry entry : list) { result.put(entry.getKey(), entry.getValue()); } @@ -20,7 +23,7 @@ public class MapUtil { list.sort(Map.Entry.comparingByValue().reversed()); Map result = new LinkedHashMap<>(); - for (Map.Entry entry : list) { + for(Map.Entry entry : list) { result.put(entry.getKey(), entry.getValue()); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/Monitoring.java b/src/main/java/eu/mhsl/minenet/minigames/util/Monitoring.java index 9ce0114..f703d7a 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/Monitoring.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/Monitoring.java @@ -11,7 +11,7 @@ public class Monitoring { private static final AtomicReference lastTick = new AtomicReference<>(); static { - MinecraftServer.getGlobalEventHandler().addListener(ServerTickMonitorEvent .class, event -> lastTick.set(event.getTickMonitor())); + MinecraftServer.getGlobalEventHandler().addListener(ServerTickMonitorEvent.class, event -> lastTick.set(event.getTickMonitor())); } public static long getRamUsage() { diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/MoveInstance.java b/src/main/java/eu/mhsl/minenet/minigames/util/MoveInstance.java index 33aeaf5..6b3cf4c 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/MoveInstance.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/MoveInstance.java @@ -14,6 +14,7 @@ public class MoveInstance { public static void move(Set playerList, Spawnable destination) { playerList.forEach(player -> move(player, destination)); } + public static void move(Entity p, Spawnable destination) { if(p.getInstance() != destination) p.setInstance((Instance) destination, destination.getSpawn()); } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/NumberUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/NumberUtil.java index 714a144..e072033 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/NumberUtil.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/NumberUtil.java @@ -2,7 +2,7 @@ package eu.mhsl.minenet.minigames.util; public class NumberUtil { public static double map(double oldValue, double oldMin, double oldMax, double newMin, double newMax) { - double out = (((oldValue - oldMin) * (newMax - newMin)) / (oldMax - oldMin)) + newMin; + double out = (((oldValue - oldMin) * (newMax - newMin)) / (oldMax - oldMin)) + newMin; if(out > newMax) out = newMax; if(out < newMin) out = newMin; @@ -10,8 +10,8 @@ public class NumberUtil { } public static > T clamp(T val, T min, T max) { - if (val.compareTo(min) < 0) return min; - else if (val.compareTo(max) > 0) return max; + if(val.compareTo(min) < 0) return min; + else if(val.compareTo(max) > 0) return max; else return val; } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/PluginMessageUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/PluginMessageUtil.java index 7b3d499..4ae1ed3 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/PluginMessageUtil.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/PluginMessageUtil.java @@ -7,6 +7,7 @@ import net.minestom.server.network.packet.server.common.PluginMessagePacket; public class PluginMessageUtil { private static final String bungeeTargetSelector = "bungeecord:main"; + public static void connect(Player p, String bungeeServerTargetName) { ByteArrayDataOutput out = ByteStreams.newDataOutput(); out.writeUTF("Connect"); diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/ResourceUtils.java b/src/main/java/eu/mhsl/minenet/minigames/util/ResourceUtils.java index fcf510b..7542113 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/ResourceUtils.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/ResourceUtils.java @@ -1,5 +1,7 @@ package eu.mhsl.minenet.minigames.util; +import org.jetbrains.annotations.NotNull; + import java.io.File; import java.io.IOException; import java.net.URI; @@ -19,7 +21,7 @@ public final class ResourceUtils { final URI uri = Objects.requireNonNull(ResourceUtils.class.getResource("/" + source)).toURI(); FileSystem fileSystem = null; - if (uri.toString().startsWith("jar:")) + if(uri.toString().startsWith("jar:")) fileSystem = FileSystems.newFileSystem(uri, Map.of("create", "true")); try { @@ -28,36 +30,36 @@ public final class ResourceUtils { final Path jarPath = Paths.get(uri); final Path target = Path.of("resources/" + source); - if (Files.exists(target)) { + if(Files.exists(target)) { if(keepOutdated) return; - try (Stream pathStream = Files.walk(target)) { + try(Stream pathStream = Files.walk(target)) { pathStream.sorted(Comparator.reverseOrder()) - .forEach(path -> { - try { - Files.delete(path); - } catch (IOException e) { - throw new RuntimeException(e); - } - }); + .forEach(path -> { + try { + Files.delete(path); + } catch(IOException e) { + throw new RuntimeException(e); + } + }); } } Files.walkFileTree(jarPath, new SimpleFileVisitor<>() { @Override - public FileVisitResult preVisitDirectory(final Path dir, final BasicFileAttributes attrs) throws IOException { + public @NotNull FileVisitResult preVisitDirectory(final @NotNull Path dir, final @NotNull BasicFileAttributes attrs) throws IOException { Path currentTarget = target.resolve(jarPath.relativize(dir).toString()); Files.createDirectories(currentTarget); return FileVisitResult.CONTINUE; } @Override - public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException { + public @NotNull FileVisitResult visitFile(final @NotNull Path file, final @NotNull BasicFileAttributes attrs) throws IOException { final Path to = target.resolve(jarPath.relativize(file).toString()); Files.copy(file, to, StandardCopyOption.REPLACE_EXISTING); return FileVisitResult.CONTINUE; } }); } finally { - if (fileSystem != null) + if(fileSystem != null) fileSystem.close(); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/SingleExecution.java b/src/main/java/eu/mhsl/minenet/minigames/util/SingleExecution.java index db78c4f..73b900d 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/SingleExecution.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/SingleExecution.java @@ -1,18 +1,14 @@ package eu.mhsl.minenet.minigames.util; public class SingleExecution { + private boolean wasExecuted = false; + public static SingleExecution make() { return new SingleExecution(); } - private boolean wasExecuted = false; - - public void reset() { - this.wasExecuted = false; - } - public void singleRun(Runnable task) { - if(wasExecuted) return; + if(this.wasExecuted) return; task.run(); this.wasExecuted = true; } diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/TextUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/TextUtil.java deleted file mode 100644 index a9e65b8..0000000 --- a/src/main/java/eu/mhsl/minenet/minigames/util/TextUtil.java +++ /dev/null @@ -1,132 +0,0 @@ -package eu.mhsl.minenet.minigames.util; - -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class TextUtil { - public static Component autoWrap(String input, NamedTextColor color) { - return Component.text(wrap(input, 30, "\n", true, "-", " "), color); - } - - public static Component autoWrap(String input) { - return autoWrap(input, NamedTextColor.WHITE); - } - - /** - * Wraps a source String into a series of lines having a maximum specified length. The source is - * wrapped at: spaces, horizontal tabs, system newLine characters, or a specified newLine character - * sequence. Existing newLine character sequences in the source string, whether they be the system - * newLine or the specified newLine, are honored. Existing whitespace (spaces and horizontal tabs) - * is preserved. - *

- * When wrapLongWords is true, words having a length greater than the specified - * lineLength will be broken, the specified longWordBreak terminator appended, - * and a new line initiated with the text of the specified longWordLinePrefix string. The - * position of the break will be unceremoniously chosen such that ineLength is honored. - * One use of longWordLinePrefix is to effect "hanging indents" by specifying a series of - * spaces for this parameter. This parameter can contain the lineFeed character(s). Although - * longWordLinePrefix can contain the horizontal tab character, the results are not - * guaranteed because no attempt is made to determine the quantity of character positions occupied by a - * horizontal tab.

- *

- * Example usage: - *

-     * wrap( "  A very long word is Abracadabra in my book", 11, "\n", true, "-", "  ");
- * returns (note the effect of the single-character lineFeed): - *
-     *   A very
-     * long word
-     * is Abraca-
-     *   dabra in
-     * my book
- * Whereas, the following: - *
-     * wrap( "  A very long word is Abracadabra in my book", 11, null, true, null, "  ");
- * returns (due to the 2-character system linefeed): - *
-     *   A very
-     * long
-     * word is A
-     *   bracada
-     *   bra in
-     * my book

- * - * @param src the String to be word wrapped, may be null - * @param lineLength the maximum line length, including the length of newLineStr and, when - * applicable, longWordLinePrefix. If the value is insufficient to accommodate - * these two parameters + 1 character, it will be increased accordingly. - * @param newLineStr the string to insert for a new line, or null to use the value - * reported as the system line separator by the JVM - * @param wrapLongWords when false, words longer than wrapLength
will not be broken - * @param longWordBreak string with which to precede newLineStr on each line of a broken word, - * excepting the last line, or null if this feature is not to be used - * @param longWordLinePrefix string with which to prefix each line of a broken word, subsequent - * to the first line, or null if no prefix is to be used - * @return a line with newlines inserted, or null if src is null - */ - private static String wrap(String src, int lineLength, String newLineStr, boolean wrapLongWords, String longWordBreak, String longWordLinePrefix) { - // Trivial case - if ( src == null ) return null; - - if ( newLineStr == null ) - newLineStr = System.getProperty( "line.separator" ); - - if ( longWordBreak == null ) - longWordBreak = ""; - - if ( longWordLinePrefix == null ) - longWordLinePrefix = ""; - - // Adjust maximum line length to accommodate the newLine string - lineLength -= newLineStr.length(); - if ( lineLength < 1 ) - lineLength = 1; - - // Guard for long word break or prefix that would create an infinite loop - if ( wrapLongWords && lineLength - longWordBreak.length() - longWordLinePrefix.length() < 1 ) - lineLength += longWordBreak.length() + longWordLinePrefix.length(); - - int - remaining = lineLength, - breakLength = longWordBreak.length(); - - Matcher m = Pattern.compile( ".+?[ \\t]|.+?mis" + newLineStr + "singValue|.+?$" ).matcher( src ); - - StringBuilder cache = new StringBuilder(); - - while ( m.find() ) { - String word = m.group(); - - // Breakup long word - while ( wrapLongWords && word.length() > lineLength ) { - cache - .append(word, 0, remaining - breakLength) - .append( longWordBreak ) - .append( newLineStr ); - word = longWordLinePrefix + word.substring( remaining - breakLength ); - remaining = lineLength; - } // if - - // Linefeed if word exceeds remaining space - if ( word.length() > remaining ) { - cache - .append( newLineStr ) - .append( word ); - remaining = lineLength; - } // if - - // Word fits in remaining space - else - cache.append( word ); - - remaining -= word.length(); - } // while - - return cache.toString(); - } // wrap() - -} - diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/UuidUtil.java b/src/main/java/eu/mhsl/minenet/minigames/util/UuidUtil.java index be26293..73a3219 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/UuidUtil.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/UuidUtil.java @@ -10,7 +10,7 @@ public class UuidUtil { builder.insert(16, "-"); builder.insert(12, "-"); builder.insert(8, "-"); - } catch (StringIndexOutOfBoundsException e) { + } catch(StringIndexOutOfBoundsException e) { throw new IllegalArgumentException(); } return UUID.fromString(builder.toString()); diff --git a/src/main/java/eu/mhsl/minenet/minigames/util/WeatherUtils.java b/src/main/java/eu/mhsl/minenet/minigames/util/WeatherUtils.java index d2e981e..e1d3af2 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/util/WeatherUtils.java +++ b/src/main/java/eu/mhsl/minenet/minigames/util/WeatherUtils.java @@ -11,15 +11,16 @@ import java.util.Set; public class WeatherUtils { private float intensity; + public void startRain(Set players) { - intensity = 0; + this.intensity = 0; players.forEach(p -> p.sendPacket(new ChangeGameStatePacket(ChangeGameStatePacket.Reason.BEGIN_RAINING, 0f))); MinecraftServer.getSchedulerManager().submitTask(() -> { - intensity += 0.1f; - players.forEach(p -> p.sendPacket(new ChangeGameStatePacket(ChangeGameStatePacket.Reason.RAIN_LEVEL_CHANGE, intensity))); - System.out.println(intensity); - if(intensity < 1) { + this.intensity += 0.1f; + players.forEach(p -> p.sendPacket(new ChangeGameStatePacket(ChangeGameStatePacket.Reason.RAIN_LEVEL_CHANGE, this.intensity))); + System.out.println(this.intensity); + if(this.intensity < 1) { return TaskSchedule.millis(500); } else { return TaskSchedule.stop(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/BlockPallet.java b/src/main/java/eu/mhsl/minenet/minigames/world/BlockPallet.java index 9dde82b..a60d03d 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/BlockPallet.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/BlockPallet.java @@ -7,13 +7,13 @@ import java.util.List; import java.util.Random; public enum BlockPallet { - GROUND(new Block[] {Block.GRAVEL, Block.STONE, Block.DIRT, Block.GRASS_BLOCK, Block.COARSE_DIRT, Block.ROOTED_DIRT}), - WOOD(new Block[] {Block.ACACIA_WOOD, Block.BIRCH_WOOD, Block.JUNGLE_WOOD, Block.OAK_WOOD, Block.DARK_OAK_WOOD, Block.SPRUCE_WOOD}), - STONE(new Block[] {Block.CHISELED_STONE_BRICKS, Block.STONE_BRICKS, Block.POLISHED_ANDESITE, Block.POLISHED_BLACKSTONE, Block.POLISHED_DIORITE}), - WINTER(new Block[] {Block.SNOW_BLOCK, Block.ICE, Block.PACKED_ICE, Block.BLUE_CONCRETE, Block.SEA_LANTERN}), - STREET(new Block[] {Block.BLACK_CONCRETE_POWDER, Block.GRAY_CONCRETE_POWDER, Block.GRAVEL, Block.BLACK_CONCRETE, Block.GRAY_CONCRETE}), - FLOWER(new Block[] {Block.ORANGE_TULIP, Block.PINK_TULIP, Block.RED_TULIP, Block.WHITE_TULIP, Block.DANDELION, Block.POPPY, Block.CORNFLOWER}), - PRESSURE_PLATES(new Block[] {Block.ACACIA_PRESSURE_PLATE, Block.BIRCH_PRESSURE_PLATE, Block.CRIMSON_PRESSURE_PLATE, Block.JUNGLE_PRESSURE_PLATE, Block.OAK_PRESSURE_PLATE, Block.DARK_OAK_PRESSURE_PLATE, Block.HEAVY_WEIGHTED_PRESSURE_PLATE, Block.HEAVY_WEIGHTED_PRESSURE_PLATE, Block.POLISHED_BLACKSTONE_PRESSURE_PLATE, Block.SPRUCE_PRESSURE_PLATE, Block.STONE_PRESSURE_PLATE, Block.WARPED_PRESSURE_PLATE}); + GROUND(new Block[]{Block.GRAVEL, Block.STONE, Block.DIRT, Block.GRASS_BLOCK, Block.COARSE_DIRT, Block.ROOTED_DIRT}), + WOOD(new Block[]{Block.ACACIA_WOOD, Block.BIRCH_WOOD, Block.JUNGLE_WOOD, Block.OAK_WOOD, Block.DARK_OAK_WOOD, Block.SPRUCE_WOOD}), + STONE(new Block[]{Block.CHISELED_STONE_BRICKS, Block.STONE_BRICKS, Block.POLISHED_ANDESITE, Block.POLISHED_BLACKSTONE, Block.POLISHED_DIORITE}), + WINTER(new Block[]{Block.SNOW_BLOCK, Block.ICE, Block.PACKED_ICE, Block.BLUE_CONCRETE, Block.SEA_LANTERN}), + STREET(new Block[]{Block.BLACK_CONCRETE_POWDER, Block.GRAY_CONCRETE_POWDER, Block.GRAVEL, Block.BLACK_CONCRETE, Block.GRAY_CONCRETE}), + FLOWER(new Block[]{Block.ORANGE_TULIP, Block.PINK_TULIP, Block.RED_TULIP, Block.WHITE_TULIP, Block.DANDELION, Block.POPPY, Block.CORNFLOWER}), + PRESSURE_PLATES(new Block[]{Block.ACACIA_PRESSURE_PLATE, Block.BIRCH_PRESSURE_PLATE, Block.CRIMSON_PRESSURE_PLATE, Block.JUNGLE_PRESSURE_PLATE, Block.OAK_PRESSURE_PLATE, Block.DARK_OAK_PRESSURE_PLATE, Block.HEAVY_WEIGHTED_PRESSURE_PLATE, Block.HEAVY_WEIGHTED_PRESSURE_PLATE, Block.POLISHED_BLACKSTONE_PRESSURE_PLATE, Block.SPRUCE_PRESSURE_PLATE, Block.STONE_PRESSURE_PLATE, Block.WARPED_PRESSURE_PLATE}); final List list; final Random rnd = new Random(); @@ -23,11 +23,11 @@ public enum BlockPallet { } public Block rnd() { - return list.get(rnd.nextInt(list.size())); + return this.list.get(this.rnd.nextInt(this.list.size())); } public boolean contains(Block b) { - return list.contains(b); + return this.list.contains(b); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/PlateTerrainGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/PlateTerrainGenerator.java index 2e265b2..6129ad0 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/PlateTerrainGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/PlateTerrainGenerator.java @@ -24,6 +24,6 @@ public abstract class PlateTerrainGenerator implements Generator { } public boolean generatePlate() { - return plateHeight > 0; + return this.plateHeight > 0; } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/featureEnriched/CircularPlateGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/featureEnriched/CircularPlateGenerator.java index a838212..ee7f87c 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/featureEnriched/CircularPlateGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/featureEnriched/CircularPlateGenerator.java @@ -13,15 +13,13 @@ public class CircularPlateGenerator extends HeightTerrainGenerator { private final SingleExecution execution = SingleExecution.make(); private final int radius; private final int height; + private final boolean generated = false; private BlockPallet blockPallet = BlockPallet.GROUND; - private int centerX = 0; private int centerZ = 0; - private boolean generated = false; - public CircularPlateGenerator(int radius, int height) { - setCalculateHeight(point -> (int) ((point.distance(new Pos(0, point.y(), 0)) / 2) - radius)); + this.setCalculateHeight(point -> (int) ((point.distance(new Pos(0, point.y(), 0)) / 2) - radius)); this.radius = radius; this.height = height; } @@ -39,19 +37,19 @@ public class CircularPlateGenerator extends HeightTerrainGenerator { @Override public void generate(@NotNull GenerationUnit unit) { - execution.singleRun(() -> unit.fork(setter -> { - System.out.println(new Pos(-(radius + centerX), unit.absoluteStart().y(), -(radius + centerZ))); - System.out.println(new Pos(radius + centerX, height, radius + centerZ)); + this.execution.singleRun(() -> unit.fork(setter -> { + System.out.println(new Pos(-(this.radius + this.centerX), unit.absoluteStart().y(), -(this.radius + this.centerZ))); + System.out.println(new Pos(this.radius + this.centerX, this.height, this.radius + this.centerZ)); GeneratorUtils.foreachXZ( - new Pos(-(radius + centerX), unit.absoluteStart().y(), -(radius + centerZ)), - new Pos(radius + centerX, height, radius + centerZ), - point -> { - double distance = point.distance(new Pos(centerX, point.y(), centerZ)); + new Pos(-(this.radius + this.centerX), unit.absoluteStart().y(), -(this.radius + this.centerZ)), + new Pos(this.radius + this.centerX, this.height, this.radius + this.centerZ), + point -> { + double distance = point.distance(new Pos(this.centerX, point.y(), this.centerZ)); - if(distance <= this.radius) { - setter.setBlock(point.add(1, height, 1), Block.GOLD_BLOCK); - } + if(distance <= this.radius) { + setter.setBlock(point.add(1, this.height, 1), Block.GOLD_BLOCK); } + } ); })); diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/featureEnriched/ValeGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/featureEnriched/ValeGenerator.java index af0dcda..f7b9ce1 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/featureEnriched/ValeGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/featureEnriched/ValeGenerator.java @@ -9,31 +9,31 @@ import java.util.function.Function; public class ValeGenerator extends HeightTerrainGenerator { private final JNoise curves = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.01) - .build(); + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.01) + .build(); private final JNoise largeCurves = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.001) - .build(); + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.001) + .build(); private Function xShiftMultiplier = multiplier -> 1d; private Function xShiftOffset = z -> 0d; public ValeGenerator() { - setCalculateHeight(this::calculateY); - setHeightNoiseMultiplier(point -> (int) NumberUtil.map(calculateY(point), -64, 100, 0, 16)); + this.setCalculateHeight(this::calculateY); + this.setHeightNoiseMultiplier(point -> (int) NumberUtil.map(this.calculateY(point), -64, 100, 0, 16)); } private int calculateY(Point point) { - return (int) (Math.abs(point.blockX() - getXShiftAtZ(point.blockZ())) / 1.5); + return (int) (Math.abs(point.blockX() - this.getXShiftAtZ(point.blockZ())) / 1.5); } public int getXShiftAtZ(int z) { - return (int) ((curves.getNoise(z) * 32 + largeCurves.getNoise(z) * 64) * xShiftMultiplier.apply(z) + xShiftOffset.apply(z)); + return (int) ((this.curves.getNoise(z) * 32 + this.largeCurves.getNoise(z) * 64) * this.xShiftMultiplier.apply(z) + this.xShiftOffset.apply(z)); } public void setXShiftMultiplier(Function xShiftMultiplier) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/structures/generatable/PeakRock.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/structures/generatable/PeakRock.java index 8fe0130..1059254 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/structures/generatable/PeakRock.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/structures/generatable/PeakRock.java @@ -8,6 +8,7 @@ import net.minestom.server.instance.block.Block; public class PeakRock extends Structure { private final Point position; private final BlockPallet blockPallet; + public PeakRock(Point position, BlockPallet blockPallet) { this.position = position; this.blockPallet = blockPallet; @@ -15,14 +16,14 @@ public class PeakRock extends Structure { @Override public void generateStructure(Block.Setter setter) { - for (int stoneX = -4; stoneX < 4; stoneX++) { - for (int stoneZ = -4; stoneZ < 4; stoneZ++) { + for(int stoneX = -4; stoneX < 4; stoneX++) { + for(int stoneZ = -4; stoneZ < 4; stoneZ++) { - double distanceToCenter = position.add(stoneX, 0, stoneZ).distance(position); + double distanceToCenter = this.position.add(stoneX, 0, stoneZ).distance(this.position); if(distanceToCenter > 3) continue; - for (int stoneY = 0; stoneY < 10-(int) distanceToCenter * rnd.nextDouble(2, 5); stoneY++) { - Point blockPos = position.add(stoneX, stoneY, stoneZ); + for(int stoneY = 0; stoneY < 10 - (int) distanceToCenter * this.rnd.nextDouble(2, 5); stoneY++) { + Point blockPos = this.position.add(stoneX, stoneY, stoneZ); setter.setBlock(blockPos, this.blockPallet.rnd()); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/structures/generatable/Tree.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/structures/generatable/Tree.java index 2196b76..e0d2a7a 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/structures/generatable/Tree.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/structures/generatable/Tree.java @@ -13,18 +13,18 @@ public class Tree extends Structure { @Override public void generateStructure(Block.Setter setter) { - int trunkX = position.blockX(); - int trunkBottomY = position.blockY(); - int trunkZ = position.blockZ(); + int trunkX = this.position.blockX(); + int trunkBottomY = this.position.blockY(); + int trunkZ = this.position.blockZ(); - for (int i = 0; i < 2; i++) { + for(int i = 0; i < 2; i++) { setter.setBlock(trunkX + 1, trunkBottomY + 3 + i, trunkZ, Block.OAK_LEAVES); setter.setBlock(trunkX - 1, trunkBottomY + 3 + i, trunkZ, Block.OAK_LEAVES); setter.setBlock(trunkX, trunkBottomY + 3 + i, trunkZ + 1, Block.OAK_LEAVES); setter.setBlock(trunkX, trunkBottomY + 3 + i, trunkZ - 1, Block.OAK_LEAVES); - for (int x = -1; x <= 1; x++) { - for (int z = -1; z <= 1; z++) { + for(int x = -1; x <= 1; x++) { + for(int z = -1; z <= 1; z++) { setter.setBlock(trunkX + x, trunkBottomY + 2 + i, trunkZ - z, Block.OAK_LEAVES); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/BaseGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/BaseGenerator.java index a5348a9..0b0bcb8 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/BaseGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/BaseGenerator.java @@ -21,12 +21,12 @@ public abstract class BaseGenerator implements Generator { } protected void applyStructures(GenerationUnit unit) { - structures.forEach(structure -> unit.fork(structure::generateStructure)); + this.structures.forEach(structure -> unit.fork(structure::generateStructure)); } @Override public void generate(@NotNull GenerationUnit unit) { - mixIns.forEach(generator -> generator.generate(unit)); + this.mixIns.forEach(generator -> generator.generate(unit)); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/CircularPlateTerrainGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/CircularPlateTerrainGenerator.java index 4b82ea7..877fe46 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/CircularPlateTerrainGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/CircularPlateTerrainGenerator.java @@ -16,29 +16,30 @@ import java.util.Random; public class CircularPlateTerrainGenerator extends PlateTerrainGenerator { protected final Random rnd = new Random(); private final int size; + private final JNoise base = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.01) + .build(); + private final JNoise batches = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.05) + .build(); + private final JNoise peaks = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.1) + .build(); public CircularPlateTerrainGenerator(int size) { this.size = size; } - private final JNoise base = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.01) - .build(); - - private final JNoise batches = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.05) - .build(); - - private final JNoise peaks = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.1) - .build(); - + private static double minTwo(double input) { + if(input < 2) return 2; + return input; + } @Override public void generate(@NotNull GenerationUnit unit) { @@ -46,40 +47,40 @@ public class CircularPlateTerrainGenerator extends PlateTerrainGenerator { if(unit.absoluteStart().distance(new Pos(0, 0, 0)) > 500 + this.size) return; - for (int x = 0; x < unit.size().x(); x++) { - for (int z = 0; z < unit.size().z(); z++) { + for(int x = 0; x < unit.size().x(); x++) { + for(int z = 0; z < unit.size().z(); z++) { Point bottom = start.add(x, 0, z); double distance = bottom.distance(new Pos(0, 0, 0)); - if(distance <= this.size && generatePlate()) { - unit.modifier().fill(bottom, bottom.add(1, plateHeight, 1), platePallet.rnd()); + if(distance <= this.size && this.generatePlate()) { + unit.modifier().fill(bottom, bottom.add(1, this.plateHeight, 1), this.platePallet.rnd()); continue; } unit.modifier().setBlock(bottom, Block.GRASS_BLOCK); - synchronized (base) { - double baseNoise = base.getNoise(bottom.x(), bottom.z()); + synchronized(this.base) { + double baseNoise = this.base.getNoise(bottom.x(), bottom.z()); double currentHeight = minTwo(NumberUtil.map(distance, 0, 400, -((double) this.size / 5), 200)) + baseNoise * 8; - synchronized (batches) { - double elementNoise = batches.getNoise(bottom.x(), bottom.z()); + synchronized(this.batches) { + double elementNoise = this.batches.getNoise(bottom.x(), bottom.z()); unit.modifier().fill( - bottom, - bottom.add(1, 1, 1) - .withY(currentHeight), - elementNoise < 0.9 ? elementNoise > 0 ? Block.GRASS_BLOCK : Block.SOUL_SAND : Block.STONE + bottom, + bottom.add(1, 1, 1) + .withY(currentHeight), + elementNoise < 0.9 ? elementNoise > 0 ? Block.GRASS_BLOCK : Block.SOUL_SAND : Block.STONE ); } - synchronized (peaks) { - double peakNoise = peaks.getNoise(bottom.x(), bottom.z()); + synchronized(this.peaks) { + double peakNoise = this.peaks.getNoise(bottom.x(), bottom.z()); if(peakNoise > 0.97 && bottom.distance(new Pos(0, 0, 0)) > (this.size + 20)) { - Point center = bottom.add(1, currentHeight-3, 1); + Point center = bottom.add(1, currentHeight - 3, 1); unit.fork(setter -> new PeakRock(center, BlockPallet.STONE).generateStructure(setter)); } } @@ -90,9 +91,4 @@ public class CircularPlateTerrainGenerator extends PlateTerrainGenerator { } } - - private static double minTwo(double input) { - if(input < 2) return 2; - return input; - } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/FlatTerrainGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/FlatTerrainGenerator.java deleted file mode 100644 index 07bde3f..0000000 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/FlatTerrainGenerator.java +++ /dev/null @@ -1,26 +0,0 @@ -package eu.mhsl.minenet.minigames.world.generator.terrain; - -import net.minestom.server.instance.block.Block; -import net.minestom.server.instance.generator.GenerationUnit; -import net.minestom.server.instance.generator.Generator; -import org.jetbrains.annotations.NotNull; - -public class FlatTerrainGenerator implements Generator { - private final int height; - private final Block block; - - public FlatTerrainGenerator(int height, Block block) { - this.height = height; - this.block = block; - } - - FlatTerrainGenerator() { - this.height = 5; - this.block = Block.GRASS_BLOCK; - } - - @Override - public void generate(@NotNull GenerationUnit unit) { - unit.modifier().fillHeight(0, height, block); - } -} diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/HeightTerrainGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/HeightTerrainGenerator.java index a3a1c08..ae65546 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/HeightTerrainGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/HeightTerrainGenerator.java @@ -16,72 +16,68 @@ import java.util.function.Function; public class HeightTerrainGenerator extends BaseGenerator { protected final Random rnd = new Random(); - private Function calculateHeight = (Point) -> 0; + private final JNoise base = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.01) + .build(); + private final JNoise batches = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.05) + .build(); + private final JNoise peaks = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.1) + .build(); + private final BlockPallet blockPallet = BlockPallet.STONE; protected Function heightNoiseMultiplier = (Point) -> 16; protected Function calculateSeaLevel = null; - - private final JNoise base = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.01) - .build(); - - private final JNoise batches = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.05) - .build(); - - private final JNoise peaks = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.1) - .build(); - - private final BlockPallet blockPallet = BlockPallet.STONE; + private Function calculateHeight = (Point) -> 0; @Override public void generate(@NotNull GenerationUnit unit) { super.generate(unit); GeneratorUtils.foreachXZ(unit, bottomPoint -> { - unit.modifier().setBlock(bottomPoint, blockPallet.rnd()); + unit.modifier().setBlock(bottomPoint, this.blockPallet.rnd()); - synchronized (base) { - double heightNoise = base.getNoise(bottomPoint.x(), bottomPoint.z()); - double noiseModifier = heightNoise * heightNoiseMultiplier.apply(bottomPoint); - double heightModifier = NumberUtil.clamp(calculateHeight.apply(bottomPoint) + noiseModifier, 1d, unit.size().y()); + synchronized(this.base) { + double heightNoise = this.base.getNoise(bottomPoint.x(), bottomPoint.z()); + double noiseModifier = heightNoise * this.heightNoiseMultiplier.apply(bottomPoint); + double heightModifier = NumberUtil.clamp(this.calculateHeight.apply(bottomPoint) + noiseModifier, 1d, unit.size().y()); if(heightModifier < 1) System.out.println("HEIGHT MODIFIER ILLEGAL"); - synchronized (batches) { - double batchNoise = batches.getNoise(bottomPoint.x(), bottomPoint.z()); + synchronized(this.batches) { + double batchNoise = this.batches.getNoise(bottomPoint.x(), bottomPoint.z()); Block block = batchNoise < 0.9 ? batchNoise > -0.2 ? Block.GRASS_BLOCK : Block.SOUL_SAND : Block.STONE; unit.modifier().fill(bottomPoint, bottomPoint.add(1, heightModifier, 1), block); - if(rnd.nextInt(0, 5) < 1 && block == Block.GRASS_BLOCK) { - int randomInt = rnd.nextInt(0, 6); + if(this.rnd.nextInt(0, 5) < 1 && block == Block.GRASS_BLOCK) { + int randomInt = this.rnd.nextInt(0, 6); if(randomInt > 1) { unit.modifier().setBlock(bottomPoint.add(0, heightModifier, 0), Block.SHORT_GRASS); } else if(randomInt > 0) { unit.modifier().setBlock(bottomPoint.add(0, heightModifier, 0), BlockPallet.FLOWER.rnd()); } else { unit.modifier().setBlock(bottomPoint.add(0, heightModifier, 0), Block.TALL_GRASS); - unit.modifier().setBlock(bottomPoint.add(0, heightModifier+1, 0), Block.TALL_GRASS.withProperty("half", "upper")); + unit.modifier().setBlock(bottomPoint.add(0, heightModifier + 1, 0), Block.TALL_GRASS.withProperty("half", "upper")); } } - if(calculateSeaLevel != null) { + if(this.calculateSeaLevel != null) { Point absoluteHeight = bottomPoint.add(0, heightModifier, 0); - int seaLevel = calculateSeaLevel.apply(bottomPoint); + int seaLevel = this.calculateSeaLevel.apply(bottomPoint); if(absoluteHeight.y() < seaLevel) { // System.out.println("HM:" + absoluteHeight.y() + " SL:" + seaLevel); // System.out.println("Filling from " + bottomPoint.y() + " to " + absoluteHeight.withY(seaLevel).y()); - unit.modifier().fill(bottomPoint.withY(v -> v+heightModifier), absoluteHeight.add(1, 0, 1).withY(seaLevel), Block.WATER); + unit.modifier().fill(bottomPoint.withY(v -> v + heightModifier), absoluteHeight.add(1, 0, 1).withY(seaLevel), Block.WATER); } } } - synchronized (peaks) { - double peakNoise = peaks.getNoise(bottomPoint.x(), bottomPoint.z()); + synchronized(this.peaks) { + double peakNoise = this.peaks.getNoise(bottomPoint.x(), bottomPoint.z()); if(peakNoise > 0.97 && bottomPoint.distance(new Pos(0, 0, 0)) > (50 + 20)) { diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/PlaneTerrainGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/PlaneTerrainGenerator.java index 9694799..aee7d24 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/PlaneTerrainGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/PlaneTerrainGenerator.java @@ -14,13 +14,8 @@ public class PlaneTerrainGenerator implements Generator { this.block = block; } - PlaneTerrainGenerator() { - this.height = 5; - this.block = Block.GRASS_BLOCK; - } - @Override public void generate(@NotNull GenerationUnit unit) { - unit.modifier().fillHeight(height-1, height, block); + unit.modifier().fillHeight(this.height - 1, this.height, this.block); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/SquarePlateTerrainGenerator.java b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/SquarePlateTerrainGenerator.java index 30bfd3b..765fd95 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/SquarePlateTerrainGenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/world/generator/terrain/SquarePlateTerrainGenerator.java @@ -20,31 +20,31 @@ public class SquarePlateTerrainGenerator extends PlateTerrainGenerator { private final int width; private final int length; - + private final JNoise base = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.01) + .build(); + private final JNoise batches = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.05) + .build(); + private final JNoise peaks = JNoise.newBuilder() + .fastSimplex() + .setSeed(this.rnd.nextLong()) + .setFrequency(0.1) + .build(); public SquarePlateTerrainGenerator(int width, int length) { this.width = width; this.length = length; } - private final JNoise base = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.01) - .build(); - - private final JNoise batches = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.05) - .build(); - - private final JNoise peaks = JNoise.newBuilder() - .fastSimplex() - .setSeed(rnd.nextLong()) - .setFrequency(0.1) - .build(); - + private static double minTwo(double input) { + if(input < 2) return 2; + return input; + } @Override public void generate(@NotNull GenerationUnit unit) { @@ -52,28 +52,28 @@ public class SquarePlateTerrainGenerator extends PlateTerrainGenerator { // don't generate more than 500 blocks outwards Point chunkStart = unit.absoluteStart(); - if(chunkStart.z() > length + 500 || chunkStart.z() < -500) return; - if(chunkStart.x() < -500 || chunkStart.x() > width + 500) return; + if(chunkStart.z() > this.length + 500 || chunkStart.z() < -500) return; + if(chunkStart.x() < -500 || chunkStart.x() > this.width + 500) return; - for (int x = 0; x < unit.size().x(); x++) { - for (int z = 0; z < unit.size().z(); z++) { + for(int x = 0; x < unit.size().x(); x++) { + for(int z = 0; z < unit.size().z(); z++) { Point bottom = start.add(x, 0, z); - if(generatePlate()) { - if(bottom.x() <= width && bottom.x() >= 0 && bottom.z() <= length && bottom.z() >= 0) { - unit.modifier().fill(bottom, bottom.add(1, plateHeight, 1), platePallet.rnd()); + if(this.generatePlate()) { + if(bottom.x() <= this.width && bottom.x() >= 0 && bottom.z() <= this.length && bottom.z() >= 0) { + unit.modifier().fill(bottom, bottom.add(1, this.plateHeight, 1), this.platePallet.rnd()); continue; } } - if(generateBorders) { + if(this.generateBorders) { Runnable generateBorder = () -> unit.modifier().fill(bottom, bottom.add(1, DimensionType.VANILLA_MAX_Y, 1), Block.BARRIER); - if(bottom.z() <= length+1 && bottom.z() >= -1 && bottom.x() >= -1 && bottom.x() <= width+1) { - if(bottom.x() == -1 || bottom.x() == width+1) { + if(bottom.z() <= this.length + 1 && bottom.z() >= -1 && bottom.x() >= -1 && bottom.x() <= this.width + 1) { + if(bottom.x() == -1 || bottom.x() == this.width + 1) { generateBorder.run(); } - if(bottom.z() == -1 || bottom.z() == length + 1) { + if(bottom.z() == -1 || bottom.z() == this.length + 1) { generateBorder.run(); } } @@ -81,34 +81,34 @@ public class SquarePlateTerrainGenerator extends PlateTerrainGenerator { unit.modifier().setBlock(bottom, Block.GRASS_BLOCK); - synchronized (base) { - double baseNoise = base.getNoise(bottom.x(), bottom.z()); + synchronized(this.base) { + double baseNoise = this.base.getNoise(bottom.x(), bottom.z()); double[] possibleHeights = { minTwo(NumberUtil.map(bottom.distance(new Pos(0, 0, 0)), 0, 400, -((double) this.width / 5), 200)) + baseNoise * 8, - minTwo(NumberUtil.map(bottom.distance(new Pos(width, 0, 0)), 0, 400, -((double) this.width / 5), 200)) + baseNoise * 8, - minTwo(NumberUtil.map(bottom.distance(new Pos(0, 0, length)), 0, 400, -((double) this.width / 5), 200)) + baseNoise * 8, - minTwo(NumberUtil.map(bottom.distance(new Pos(width, 0, length)), 0, 400, -((double) this.width / 5), 200)) + baseNoise * 8 + minTwo(NumberUtil.map(bottom.distance(new Pos(this.width, 0, 0)), 0, 400, -((double) this.width / 5), 200)) + baseNoise * 8, + minTwo(NumberUtil.map(bottom.distance(new Pos(0, 0, this.length)), 0, 400, -((double) this.width / 5), 200)) + baseNoise * 8, + minTwo(NumberUtil.map(bottom.distance(new Pos(this.width, 0, this.length)), 0, 400, -((double) this.width / 5), 200)) + baseNoise * 8 }; double currentHeight = Arrays.stream(possibleHeights).min().getAsDouble(); - synchronized (batches) { - double elementNoise = batches.getNoise(bottom.x(), bottom.z()); + synchronized(this.batches) { + double elementNoise = this.batches.getNoise(bottom.x(), bottom.z()); unit.modifier().fill( - bottom, - bottom.add(1, 1, 1) - .withY(currentHeight), - elementNoise < 0.9 ? elementNoise > 0 ? Block.GRASS_BLOCK : Block.SOUL_SAND : Block.STONE + bottom, + bottom.add(1, 1, 1) + .withY(currentHeight), + elementNoise < 0.9 ? elementNoise > 0 ? Block.GRASS_BLOCK : Block.SOUL_SAND : Block.STONE ); } - synchronized (peaks) { - double peakNoise = peaks.getNoise(bottom.x(), bottom.z()); + synchronized(this.peaks) { + double peakNoise = this.peaks.getNoise(bottom.x(), bottom.z()); if(peakNoise > 0.97 && bottom.distance(new Pos(0, 0, 0)) > (this.width + 20)) { - Point center = bottom.add(1, currentHeight-3, 1); + Point center = bottom.add(1, currentHeight - 3, 1); unit.fork(setter -> new PeakRock(center, BlockPallet.STONE).generateStructure(setter)); } } @@ -119,9 +119,4 @@ public class SquarePlateTerrainGenerator extends PlateTerrainGenerator { } } - - private static double minTwo(double input) { - if(input < 2) return 2; - return input; - } }