From 17e58b86bbbac8f09923a43dcd44502e9b49909e Mon Sep 17 00:00:00 2001 From: o7Moon <0167moon@gmail.com> Date: Fri, 29 Dec 2023 14:08:03 -0600 Subject: [PATCH] ablilty to remove blocks from the slipperiness map --- .../openboatutils/ClientboundPackets.java | 12 +++++++++- .../o7moon/openboatutils/OpenBoatUtils.java | 16 +++++++++++++ .../openboatutils/SingleplayerCommands.java | 23 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/o7moon/openboatutils/ClientboundPackets.java b/src/main/java/dev/o7moon/openboatutils/ClientboundPackets.java index 86a58b9..7809139 100644 --- a/src/main/java/dev/o7moon/openboatutils/ClientboundPackets.java +++ b/src/main/java/dev/o7moon/openboatutils/ClientboundPackets.java @@ -26,7 +26,9 @@ public enum ClientboundPackets { SET_EXCLUSIVE_MODE, SET_COYOTE_TIME, SET_WATER_JUMPING, - SET_SWIM_FORCE; + SET_SWIM_FORCE, + REMOVE_BLOCKS_SLIPPERINESS, + CLEAR_SLIPPERINESS; public static void registerHandlers(){ ClientPlayNetworking.registerGlobalReceiver(OpenBoatUtils.settingsChannel, (client, handler, buf, responseSender) -> { @@ -122,6 +124,14 @@ public static void registerHandlers(){ float force = buf.readFloat(); OpenBoatUtils.setSwimForce(force); return; + case 22: + blocks = buf.readString(); + blocksArray = blocks.split(","); + OpenBoatUtils.removeBlocksSlipperiness(Arrays.asList(blocksArray)); + return; + case 23: + OpenBoatUtils.clearSlipperinessMap(); + 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 fd268c6..b994294 100644 --- a/src/main/java/dev/o7moon/openboatutils/OpenBoatUtils.java +++ b/src/main/java/dev/o7moon/openboatutils/OpenBoatUtils.java @@ -232,4 +232,20 @@ public static void breakSlimePlease() { getSlipperinessMap().remove("minecraft:slime_block"); } } + public static void removeBlockSlipperiness(String block) { + enabled = true; + if (getSlipperinessMap().containsKey(block)) { + getSlipperinessMap().remove(block); + } + } + public static void removeBlocksSlipperiness(List blocks) { + enabled = true; + for (String block : blocks) { + removeBlockSlipperiness(block); + } + } + public static void clearSlipperinessMap() { + enabled = true; + slipperinessMap = new HashMap<>(); + } } diff --git a/src/main/java/dev/o7moon/openboatutils/SingleplayerCommands.java b/src/main/java/dev/o7moon/openboatutils/SingleplayerCommands.java index 463c01c..8ed5b4b 100644 --- a/src/main/java/dev/o7moon/openboatutils/SingleplayerCommands.java +++ b/src/main/java/dev/o7moon/openboatutils/SingleplayerCommands.java @@ -307,6 +307,29 @@ public static void registerCommands(){ }) ) ); + + dispatcher.register( + literal("removeblockslipperiness").then(argument("blocks", StringArgumentType.greedyString()).executes(ctx->{ + ServerPlayerEntity player = ctx.getSource().getPlayer(); + if (player == null) return 0; + PacketByteBuf packet = PacketByteBufs.create(); + packet.writeShort(ClientboundPackets.REMOVE_BLOCKS_SLIPPERINESS.ordinal()); + packet.writeString(StringArgumentType.getString(ctx,"blocks").trim()); + ServerPlayNetworking.send(player, OpenBoatUtils.settingsChannel, packet); + return 1; + })) + ); + + dispatcher.register( + literal("clearslipperiness").executes(ctx->{ + ServerPlayerEntity player = ctx.getSource().getPlayer(); + if (player == null) return 0; + PacketByteBuf packet = PacketByteBufs.create(); + packet.writeShort(ClientboundPackets.CLEAR_SLIPPERINESS.ordinal()); + ServerPlayNetworking.send(player, OpenBoatUtils.settingsChannel, packet); + return 1; + }) + ); }); } }