diff --git a/gradle.properties b/gradle.properties
index b419161..b6ec93c 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.12
+mod_version = 1.6.13
maven_group = top.1024byteeeee
archives_base_name = Fuzz
diff --git a/run/options.txt b/run/options.txt
index 2be01bd..51d9c49 100644
--- a/run/options.txt
+++ b/run/options.txt
@@ -1,4 +1,4 @@
-version:4788
+version:4903
ao:true
biomeBlendRadius:2
chunkSectionFadeInTime:0.75
@@ -13,6 +13,7 @@ fovEffectScale:1.0
darknessEffectScale:1.0
glintSpeed:0.5
glintStrength:0.75
+preferredGraphicsBackend:"default"
graphicsPreset:"custom"
prioritizeChunkUpdates:0
fullscreen:false
@@ -30,7 +31,7 @@ particles:0
reducedDebugInfo:false
renderClouds:"false"
cloudRange:128
-renderDistance:32
+renderDistance:2
simulationDistance:5
screenEffectScale:1.0
soundDevice:""
@@ -49,7 +50,6 @@ invertYMouse:false
realmsNotifications:true
showSubtitles:false
directionalAudio:false
-touchscreen:false
bobView:true
toggleCrouch:false
toggleSprint:false
@@ -59,12 +59,12 @@ sprintWindow:7
darkMojangStudiosBackground:false
hideLightningFlashes:false
hideSplashTexts:false
-mouseSensitivity:0.5
+mouseSensitivity:0.3287943808685447
damageTiltStrength:1.0
highContrast:false
highContrastBlockOutline:false
narratorHotkey:true
-resourcePacks:["vanilla"]
+resourcePacks:["vanilla","fuzz_mod:chest_optimization"]
incompatibleResourcePacks:[]
lastServer:
lang:zh_cn
@@ -98,6 +98,8 @@ joinedFirstServer:false
syncChunkWrites:true
showAutosaveIndicator:true
allowServerListing:true
+inGameNotification:false
+sharePresence:"all"
onlyShowSecureChat:false
saveChatDrafts:false
panoramaScrollSpeed:1.0
@@ -122,6 +124,7 @@ key_key.chat:key.keyboard.t
key_key.playerlist:key.keyboard.tab
key_key.pickItem:key.mouse.middle
key_key.command:key.keyboard.slash
+key_key.friends:key.keyboard.o
key_key.socialInteractions:key.keyboard.p
key_key.toggleGui:key.keyboard.f1
key_key.toggleSpectatorShaderEffects:key.keyboard.f4
@@ -170,7 +173,7 @@ key_key.debug.lightmapTexture:key.keyboard.4
key_快捷踢出假人:key.keyboard.unknown
key_快捷扔出假人背包:key.keyboard.unknown
key_清除坐标罗盘:key.keyboard.unknown
-soundCategory_master:0.24668874
+soundCategory_master:1.0
soundCategory_music:0.0
soundCategory_record:1.0
soundCategory_weather:1.0
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/hooks/LocalPlayerMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/hooks/LocalPlayerMixin.java
new file mode 100644
index 0000000..7915026
--- /dev/null
+++ b/src/main/java/top/byteeeee/fuzz/mixin/hooks/LocalPlayerMixin.java
@@ -0,0 +1,53 @@
+/*
+ * This file is part of the Fuzz project, licensed under the
+ * GNU Lesser General Public License v3.0
+ *
+ * Copyright (C) 2026 1024_byteeeee and contributors
+ *
+ * Fuzz is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Fuzz is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Fuzz. If not, see .
+ */
+
+package top.byteeeee.fuzz.mixin.hooks;
+
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+
+import net.minecraft.client.player.LocalPlayer;
+
+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 top.byteeeee.fuzz.utils.ClientUtil;
+
+@Environment(EnvType.CLIENT)
+@Mixin(LocalPlayer.class)
+public abstract class LocalPlayerMixin {
+ @Inject(method = "tick", at = @At("HEAD"))
+ private void onTickStart(CallbackInfo ci) {
+ LocalPlayer player = (LocalPlayer) (Object) this;
+ if (ClientUtil.isLocalPlayerSelf(player)) {
+ ClientUtil.setLocalPlayerTicking(true);
+ }
+ }
+
+ @Inject(method = "tick", at = @At("RETURN"))
+ private void onTickEnd(CallbackInfo ci) {
+ LocalPlayer player = (LocalPlayer) (Object) this;
+ if (ClientUtil.isLocalPlayerSelf(player)) {
+ ClientUtil.removeLocalPlayerTicking();
+ }
+ }
+}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/bubbleColumnInteractDisabled/BubbleColumnBlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/bubbleColumnInteractDisabled/BubbleColumnBlockMixin.java
index f2aff01..89d5ee6 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/bubbleColumnInteractDisabled/BubbleColumnBlockMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/bubbleColumnInteractDisabled/BubbleColumnBlockMixin.java
@@ -44,7 +44,7 @@
public abstract class BubbleColumnBlockMixin {
@WrapMethod(method = "entityInside")
private void onEntityCollision(BlockState state, Level world, BlockPos pos, Entity entity, InsideBlockEffectApplier handler, boolean bl, Operation original) {
- if (FuzzSettings.bubbleColumnInteractDisabled && entity.equals(ClientUtil.getCurrentPlayer())) {
+ if (FuzzSettings.bubbleColumnInteractDisabled && ClientUtil.isLocalPlayerSelf(entity)) {
Noop.noop();
} else {
original.call(state, world, pos, entity,handler,bl);
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/cobwebSlowDownDisabled/WebBlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/cobwebSlowDownDisabled/WebBlockMixin.java
index f68239c..7abcc3d 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/cobwebSlowDownDisabled/WebBlockMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/cobwebSlowDownDisabled/WebBlockMixin.java
@@ -44,7 +44,7 @@ public abstract class WebBlockMixin {
)
)
private void slowDownDisabled(Entity entity, BlockState blockState, Vec3 speedMultiplier, Operation original) {
- if (FuzzSettings.cobwebSlowDownDisabled && entity.equals(ClientUtil.getCurrentPlayer())) {
+ if (FuzzSettings.cobwebSlowDownDisabled && ClientUtil.isLocalPlayerSelf(entity)) {
Noop.noop();
} else {
original.call(entity, blockState, speedMultiplier);
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/fluidPushDisabled/PlayerMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/fluidPushDisabled/PlayerMixin.java
index d1ad612..a5bf16b 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/fluidPushDisabled/PlayerMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/fluidPushDisabled/PlayerMixin.java
@@ -40,6 +40,6 @@ public abstract class PlayerMixin {
@ModifyReturnValue(method = "isPushedByFluid", at = @At("RETURN"))
public boolean isPushedByFluids(boolean original) {
Player player = (Player) (Object) this;
- return FuzzSettings.fluidPushDisabled && player.equals(ClientUtil.getCurrentPlayer()) ? false : original;
+ return FuzzSettings.fluidPushDisabled && ClientUtil.isLocalPlayerSelf(player) ? false : original;
}
}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/honeyBlockSlowDownDisabled/BlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/honeyBlockSlowDownDisabled/BlockMixin.java
new file mode 100644
index 0000000..beb0094
--- /dev/null
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/honeyBlockSlowDownDisabled/BlockMixin.java
@@ -0,0 +1,82 @@
+/*
+ * This file is part of the Fuzz project, licensed under the
+ * GNU Lesser General Public License v3.0
+ *
+ * Copyright (C) 2026 1024_byteeeee and contributors
+ *
+ * Fuzz is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Fuzz is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Fuzz. If not, see .
+ */
+
+package top.byteeeee.fuzz.mixin.rule.honeyBlockSlowDownDisabled;
+
+import com.llamalad7.mixinextras.injector.ModifyReturnValue;
+
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.HoneyBlock;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+
+import top.byteeeee.fuzz.FuzzSettings;
+import top.byteeeee.fuzz.utils.ClientUtil;
+
+@Environment(EnvType.CLIENT)
+@Mixin(Block.class)
+public abstract class BlockMixin {
+ @ModifyReturnValue(method = "getFriction", at = @At("RETURN"))
+ private float modifyFriction(float original){
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.honeyBlockSlowDownDisabled && block instanceof HoneyBlock) {
+ return Blocks.TNT.getFriction();
+ } else {
+ return original;
+ }
+ }
+
+ @ModifyReturnValue(method = "getSpeedFactor", at = @At("RETURN"))
+ private float modifySpeedFactor(float original) {
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.honeyBlockSlowDownDisabled && block instanceof HoneyBlock) {
+ return Blocks.TNT.getSpeedFactor();
+ } else {
+ return original;
+ }
+ }
+
+ @ModifyReturnValue(method = "getJumpFactor", at = @At("RETURN"))
+ private float modifyJumpFactor(float original) {
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.honeyBlockSlowDownDisabled && block instanceof HoneyBlock) {
+ return Blocks.TNT.getJumpFactor();
+ } else {
+ return original;
+ }
+ }
+}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/honeyBlockSlowDownDisabled/HoneyBlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/honeyBlockSlowDownDisabled/HoneyBlockMixin.java
deleted file mode 100644
index 3f68ffc..0000000
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/honeyBlockSlowDownDisabled/HoneyBlockMixin.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * This file is part of the Fuzz project, licensed under the
- * GNU Lesser General Public License v3.0
- *
- * Copyright (C) 2025 1024_byteeeee and contributors
- *
- * Fuzz is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Fuzz is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Fuzz. If not, see .
- */
-
-package top.byteeeee.fuzz.mixin.rule.honeyBlockSlowDownDisabled;
-
-import net.fabricmc.api.EnvType;
-import net.fabricmc.api.Environment;
-
-import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.Blocks;
-import net.minecraft.world.level.block.HoneyBlock;
-
-import org.spongepowered.asm.mixin.Mixin;
-
-import top.byteeeee.fuzz.FuzzSettings;
-
-@Environment(EnvType.CLIENT)
-@Mixin(HoneyBlock.class)
-public abstract class HoneyBlockMixin extends Block {
- public HoneyBlockMixin(Properties settings) {
- super(settings);
- }
-
- @Override
- public float getSpeedFactor() {
- return FuzzSettings.honeyBlockSlowDownDisabled ? Blocks.TNT.getSpeedFactor() : super.getSpeedFactor();
- }
-
- @Override
- public float getJumpFactor() {
- return FuzzSettings.honeyBlockSlowDownDisabled ? Blocks.TNT.getJumpFactor() : super.getJumpFactor();
- }
-}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/iceSlipperinessDisabled/LivingEntityMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/iceSlipperinessDisabled/LivingEntityMixin.java
index 78179f3..9287608 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/iceSlipperinessDisabled/LivingEntityMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/iceSlipperinessDisabled/LivingEntityMixin.java
@@ -49,7 +49,7 @@ public abstract class LivingEntityMixin {
)
private float iceSlipperinessDisabled(Block block, Operation original) {
LivingEntity entity = (LivingEntity) (Object) this;
- if (FuzzSettings.iceSlipperinessDisabled && entity.equals(ClientUtil.getCurrentPlayer()) && IceFamily.isIce(block)) {
+ if (FuzzSettings.iceSlipperinessDisabled && ClientUtil.isLocalPlayerSelf(entity) && IceFamily.isIce(block)) {
return Blocks.TNT.getFriction();
} else {
return original.call(block);
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/jumpDelayDisabled/LivingEntityMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/jumpDelayDisabled/LivingEntityMixin.java
index 7f35912..eed144a 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/jumpDelayDisabled/LivingEntityMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/jumpDelayDisabled/LivingEntityMixin.java
@@ -45,7 +45,7 @@ public abstract class LivingEntityMixin {
private void removeJumpDelay1(CallbackInfo ci) {
if (FuzzSettings.jumpDelayDisabled) {
LivingEntity entity = (LivingEntity) (Object) this;
- if (entity.equals(ClientUtil.getCurrentPlayer())) {
+ if (ClientUtil.isLocalPlayerSelf(entity)) {
this.noJumpDelay = 0;
}
}
@@ -55,7 +55,7 @@ private void removeJumpDelay1(CallbackInfo ci) {
private void removeJumpDelay2(CallbackInfo ci) {
if (FuzzSettings.jumpDelayDisabled) {
LivingEntity entity = (LivingEntity) (Object) this;
- if (entity.equals(ClientUtil.getCurrentPlayer())) {
+ if (ClientUtil.isLocalPlayerSelf(entity)) {
this.noJumpDelay = 0;
}
}
@@ -65,7 +65,7 @@ private void removeJumpDelay2(CallbackInfo ci) {
private void removeJumpDelay3(CallbackInfo ci) {
if (FuzzSettings.jumpDelayDisabled) {
LivingEntity entity = (LivingEntity) (Object) this;
- if (entity.equals(ClientUtil.getCurrentPlayer())) {
+ if (ClientUtil.isLocalPlayerSelf(entity)) {
this.noJumpDelay = 0;
}
}
@@ -75,7 +75,7 @@ private void removeJumpDelay3(CallbackInfo ci) {
private void removeJumpDelay4(CallbackInfo ci) {
if (FuzzSettings.jumpDelayDisabled) {
LivingEntity entity = (LivingEntity) (Object) this;
- if (entity.equals(ClientUtil.getCurrentPlayer())) {
+ if (ClientUtil.isLocalPlayerSelf(entity)) {
this.noJumpDelay = 0;
}
}
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 a44e36a..a6ad801 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
@@ -42,7 +42,7 @@ public abstract class EntityMixin {
@ModifyReturnValue(method = "isInWater", at = @At("RETURN"))
private boolean isInWater(boolean original) {
Entity entity = (Entity) (Object) this;
- if (FuzzSettings.letFluidInteractLikeAir && entity.equals(ClientUtil.getCurrentPlayer()) && !entity.isOnFire()) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity) && !entity.isOnFire()) {
return false;
} else {
return original;
@@ -52,7 +52,7 @@ private boolean isInWater(boolean original) {
@ModifyReturnValue(method = "isInShallowWater", at = @At("RETURN"))
private boolean isInShallowWater(boolean original) {
Entity entity = (Entity) (Object) this;
- if (FuzzSettings.letFluidInteractLikeAir && entity.equals(ClientUtil.getCurrentPlayer()) && !entity.isOnFire()) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity) && !entity.isOnFire()) {
return false;
} else {
return original;
@@ -62,7 +62,7 @@ private boolean isInShallowWater(boolean original) {
@ModifyReturnValue(method = "isInLava", at = @At("RETURN"))
private boolean isInLava(boolean original) {
Entity entity = (Entity) (Object) this;
- if (FuzzSettings.letFluidInteractLikeAir && entity.equals(ClientUtil.getCurrentPlayer()) && !entity.isOnFire()) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity) && !entity.isOnFire()) {
return false;
} else {
return original;
@@ -72,7 +72,7 @@ private boolean isInLava(boolean original) {
@ModifyReturnValue(method = "updateFluidInteraction", at = @At("RETURN"))
private boolean noUpdate(boolean original) {
Entity entity = (Entity) (Object) this;
- if (FuzzSettings.letFluidInteractLikeAir && entity.equals(ClientUtil.getCurrentPlayer()) && !entity.isOnFire()) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity) && !entity.isOnFire()) {
return false;
} else {
return original;
@@ -87,7 +87,7 @@ private boolean noUpdate(boolean original) {
)
)
private boolean noPush(Entity entity, Operation original) {
- if (FuzzSettings.letFluidInteractLikeAir && entity.equals(ClientUtil.getCurrentPlayer()) && !entity.isOnFire()) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity) && !entity.isOnFire()) {
return false;
} else {
return original.call(entity);
@@ -102,13 +102,13 @@ private boolean noPush(Entity entity, Operation original) {
)
)
private boolean setSwimming(Entity entity, int index, boolean value) {
- return !FuzzSettings.letFluidInteractLikeAir && entity.equals(ClientUtil.getCurrentPlayer());
+ return !FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity);
}
@ModifyReturnValue(method = "getFluidHeight", at = @At("RETURN"))
private double getFluidHeight(double original) {
Entity entity = (Entity) (Object) this;
- if (FuzzSettings.letFluidInteractLikeAir && entity.equals(ClientUtil.getCurrentPlayer())) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity)) {
return 0.114514D;
} else {
return original;
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/LivingEntityMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/LivingEntityMixin.java
index bc3abda..e25f700 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/LivingEntityMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/letFluidInteractLikeAir/LivingEntityMixin.java
@@ -46,7 +46,7 @@ public abstract class LivingEntityMixin {
)
)
private boolean travel(LivingEntity entity, FluidState fluidState, Operation original) {
- if (FuzzSettings.letFluidInteractLikeAir && entity.equals(ClientUtil.getCurrentPlayer()) && entity.isInLava()) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(entity) && entity.isInLava()) {
return false;
} else {
return original.call(entity,fluidState);
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 aaf1e99..df9a26c 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
@@ -49,7 +49,7 @@ public abstract class LocalPlayerMixin {
@WrapMethod(method = "updateIsUnderwater")
private boolean preventSwimmingWhileSprinting(Operation original) {
LocalPlayer player = (LocalPlayer) (Object) this;
- if (FuzzSettings.letFluidInteractLikeAir && player.equals(ClientUtil.getCurrentPlayer()) && !player.isOnFire()) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(player) && !player.isOnFire()) {
return false;
} else {
return original.call();
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 0aa8cf0..f2b5e6d 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
@@ -45,7 +45,7 @@ public abstract class PlayerMixin {
)
)
private boolean checkFallFlying(Player player, Operation original) {
- if (FuzzSettings.letFluidInteractLikeAir && player.equals(ClientUtil.getCurrentPlayer())) {
+ if (FuzzSettings.letFluidInteractLikeAir && ClientUtil.isLocalPlayerSelf(player)) {
return false;
} else {
return original.call(player);
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/renderHandDisabled/GameRendererMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/renderHandDisabled/GameRendererMixin.java
index 9361271..6eac7cd 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/renderHandDisabled/GameRendererMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/renderHandDisabled/GameRendererMixin.java
@@ -34,7 +34,7 @@
@Environment(EnvType.CLIENT)
@Mixin(GameRenderer.class)
-public class GameRendererMixin {
+public abstract class GameRendererMixin {
@Inject(method = "renderItemInHand", at = @At("HEAD"), cancellable = true)
private void renderHandDisabled(CallbackInfo ci) {
if (FuzzSettings.renderHandDisabled) {
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/SlimeBlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/SlimeBlockMixin.java
deleted file mode 100644
index 7b5efbe..0000000
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/SlimeBlockMixin.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * This file is part of the Fuzz project, licensed under the
- * GNU Lesser General Public License v3.0
- *
- * Copyright (C) 2025 1024_byteeeee and contributors
- *
- * Fuzz is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Fuzz is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Fuzz. If not, see .
- */
-
-package top.byteeeee.fuzz.mixin.rule.slimeBlockBounceDisabled;
-
-import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
-import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
-
-import net.minecraft.world.level.block.SlimeBlock;
-import net.minecraft.world.entity.Entity;
-
-import org.spongepowered.asm.mixin.Mixin;
-
-import top.byteeeee.annotationtoolbox.annotation.GameVersion;
-import top.byteeeee.fuzz.FuzzSettings;
-import top.byteeeee.fuzz.helpers.Noop;
-import top.byteeeee.fuzz.utils.ClientUtil;
-
-@GameVersion(version = "Minecraft < 26.2")
-@Mixin(SlimeBlock.class)
-public abstract class SlimeBlockMixin {
- @WrapMethod(method = "bounceUp")
- private void slimeBlockBounceDisabled(Entity entity, Operation original) {
- if (FuzzSettings.slimeBlockSlowDownDisabled && entity.equals(ClientUtil.getCurrentPlayer())) {
- Noop.noop();
- } else {
- original.call(entity);
- }
- }
-}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/BlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/BlockMixin.java
new file mode 100644
index 0000000..a4074c9
--- /dev/null
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/BlockMixin.java
@@ -0,0 +1,82 @@
+/*
+ * This file is part of the Fuzz project, licensed under the
+ * GNU Lesser General Public License v3.0
+ *
+ * Copyright (C) 2026 1024_byteeeee and contributors
+ *
+ * Fuzz is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Fuzz is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Fuzz. If not, see .
+ */
+
+package top.byteeeee.fuzz.mixin.rule.slimeBlockSlowDownDisabled;
+
+import com.llamalad7.mixinextras.injector.ModifyReturnValue;
+
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.SlimeBlock;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+
+import top.byteeeee.fuzz.FuzzSettings;
+import top.byteeeee.fuzz.utils.ClientUtil;
+
+@Environment(EnvType.CLIENT)
+@Mixin(Block.class)
+public abstract class BlockMixin {
+ @ModifyReturnValue(method = "getFriction", at = @At("RETURN"))
+ private float modifyFriction(float original){
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.slimeBlockSlowDownDisabled && block instanceof SlimeBlock) {
+ return Blocks.TNT.getFriction();
+ } else {
+ return original;
+ }
+ }
+
+ @ModifyReturnValue(method = "getSpeedFactor", at = @At("RETURN"))
+ private float modifySpeedFactor(float original) {
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.slimeBlockSlowDownDisabled && block instanceof SlimeBlock) {
+ return Blocks.TNT.getSpeedFactor();
+ } else {
+ return original;
+ }
+ }
+
+ @ModifyReturnValue(method = "getJumpFactor", at = @At("RETURN"))
+ private float modifyJumpFactor(float original) {
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.slimeBlockSlowDownDisabled && block instanceof SlimeBlock) {
+ return Blocks.TNT.getJumpFactor();
+ } else {
+ return original;
+ }
+ }
+}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/LivingEntityMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/EntityMixin.java
similarity index 53%
rename from src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/LivingEntityMixin.java
rename to src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/EntityMixin.java
index cc7986b..cc415e0 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/LivingEntityMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/EntityMixin.java
@@ -2,7 +2,7 @@
* This file is part of the Fuzz project, licensed under the
* GNU Lesser General Public License v3.0
*
- * Copyright (C) 2025 1024_byteeeee and contributors
+ * Copyright (C) 2026 1024_byteeeee and contributors
*
* Fuzz is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
@@ -18,40 +18,35 @@
* along with Fuzz. If not, see .
*/
-package top.byteeeee.fuzz.mixin.rule.slimeBlockBounceDisabled;
+package top.byteeeee.fuzz.mixin.rule.slimeBlockSlowDownDisabled;
-import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
-import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
+import com.llamalad7.mixinextras.injector.ModifyReturnValue;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
-import net.minecraft.world.level.block.Block;
+import net.minecraft.core.BlockPos;
+import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.block.Blocks;
-import net.minecraft.world.entity.LivingEntity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import top.byteeeee.fuzz.FuzzSettings;
import top.byteeeee.fuzz.utils.ClientUtil;
+import top.byteeeee.fuzz.utils.EntityUtil;
@Environment(EnvType.CLIENT)
-@Mixin(LivingEntity.class)
-public abstract class LivingEntityMixin {
- @WrapOperation(
- method = "travelInAir",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/world/level/block/Block;getFriction()F"
- )
- )
- private float slimeSlipperinessDisabled(Block block, Operation original) {
- LivingEntity entity = (LivingEntity) (Object) this;
- if (FuzzSettings.slimeBlockSlowDownDisabled && entity.equals(ClientUtil.getCurrentPlayer()) && block.equals(Blocks.SLIME_BLOCK)) {
- return Blocks.TNT.getFriction();
+@Mixin(Entity.class)
+public abstract class EntityMixin {
+ @ModifyReturnValue(method = "isSuppressingBounce", at = @At("RETURN"))
+ private boolean skipSlimeBounceLogic(boolean original) {
+ if (FuzzSettings.slimeBlockSlowDownDisabled && ClientUtil.isLocalPlayerTicking()) {
+ Entity entity = (Entity) (Object) this;
+ BlockPos belowPos = entity.getBlockPosBelowThatAffectsMyMovement();
+ return EntityUtil.getEntityWorld(entity).getBlockState(belowPos).is(Blocks.SLIME_BLOCK);
} else {
- return original.call(block);
+ return original;
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/SlimeBlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/SlimeBlockMixin.java
new file mode 100644
index 0000000..edf4d91
--- /dev/null
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockSlowDownDisabled/SlimeBlockMixin.java
@@ -0,0 +1,79 @@
+/*
+ * This file is part of the Fuzz project, licensed under the
+ * GNU Lesser General Public License v3.0
+ *
+ * Copyright (C) 2026 1024_byteeeee and contributors
+ *
+ * Fuzz is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Fuzz is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Fuzz. If not, see .
+ */
+
+package top.byteeeee.fuzz.mixin.rule.slimeBlockSlowDownDisabled;
+
+import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
+
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+
+import net.minecraft.world.level.block.SlimeBlock;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+
+import top.byteeeee.fuzz.FuzzSettings;
+import top.byteeeee.fuzz.utils.ClientUtil;
+
+@Environment(EnvType.CLIENT)
+@Mixin(SlimeBlock.class)
+public abstract class SlimeBlockMixin {
+ @ModifyExpressionValue(
+ method = "stepOn",
+ at = @At(
+ value = "INVOKE",
+ target = "Lnet/minecraft/world/entity/Entity;isSteppingCarefully()Z"
+ )
+ )
+ private boolean skipStepOnLogic(boolean original) {
+ if (FuzzSettings.slimeBlockSlowDownDisabled && ClientUtil.isLocalPlayerTicking()) {
+ return true;
+ } else {
+ return original;
+ }
+ }
+
+ @ModifyExpressionValue(
+ method = "fallOn",
+ at = @At(
+ value = "INVOKE",
+ target = "Lnet/minecraft/world/entity/Entity;isSuppressingBounce()Z"
+ )
+ )
+ private boolean skipFallOnLogic(boolean original) {
+ if (FuzzSettings.slimeBlockSlowDownDisabled && ClientUtil.isLocalPlayerTicking()) {
+ return true;
+ } else {
+ return original;
+ }
+ }
+
+ //#if MC<260200
+ @ModifyExpressionValue(method = "updateEntityMovementAfterFallOn", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;isSuppressingBounce()Z"))
+ private boolean skipUpdateMovementLogic(boolean original) {
+ if (FuzzSettings.slimeBlockSlowDownDisabled && ClientUtil.isLocalPlayerTicking()) {
+ return true;
+ } else {
+ return original;
+ }
+ }
+ //#endif
+}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/soulSandBlockSlowDownDisabled/BlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/soulSandBlockSlowDownDisabled/BlockMixin.java
new file mode 100644
index 0000000..1429942
--- /dev/null
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/soulSandBlockSlowDownDisabled/BlockMixin.java
@@ -0,0 +1,82 @@
+/*
+ * This file is part of the Fuzz project, licensed under the
+ * GNU Lesser General Public License v3.0
+ *
+ * Copyright (C) 2026 1024_byteeeee and contributors
+ *
+ * Fuzz is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Fuzz is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Fuzz. If not, see .
+ */
+
+package top.byteeeee.fuzz.mixin.rule.soulSandBlockSlowDownDisabled;
+
+import com.llamalad7.mixinextras.injector.ModifyReturnValue;
+
+import net.fabricmc.api.EnvType;
+import net.fabricmc.api.Environment;
+
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.SoulSandBlock;
+
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+
+import top.byteeeee.fuzz.FuzzSettings;
+import top.byteeeee.fuzz.utils.ClientUtil;
+
+@Environment(EnvType.CLIENT)
+@Mixin(Block.class)
+public abstract class BlockMixin {
+ @ModifyReturnValue(method = "getFriction", at = @At("RETURN"))
+ private float modifyFriction(float original){
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.soulSandBlockSlowDownDisabled && block instanceof SoulSandBlock) {
+ return Blocks.TNT.getFriction();
+ } else {
+ return original;
+ }
+ }
+
+ @ModifyReturnValue(method = "getSpeedFactor", at = @At("RETURN"))
+ private float modifySpeedFactor(float original) {
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.soulSandBlockSlowDownDisabled && block instanceof SoulSandBlock) {
+ return Blocks.TNT.getSpeedFactor();
+ } else {
+ return original;
+ }
+ }
+
+ @ModifyReturnValue(method = "getJumpFactor", at = @At("RETURN"))
+ private float modifyJumpFactor(float original) {
+ if (!ClientUtil.isLocalPlayerTicking()) {
+ return original;
+ }
+
+ Block block = (Block) (Object) this;
+ if (FuzzSettings.soulSandBlockSlowDownDisabled && block instanceof SoulSandBlock) {
+ return Blocks.TNT.getJumpFactor();
+ } else {
+ return original;
+ }
+ }
+}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/soulSandBlockSlowDownDisabled/SoulSandBlockMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/soulSandBlockSlowDownDisabled/SoulSandBlockMixin.java
deleted file mode 100644
index cd0f0db..0000000
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/soulSandBlockSlowDownDisabled/SoulSandBlockMixin.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * This file is part of the Fuzz project, licensed under the
- * GNU Lesser General Public License v3.0
- *
- * Copyright (C) 2025 1024_byteeeee and contributors
- *
- * Fuzz is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Fuzz is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Fuzz. If not, see .
- */
-
-package top.byteeeee.fuzz.mixin.rule.soulSandBlockSlowDownDisabled;
-
-import net.fabricmc.api.EnvType;
-import net.fabricmc.api.Environment;
-import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.Blocks;
-import net.minecraft.world.level.block.SoulSandBlock;
-
-import org.spongepowered.asm.mixin.Mixin;
-
-import top.byteeeee.fuzz.FuzzSettings;
-
-@Environment(EnvType.CLIENT)
-@Mixin(SoulSandBlock.class)
-public abstract class SoulSandBlockMixin extends Block {
- public SoulSandBlockMixin(Properties settings) {
- super(settings);
- }
-
- @Override
- public float getSpeedFactor() {
- return FuzzSettings.soulSandBlockSlowDownDisabled ? Blocks.TNT.getSpeedFactor() : super.getSpeedFactor();
- }
-}
diff --git a/src/main/java/top/byteeeee/fuzz/mixin/rule/usingItemSlowDownDisabled/LocalPlayerMixin.java b/src/main/java/top/byteeeee/fuzz/mixin/rule/usingItemSlowDownDisabled/LocalPlayerMixin.java
index b8d09ca..e7bf6cf 100644
--- a/src/main/java/top/byteeeee/fuzz/mixin/rule/usingItemSlowDownDisabled/LocalPlayerMixin.java
+++ b/src/main/java/top/byteeeee/fuzz/mixin/rule/usingItemSlowDownDisabled/LocalPlayerMixin.java
@@ -71,7 +71,7 @@ private boolean shouldStopSprinting(boolean original) {
)
)
private boolean noApplySlowDown(LocalPlayer player, Operation original) {
- if (FuzzSettings.usingItemSlowDownDisabled && player.equals(ClientUtil.getCurrentPlayer())) {
+ if (FuzzSettings.usingItemSlowDownDisabled && ClientUtil.isLocalPlayerSelf(player)) {
return false;
} else {
return original.call(player);
diff --git a/src/main/java/top/byteeeee/fuzz/utils/ClientUtil.java b/src/main/java/top/byteeeee/fuzz/utils/ClientUtil.java
index 1e4a5de..008f95d 100644
--- a/src/main/java/top/byteeeee/fuzz/utils/ClientUtil.java
+++ b/src/main/java/top/byteeeee/fuzz/utils/ClientUtil.java
@@ -25,15 +25,38 @@
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
+import net.minecraft.world.entity.Entity;
import top.byteeeee.fuzz.FuzzModClient;
@Environment(EnvType.CLIENT)
public class ClientUtil {
+ private static final ThreadLocal IS_LOCAL_PLAYER_TICKING = ThreadLocal.withInitial(() -> false);
+
public static LocalPlayer getCurrentPlayer() {
return FuzzModClient.minecraftClient.player;
}
+ public static boolean isLocalPlayerSelf(Entity entity) {
+ if (getCurrentPlayer() != null) {
+ return entity.is(getCurrentPlayer());
+ } else {
+ return false;
+ }
+ }
+
+ public static boolean isLocalPlayerTicking() {
+ return IS_LOCAL_PLAYER_TICKING.get();
+ }
+
+ public static void setLocalPlayerTicking(boolean isLocalPlayerTicking) {
+ IS_LOCAL_PLAYER_TICKING.set(isLocalPlayerTicking);
+ }
+
+ public static void removeLocalPlayerTicking() {
+ IS_LOCAL_PLAYER_TICKING.remove();
+ }
+
public static Minecraft getCurrentClient() {
return FuzzModClient.minecraftClient;
}
diff --git a/src/main/resources/fuzz.mixins.json b/src/main/resources/fuzz.mixins.json
index bb107ba..6de6e65 100644
--- a/src/main/resources/fuzz.mixins.json
+++ b/src/main/resources/fuzz.mixins.json
@@ -3,8 +3,10 @@
"minVersion": "0.8.5",
"package": "top.byteeeee.fuzz.mixin",
"compatibilityLevel": "/*JAVA_VERSION*/",
- "mixins": [],
+ "mixins": [
+ ],
"client": [
+ "hooks.LocalPlayerMixin",
"hooks.MinecraftMixin",
"key.KeyMapping_CategoryMixin",
"rule.bedRockFlying.LocalPlayerInvoker",
@@ -16,6 +18,7 @@
"rule.chestOptimization.BlockEntityRenderDispatcherMixin",
"rule.chestOptimization.ChestBlockMixin",
"rule.chestOptimization.EnderChestBlockMixin",
+ "rule.chestOptimization.PackMixin",
"rule.chestOptimization.PackRepositoryMixin",
"rule.cobwebSlowDownDisabled.WebBlockMixin",
"rule.commandAnimatedFreeze.chestBlockAnimationDisabled.ChestBlockEntityMixin",
@@ -25,7 +28,7 @@
"rule.commandHighlightEntites.MinecraftMixin",
"rule.fluidPushDisabled.PlayerMixin",
"rule.fogColor.FogRendererMixin",
- "rule.honeyBlockSlowDownDisabled.HoneyBlockMixin",
+ "rule.honeyBlockSlowDownDisabled.BlockMixin",
"rule.hurtShakeDisabled.GameRendererMixin",
"rule.iceSlipperinessDisabled.LivingEntityMixin",
"rule.jumpDelayDisabled.LivingEntityMixin",
@@ -37,15 +40,15 @@
"rule.pickFluidBucketItemInCreative.MinecraftMixin",
"rule.renderHandDisabled.GameRendererMixin",
"rule.skyColor.SkyRenderStateMixin",
- "rule.slimeBlockBounceDisabled.LivingEntityMixin",
- "rule.slimeBlockBounceDisabled.SlimeBlockMixin",
+ "rule.slimeBlockSlowDownDisabled.SlimeBlockMixin",
"rule.sneakingSlowDownDisabled.LocalPlayerMixin",
- "rule.soulSandBlockSlowDownDisabled.SoulSandBlockMixin",
+ "rule.soulSandBlockSlowDownDisabled.BlockMixin",
"rule.usingItemSlowDownDisabled.LocalPlayerMixin",
"rule.waterColor.WaterRendererMixin",
"rule.waterFogColor.FogRendererMixin",
"translations.TranslatableTextMixin",
- "rule.chestOptimization.PackMixin"
+ "rule.slimeBlockSlowDownDisabled.BlockMixin",
+ "rule.slimeBlockSlowDownDisabled.EntityMixin"
],
"injectors": {
"defaultRequire": 1
diff --git a/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/blockOutlineColor_Width/LevelRendererAccessor.java b/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/blockOutlineColor_Width/LevelRendererAccessor.java
index 7dfcad1..a3b4e44 100644
--- a/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/blockOutlineColor_Width/LevelRendererAccessor.java
+++ b/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/blockOutlineColor_Width/LevelRendererAccessor.java
@@ -23,11 +23,8 @@
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
-import net.minecraft.client.renderer.LevelRenderer;
-import net.minecraft.client.multiplayer.ClientLevel;
-
import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.gen.Accessor;
+
import top.byteeeee.annotationtoolbox.annotation.GameVersion;
import top.byteeeee.fuzz.utils.compat.DummyInterface;
diff --git a/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/LivingEntityMixin.java b/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/LivingEntityMixin.java
deleted file mode 100644
index cc7986b..0000000
--- a/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/LivingEntityMixin.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * This file is part of the Fuzz project, licensed under the
- * GNU Lesser General Public License v3.0
- *
- * Copyright (C) 2025 1024_byteeeee and contributors
- *
- * Fuzz is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Fuzz is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Fuzz. If not, see .
- */
-
-package top.byteeeee.fuzz.mixin.rule.slimeBlockBounceDisabled;
-
-import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
-import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
-
-import net.fabricmc.api.EnvType;
-import net.fabricmc.api.Environment;
-
-import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.Blocks;
-import net.minecraft.world.entity.LivingEntity;
-
-import org.spongepowered.asm.mixin.Mixin;
-import org.spongepowered.asm.mixin.injection.At;
-
-import top.byteeeee.fuzz.FuzzSettings;
-import top.byteeeee.fuzz.utils.ClientUtil;
-
-@Environment(EnvType.CLIENT)
-@Mixin(LivingEntity.class)
-public abstract class LivingEntityMixin {
- @WrapOperation(
- method = "travelInAir",
- at = @At(
- value = "INVOKE",
- target = "Lnet/minecraft/world/level/block/Block;getFriction()F"
- )
- )
- private float slimeSlipperinessDisabled(Block block, Operation original) {
- LivingEntity entity = (LivingEntity) (Object) this;
- if (FuzzSettings.slimeBlockSlowDownDisabled && entity.equals(ClientUtil.getCurrentPlayer()) && block.equals(Blocks.SLIME_BLOCK)) {
- return Blocks.TNT.getFriction();
- } else {
- return original.call(block);
- }
- }
-}
\ No newline at end of file
diff --git a/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/SlimeBlockMixin.java b/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/SlimeBlockMixin.java
deleted file mode 100644
index e27a4b5..0000000
--- a/versions/26.2/src/main/java/top/byteeeee/fuzz/mixin/rule/slimeBlockBounceDisabled/SlimeBlockMixin.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * This file is part of the Fuzz project, licensed under the
- * GNU Lesser General Public License v3.0
- *
- * Copyright (C) 2025 1024_byteeeee and contributors
- *
- * Fuzz is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Fuzz is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Fuzz. If not, see .
- */
-
-package top.byteeeee.fuzz.mixin.rule.slimeBlockBounceDisabled;
-
-import com.llamalad7.mixinextras.injector.wrapmethod.WrapMethod;
-import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
-
-import net.minecraft.core.BlockPos;
-import net.minecraft.world.level.Level;
-import net.minecraft.world.level.block.SlimeBlock;
-import net.minecraft.world.entity.Entity;
-
-import net.minecraft.world.level.block.state.BlockState;
-import org.spongepowered.asm.mixin.Mixin;
-
-import top.byteeeee.fuzz.FuzzSettings;
-import top.byteeeee.fuzz.helpers.Noop;
-import top.byteeeee.fuzz.utils.ClientUtil;
-
-@Mixin(SlimeBlock.class)
-public abstract class SlimeBlockMixin {
- @WrapMethod(method = "fallOn")
- private void slimeBlockBounceDisabled(Level level, BlockState state, BlockPos pos, Entity entity, double fallDistance, Operation original) {
- if (FuzzSettings.slimeBlockSlowDownDisabled && entity.equals(ClientUtil.getCurrentPlayer())) {
- Noop.noop();
- } else {
- original.call(level, state, pos, entity, fallDistance);
- }
- }
-}