From 1cdeac431f966c22179e7fa4a478e55a63340791 Mon Sep 17 00:00:00 2001 From: RaphiMC <50594595+RaphiMC@users.noreply.github.com> Date: Sat, 24 Jun 2023 01:50:50 +0200 Subject: [PATCH] Default disable fly on regular classic servers --- .../raphimc/vialegacy/ViaLegacyConfig.java | 7 ++++ .../vialegacy/platform/ViaLegacyConfig.java | 2 ++ .../Protocola1_0_15toc0_30.java | 3 +- .../storage/ClassicOpLevelStorage.java | 33 +++++++++++++------ .../Protocolc0_30toc0_30cpe.java | 1 + .../resources/assets/vialegacy/vialegacy.yml | 3 ++ 6 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/raphimc/vialegacy/ViaLegacyConfig.java b/src/main/java/net/raphimc/vialegacy/ViaLegacyConfig.java index 611f690..c266c2b 100644 --- a/src/main/java/net/raphimc/vialegacy/ViaLegacyConfig.java +++ b/src/main/java/net/raphimc/vialegacy/ViaLegacyConfig.java @@ -36,6 +36,7 @@ public class ViaLegacyConfig extends Config implements net.raphimc.vialegacy.pla private boolean remapBasedOnColor; private int classicChunkRange; private int chunksPerTick; + private boolean enableClassicFly; public ViaLegacyConfig(final File configFile) { super(configFile); @@ -57,6 +58,7 @@ public class ViaLegacyConfig extends Config implements net.raphimc.vialegacy.pla this.remapBasedOnColor = this.getBoolean("remap-based-on-color", true); this.classicChunkRange = this.getInt("classic-chunk-range", 10); this.chunksPerTick = this.getInt("chunks-per-tick", -1); + this.enableClassicFly = this.getBoolean("enable-classic-fly", false); } @Override @@ -118,4 +120,9 @@ public class ViaLegacyConfig extends Config implements net.raphimc.vialegacy.pla return this.chunksPerTick; } + @Override + public boolean enableClassicFly() { + return this.enableClassicFly; + } + } diff --git a/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyConfig.java b/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyConfig.java index f5950a4..ddc707e 100644 --- a/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyConfig.java +++ b/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyConfig.java @@ -37,4 +37,6 @@ public interface ViaLegacyConfig { int getChunksPerTick(); + boolean enableClassicFly(); + } diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/Protocola1_0_15toc0_30.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/Protocola1_0_15toc0_30.java index 145ddc1..ce45515 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/Protocola1_0_15toc0_30.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/Protocola1_0_15toc0_30.java @@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; +import net.raphimc.vialegacy.ViaLegacy; import net.raphimc.vialegacy.api.data.BlockList1_6; import net.raphimc.vialegacy.api.model.ChunkCoord; import net.raphimc.vialegacy.api.model.IdAndData; @@ -563,7 +564,7 @@ public class Protocola1_0_15toc0_30 extends AbstractProtocol ClassicBlocks.MAPPING.get(i), o -> { int block = ClassicBlocks.REVERSE_MAPPING.getInt(o); diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicOpLevelStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicOpLevelStorage.java index d6c9467..ebcc9ee 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicOpLevelStorage.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicOpLevelStorage.java @@ -31,16 +31,27 @@ public class ClassicOpLevelStorage extends StoredObject { private byte opLevel; - private boolean flying = true; - private boolean noClip = true; - private boolean speed = true; - private boolean respawn = true; + private final boolean haxEnabled; + private boolean flying = false; + private boolean noClip = false; + private boolean speed = false; + private boolean respawn = false; - public ClassicOpLevelStorage(final UserConnection user) { + public ClassicOpLevelStorage(final UserConnection user, final boolean haxEnabled) { super(user); + this.haxEnabled = haxEnabled; + + if (haxEnabled) { + this.flying = true; + this.noClip = true; + this.speed = true; + this.respawn = true; + } } public void updateHax(final boolean flying, final boolean noClip, final boolean speed, final boolean respawn) throws Exception { + if (!this.haxEnabled) return; + boolean changed = this.flying != flying; changed |= this.noClip != noClip; changed |= this.speed != speed; @@ -75,10 +86,12 @@ public class ClassicOpLevelStorage extends StoredObject { final boolean changed = this.opLevel != opLevel; this.opLevel = opLevel; - final ClassicServerTitleStorage serverTitleStorage = this.getUser().get(ClassicServerTitleStorage.class); - this.updateHax(serverTitleStorage.isFlyEffectivelyEnabled(), serverTitleStorage.isNoclipEffectivelyEnabled(), serverTitleStorage.isSpeedEffectivelyEnabled(), serverTitleStorage.isRespawnEffectivelyEnabled()); - if (changed) { - this.updateAbilities(); + if (this.haxEnabled) { + final ClassicServerTitleStorage serverTitleStorage = this.getUser().get(ClassicServerTitleStorage.class); + this.updateHax(serverTitleStorage.isFlyEffectivelyEnabled(), serverTitleStorage.isNoclipEffectivelyEnabled(), serverTitleStorage.isSpeedEffectivelyEnabled(), serverTitleStorage.isRespawnEffectivelyEnabled()); + if (changed) { + this.updateAbilities(); + } } } @@ -93,7 +106,7 @@ public class ClassicOpLevelStorage extends StoredObject { playerAbilities.write(Type.BOOLEAN, false); // flying playerAbilities.write(Type.BOOLEAN, this.flying); // allow flying playerAbilities.write(Type.BOOLEAN, true); // creative mode - playerAbilities.send(Protocol1_2_4_5to1_2_1_3.class); + playerAbilities.scheduleSend(Protocol1_2_4_5to1_2_1_3.class); } } diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java index 30ffde9..933ca0c 100644 --- a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java @@ -348,6 +348,7 @@ public class Protocolc0_30toc0_30cpe extends AbstractProtocol { diff --git a/src/main/resources/assets/vialegacy/vialegacy.yml b/src/main/resources/assets/vialegacy/vialegacy.yml index 1cd6afd..6b80c7e 100644 --- a/src/main/resources/assets/vialegacy/vialegacy.yml +++ b/src/main/resources/assets/vialegacy/vialegacy.yml @@ -26,3 +26,6 @@ classic-chunk-range: 10 # # How many chunks should be sent to the client per movement tick (-1 for auto) chunks-per-tick: -1 +# +# Enable fly on regular (non CPE) classic servers +enable-classic-fly: false