From 2a8428126fff06d14b6644a7951da6749c358f0e Mon Sep 17 00:00:00 2001 From: o7Moon <0167moon@gmail.com> Date: Fri, 26 Jan 2024 14:32:32 -0600 Subject: [PATCH] fix vanilla slipperinessmap and add mode series --- .../openboatutils/ClientboundPackets.java | 19 ++++++- .../o7moon/openboatutils/OpenBoatUtils.java | 2 +- .../openboatutils/SingleplayerCommands.java | 54 +++++++++++++++++++ 3 files changed, 73 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/o7moon/openboatutils/ClientboundPackets.java b/src/main/java/dev/o7moon/openboatutils/ClientboundPackets.java index 7809139..d39bbe0 100644 --- a/src/main/java/dev/o7moon/openboatutils/ClientboundPackets.java +++ b/src/main/java/dev/o7moon/openboatutils/ClientboundPackets.java @@ -28,7 +28,9 @@ public enum ClientboundPackets { SET_WATER_JUMPING, SET_SWIM_FORCE, REMOVE_BLOCKS_SLIPPERINESS, - CLEAR_SLIPPERINESS; + CLEAR_SLIPPERINESS, + MODE_SERIES, + EXCLUSIVE_MODE_SERIES; public static void registerHandlers(){ ClientPlayNetworking.registerGlobalReceiver(OpenBoatUtils.settingsChannel, (client, handler, buf, responseSender) -> { @@ -132,6 +134,21 @@ public static void registerHandlers(){ case 23: OpenBoatUtils.clearSlipperinessMap(); return; + case 24: + short amount = buf.readShort(); + for (int i = 0; i < amount; i++) { + mode = buf.readShort(); + Modes.setMode(Modes.values()[mode]); + } + return; + case 25: + OpenBoatUtils.resetSettings(); + amount = buf.readShort(); + for (int i = 0; i < amount; i++) { + mode = buf.readShort(); + Modes.setMode(Modes.values()[mode]); + } + return; } } catch (Exception E) { OpenBoatUtils.LOG.error("Error when handling clientbound openboatutils packet: "); diff --git a/src/main/java/dev/o7moon/openboatutils/OpenBoatUtils.java b/src/main/java/dev/o7moon/openboatutils/OpenBoatUtils.java index b994294..2256f6f 100644 --- a/src/main/java/dev/o7moon/openboatutils/OpenBoatUtils.java +++ b/src/main/java/dev/o7moon/openboatutils/OpenBoatUtils.java @@ -72,7 +72,7 @@ public static HashMap getVanillaSlipperinessMap() { if (vanillaSlipperinessMap == null) { vanillaSlipperinessMap = new HashMap<>(); for (Block b : Registries.BLOCK.stream().toList()) { - if (b.getSlipperiness() != 0.6){ + if (b.getSlipperiness() != 0.6f){ vanillaSlipperinessMap.put(Registries.BLOCK.getId(b).toString(), b.getSlipperiness()); } } diff --git a/src/main/java/dev/o7moon/openboatutils/SingleplayerCommands.java b/src/main/java/dev/o7moon/openboatutils/SingleplayerCommands.java index 8ed5b4b..9a74244 100644 --- a/src/main/java/dev/o7moon/openboatutils/SingleplayerCommands.java +++ b/src/main/java/dev/o7moon/openboatutils/SingleplayerCommands.java @@ -330,6 +330,60 @@ public static void registerCommands(){ return 1; }) ); + + dispatcher.register( + literal("modeseries").then(argument("modes", StringArgumentType.greedyString()).executes(ctx-> { + ServerPlayerEntity player = ctx.getSource().getPlayer(); + if (player == null) return 0; + Modes mode; + String[] strs = StringArgumentType.getString(ctx, "modes").split(","); + PacketByteBuf packet = PacketByteBufs.create(); + packet.writeShort(ClientboundPackets.MODE_SERIES.ordinal()); + packet.writeShort(strs.length); + for (String modeStr : strs) { + try { + mode = Modes.valueOf(modeStr.trim()); + } catch (Exception e) { + String valid_modes = ""; + for (Modes m : Modes.values()) { + valid_modes += m.toString() + " "; + } + ctx.getSource().sendMessage(Text.literal("Invalid mode! Valid modes are: "+valid_modes)); + return 0; + } + packet.writeShort(mode.ordinal()); + } + ServerPlayNetworking.send(player, OpenBoatUtils.settingsChannel, packet); + return 1; + })) + ); + + dispatcher.register( + literal("exclusivemodeseries").then(argument("modes", StringArgumentType.greedyString()).executes(ctx-> { + ServerPlayerEntity player = ctx.getSource().getPlayer(); + if (player == null) return 0; + Modes mode; + String[] strs = StringArgumentType.getString(ctx, "modes").split(","); + PacketByteBuf packet = PacketByteBufs.create(); + packet.writeShort(ClientboundPackets.EXCLUSIVE_MODE_SERIES.ordinal()); + packet.writeShort(strs.length); + for (String modeStr : strs) { + try { + mode = Modes.valueOf(modeStr.trim()); + } catch (Exception e) { + String valid_modes = ""; + for (Modes m : Modes.values()) { + valid_modes += m.toString() + " "; + } + ctx.getSource().sendMessage(Text.literal("Invalid mode! Valid modes are: "+valid_modes)); + return 0; + } + packet.writeShort(mode.ordinal()); + } + ServerPlayNetworking.send(player, OpenBoatUtils.settingsChannel, packet); + return 1; + })) + ); }); } }