From c73d4a5c7a8d354c2e613bb4970d02a2ddd36134 Mon Sep 17 00:00:00 2001 From: 1024_byteeeee <2270484921@qq.com> Date: Mon, 21 Sep 2026 17:18:40 +0800 Subject: [PATCH 1/2] mc26.3 --- build.gradle | 2 + minecraftVersions.json | 3 +- run/options.txt | 8 ++- .../top/byteeeee/fuzz/key/KeyMappings.java | 12 ++++- .../letFluidInteractLikeAir/EntityMixin.java | 29 ++++++---- .../LocalPlayerMixin.java | 32 ++++------- .../letFluidInteractLikeAir/PlayerMixin.java | 4 ++ .../rule/skyColor/SkyRenderStateMixin.java | 53 ++++++++++++++++--- .../CoordCompassRenderer.java | 7 +++ .../top/byteeeee/fuzz/utils/ClientUtil.java | 8 +-- versions/26.3/fuzz.accesswidener | 1 + versions/26.3/gradle.properties | 16 ++++++ versions/mapping-26.2-26.3.txt | 0 13 files changed, 127 insertions(+), 48 deletions(-) create mode 100644 versions/26.3/fuzz.accesswidener create mode 100644 versions/26.3/gradle.properties create mode 100644 versions/mapping-26.2-26.3.txt diff --git a/build.gradle b/build.gradle index 9101f24..fa95a51 100644 --- a/build.gradle +++ b/build.gradle @@ -10,8 +10,10 @@ preprocess { def mc260102 = createNode('26.1.2', 26_01_02, '') def mc260200 = createNode('26.2', 26_02_00, '') + def mc260300 = createNode('26.3', 26_03_00, '') mc260102.link(mc260200, file('versions/mapping-26.1.2-26.2.txt')) + mc260200.link(mc260300, file('versions/mapping-26.2-26.3.txt')) } tasks.register('buildAndGather') { diff --git a/minecraftVersions.json b/minecraftVersions.json index 11c710f..fc23099 100644 --- a/minecraftVersions.json +++ b/minecraftVersions.json @@ -1,6 +1,7 @@ { "versions": [ "26.1.2", - "26.2" + "26.2", + "26.3" ] } diff --git a/run/options.txt b/run/options.txt index 51d9c49..a68eceb 100644 --- a/run/options.txt +++ b/run/options.txt @@ -1,4 +1,4 @@ -version:4903 +version:5023 ao:true biomeBlendRadius:2 chunkSectionFadeInTime:0.75 @@ -18,8 +18,10 @@ graphicsPreset:"custom" prioritizeChunkUpdates:0 fullscreen:false exclusiveFullscreen:false +macFullscreenMenuVisibility:false gamma:0.5 guiScale:0 +debugGuiScale:0 maxAnisotropyBit:2 textureFiltering:0 maxFps:260 @@ -89,8 +91,9 @@ mainHand:"right" attackIndicator:1 tutorialStep:none mouseWheelSensitivity:1.0 -rawMouseInput:true allowCursorChanges:true +quitShortcuts:true +ctrlClickEmulatesRightClick:false glDebugVerbosity:1 skipMultiplayerWarning:true hideMatchedNames:true @@ -170,6 +173,7 @@ key_key.debug.profilingChart:key.keyboard.1 key_key.debug.fpsCharts:key.keyboard.2 key_key.debug.networkCharts:key.keyboard.3 key_key.debug.lightmapTexture:key.keyboard.4 +key_key.debug.improvedTransparency:key.keyboard.x key_快捷踢出假人:key.keyboard.unknown key_快捷扔出假人背包:key.keyboard.unknown key_清除坐标罗盘:key.keyboard.unknown diff --git a/src/main/java/top/byteeeee/fuzz/key/KeyMappings.java b/src/main/java/top/byteeeee/fuzz/key/KeyMappings.java index d1132b2..6dddf75 100644 --- a/src/main/java/top/byteeeee/fuzz/key/KeyMappings.java +++ b/src/main/java/top/byteeeee/fuzz/key/KeyMappings.java @@ -29,7 +29,9 @@ import com.mojang.blaze3d.platform.InputConstants; import org.jspecify.annotations.NonNull; +//#if MC<260300 import org.lwjgl.glfw.GLFW; +//#endif import top.byteeeee.fuzz.utils.IdentifierUtil; import top.byteeeee.fuzz.translations.Translator; @@ -58,7 +60,15 @@ private static class FuzzKeyBinding extends KeyMapping { private final String translationKey; public FuzzKeyBinding(String translationKey) { - super(tr.tr(translationKey).getString(), InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_UNKNOWN, FUZZ_CATEGORY); + super( + tr.tr(translationKey).getString(), + //#if MC>=260300 + //$$ InputConstants.Type.KEYBOARD, InputConstants.UNKNOWN.getValue(), + //#else + InputConstants.Type.KEYSYM, GLFW.GLFW_KEY_UNKNOWN, + //#endif + FUZZ_CATEGORY + ); this.translationKey = translationKey; } diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/EntityMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/EntityMixin.java index a6ad801..ebab01a 100644 --- a/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/EntityMixin.java +++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/EntityMixin.java @@ -21,7 +21,6 @@ package top.byteeeee.fuzz.mixin.rule.letFluidInteractLikeAir; import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; @@ -32,6 +31,9 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import top.byteeeee.fuzz.FuzzSettings; import top.byteeeee.fuzz.utils.ClientUtil; @@ -94,22 +96,27 @@ private boolean noPush(Entity entity, Operation original) { } } - @WrapWithCondition( - method = "setSwimming", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/entity/Entity;setSharedFlag(IZ)V" - ) - ) - private boolean setSwimming(Entity entity, int index, boolean value) { - return !FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity); + @Inject(method = "setSwimming", at = @At("HEAD"), cancellable = true) + private void setSwimming(CallbackInfo ci) { + Entity entity = (Entity) (Object) this; + if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity)) { + ci.cancel(); + } + } + + @Inject(method = "isSwimming", at = @At("HEAD"), cancellable = true) + private void isSwimming(CallbackInfoReturnable cir) { + Entity entity = (Entity) (Object) this; + if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity)) { + cir.setReturnValue(false); + } } @ModifyReturnValue(method = "getFluidHeight", at = @At("RETURN")) private double getFluidHeight(double original) { Entity entity = (Entity) (Object) this; if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity)) { - return 0.114514D; + return 0.0D; } else { return original; } diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/LocalPlayerMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/LocalPlayerMixin.java index df9a26c..867ed9a 100644 --- a/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/LocalPlayerMixin.java +++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/LocalPlayerMixin.java @@ -20,21 +20,17 @@ package top.byteeeee.fuzz.mixin.rule.letFluidInteractLikeAir; +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import org.spongepowered.asm.mixin.Mixin; - -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import top.byteeeee.fuzz.FuzzSettings; import top.byteeeee.fuzz.utils.ClientUtil; @@ -42,10 +38,6 @@ @Environment(EnvType.CLIENT) @Mixin(value = LocalPlayer.class, priority = 1688) public abstract class LocalPlayerMixin { - - @Shadow - private boolean wasSprinting; - @WrapMethod(method = "updateIsUnderwater") private boolean preventSwimmingWhileSprinting(Operation original) { LocalPlayer player = (LocalPlayer) (Object) this; @@ -56,18 +48,14 @@ private boolean preventSwimmingWhileSprinting(Operation original) { } } - @Inject(method = "sendPosition", at = @At("HEAD"), cancellable = true) - private void onSendMovementPackets(CallbackInfo ci) { - if (FuzzSettings.letFluidInteractLikeAir) { - final Minecraft client = ClientUtil.getCurrentClient(); - final LocalPlayer player = ClientUtil.getCurrentPlayer(); - if (!client.isLocalServer() && client.getCurrentServer() != null) { - boolean isSprinting = player.isSprinting(); - if (isSprinting != this.wasSprinting) { - this.wasSprinting = isSprinting; - ci.cancel(); - } - } - } + @ModifyExpressionValue( + method = "sendIsSprintingIfNeeded", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/player/LocalPlayer;isSprinting()Z" + ) + ) + private boolean hideSprintingFromServer(boolean original) { + return original && !FuzzSettings.letFluidInteractLikeAir; } } diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/PlayerMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/PlayerMixin.java index f2b5e6d..4893f2a 100644 --- a/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/PlayerMixin.java +++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/PlayerMixin.java @@ -41,7 +41,11 @@ public abstract class PlayerMixin { method = "tryToStartFallFlying", at = @At( value = "INVOKE", + //#if MC>=260300 + //$$ target = "Lnet/minecraft/world/entity/player/Player;isInLiquid()Z" + //#else target = "Lnet/minecraft/world/entity/player/Player;isInWater()Z" + //#endif ) ) private boolean checkFallFlying(Player player, Operation original) { diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/skyColor/SkyRenderStateMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/skyColor/SkyRenderStateMixin.java index ea84d63..ee94f4a 100644 --- a/src/main/java/top/byteeeee/fuzz/mixin/rule/skyColor/SkyRenderStateMixin.java +++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/skyColor/SkyRenderStateMixin.java @@ -27,8 +27,13 @@ import net.fabricmc.api.Environment; import net.minecraft.client.renderer.SkyRenderer; - import net.minecraft.client.renderer.state.level.SkyRenderState; + +//#if MC>=260300 +//$$ import org.joml.Vector3f; +//$$ import org.joml.Vector3fc; +//#endif + import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; @@ -36,11 +41,37 @@ import top.byteeeee.fuzz.FuzzSettings; -import java.util.Objects; - @Environment(EnvType.CLIENT) @Mixin(SkyRenderer.class) public abstract class SkyRenderStateMixin { + //#if MC>=260300 + //$$ @WrapOperation( + //$$ method = "extractRenderState", + //$$ at = @At( + //$$ value = "FIELD", + //$$ target = "Lnet/minecraft/client/renderer/state/level/SkyRenderState;skyColor:Lorg/joml/Vector3fc;", + //$$ opcode = Opcodes.PUTFIELD + //$$ ) + //$$ ) + //$$ private void modifySkyColor( + //$$ SkyRenderState state, + //$$ Vector3fc value, + //$$ Operation original + //$$ ) { + //$$ if ("false".equals(FuzzSettings.skyColor)) { + //$$ original.call(state, value); + //$$ return; + //$$ } + //$$ + //$$ int rgb = Integer.parseInt(FuzzSettings.skyColor.substring(1), 16); + //$$ Vector3fc customColor = new Vector3f( + //$$ ((rgb >>> 16) & 0xFF) / 255.0F, + //$$ ((rgb >>> 8) & 0xFF) / 255.0F, + //$$ (rgb & 0xFF) / 255.0F + //$$ ); + //$$ original.call(state, customColor); + //$$ } + //#else @WrapOperation( method = "extractRenderState", at = @At( @@ -49,12 +80,18 @@ public abstract class SkyRenderStateMixin { opcode = Opcodes.PUTFIELD ) ) - private static void modifySkyColor(SkyRenderState state, int value, Operation original) { - if (!Objects.equals(FuzzSettings.skyColor, "false")) { - int customColor = Integer.parseInt(FuzzSettings.skyColor.substring(1), 16); - original.call(state, customColor); - } else { + private static void modifySkyColor( + SkyRenderState state, + int value, + Operation original + ) { + if ("false".equals(FuzzSettings.skyColor)) { original.call(state, value); + return; } + + int customColor = Integer.parseInt(FuzzSettings.skyColor.substring(1), 16); + original.call(state, customColor); } + //#endif } diff --git a/src/main/java/top/byteeeee/fuzz/renderer/rule/commandCoordCompass/CoordCompassRenderer.java b/src/main/java/top/byteeeee/fuzz/renderer/rule/commandCoordCompass/CoordCompassRenderer.java index 763426b..4ed14a9 100644 --- a/src/main/java/top/byteeeee/fuzz/renderer/rule/commandCoordCompass/CoordCompassRenderer.java +++ b/src/main/java/top/byteeeee/fuzz/renderer/rule/commandCoordCompass/CoordCompassRenderer.java @@ -36,6 +36,9 @@ import net.minecraft.resources.Identifier; import net.minecraft.world.phys.Vec3; +//#if MC>=260300 +//$$ import org.joml.Matrix4f; +//#endif import org.joml.Quaternionf; import top.byteeeee.fuzz.FuzzSettings; @@ -96,7 +99,11 @@ protected static void renderWorld(LevelRenderContext context) { float yaw = -camera.yRot(); float pitch = camera.xRot(); + //#if MC>=260300 + //$$ matrixStack.mulPose(new Matrix4f().rotation(new Quaternionf().rotationYXZ((float)Math.toRadians(yaw), (float)Math.toRadians(pitch), 0))); + //#else matrixStack.mulPose(new Quaternionf().rotationYXZ((float)Math.toRadians(yaw), (float)Math.toRadians(pitch), 0)); + //#endif float scale = 1.0F; matrixStack.scale(scale, scale, scale); //#if MC<260200 diff --git a/src/main/java/top/byteeeee/fuzz/utils/ClientUtil.java b/src/main/java/top/byteeeee/fuzz/utils/ClientUtil.java index 008f95d..f7f657b 100644 --- a/src/main/java/top/byteeeee/fuzz/utils/ClientUtil.java +++ b/src/main/java/top/byteeeee/fuzz/utils/ClientUtil.java @@ -38,11 +38,13 @@ public static LocalPlayer getCurrentPlayer() { } public static boolean isLocalPlayerSelf(Entity entity) { - if (getCurrentPlayer() != null) { - return entity.is(getCurrentPlayer()); - } else { + LocalPlayer player = getCurrentPlayer(); + + if (player == null) { return false; } + + return entity == player || entity.getUUID().equals(player.getUUID()); } public static boolean isLocalPlayerTicking() { diff --git a/versions/26.3/fuzz.accesswidener b/versions/26.3/fuzz.accesswidener new file mode 100644 index 0000000..33eaa64 --- /dev/null +++ b/versions/26.3/fuzz.accesswidener @@ -0,0 +1 @@ +accessWidener v1 official diff --git a/versions/26.3/gradle.properties b/versions/26.3/gradle.properties new file mode 100644 index 0000000..0987896 --- /dev/null +++ b/versions/26.3/gradle.properties @@ -0,0 +1,16 @@ +# Fabric Properties +# check these on https://fabricmc.net/develop/ +minecraft_version = 26.3 + +# Fabric Mod Metadata +minecraft_dependency = >=26.3 +fabric_api_dependency = >=0.161.0+26.3 + +# Build Infomation +game_versions = 26.3 + +fabric_api_version = 0.161.0+26.3 +# fabric_module_version = 0.133.10+1.21.9 + +# https://masa.dy.fi/maven/carpet/fabric-carpet/ +# carpet_core_version = 1.21.11-1.4.193+v251211 diff --git a/versions/mapping-26.2-26.3.txt b/versions/mapping-26.2-26.3.txt new file mode 100644 index 0000000..e69de29 From 99aba7f3da30068f5e7267f86daaf758557e153c Mon Sep 17 00:00:00 2001 From: 1024_byteeeee <2270484921@qq.com> Date: Mon, 21 Sep 2026 17:18:57 +0800 Subject: [PATCH 2/2] v1.6.13 -> v1.6.14 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b6ec93c..145e2e0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ loader_version = 0.19.3 # Mod Properties mod_id = fuzz mod_name = Fuzz -mod_version = 1.6.13 +mod_version = 1.6.14 maven_group = top.1024byteeeee archives_base_name = Fuzz