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); - } - } -}