/* * Copyright (C) 2014 - 2020 | Alexander01998 | All rights reserved. * * This source code is subject to the terms of the GNU General Public * License, version 3. If a copy of the GPL was not distributed with this * file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt */ package net.wurstclient.mixin; 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.CallbackInfoReturnable; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.ItemConvertible; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; import net.wurstclient.WurstClient; import net.wurstclient.events.ShouldDrawSideListener.ShouldDrawSideEvent; import net.wurstclient.hack.HackList; @Mixin(Block.class) public abstract class BlockMixin implements ItemConvertible { @Inject(at = {@At("HEAD")}, method = { "shouldDrawSide(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction;)Z"}, cancellable = true) private static void onShouldDrawSide(BlockState state, BlockView blockView, BlockPos blockPos, Direction side, CallbackInfoReturnable<Boolean> cir) { ShouldDrawSideEvent event = new ShouldDrawSideEvent(state); WurstClient.INSTANCE.getEventManager().fire(event); if(event.isRendered() != null) cir.setReturnValue(event.isRendered()); } @Inject(at = {@At("HEAD")}, method = {"getVelocityMultiplier()F"}, cancellable = true) private void onGetVelocityMultiplier(CallbackInfoReturnable<Float> cir) { HackList hax = WurstClient.INSTANCE.getHax(); if(hax == null || !hax.noSlowdownHack.isEnabled()) return; if(cir.getReturnValueF() < 1) cir.setReturnValue(1F); } }