- Выберите загрузчик игры
- OptiFine
вау вау ноуфол с ватердропом.
Код:
package client.main.module.impl.movement;
import client.events.EventMotion;
import client.events.EventUpdate;
import client.main.module.api.Category;
import client.main.module.api.Module;
import client.main.module.api.ModuleRegister;
import client.main.module.settings.Setting;
import client.main.module.settings.impl.BooleanSetting;
import client.main.module.settings.impl.ModeSetting;
import client.util.player.InventoryUtil;
import client.util.player.MoveUtils;
import com.google.common.eventbus.Subscribe;
import net.minecraft.item.AirItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.network.play.client.CPlayerPacket.PositionRotationPacket;
import net.minecraft.util.Hand;
@ModuleRegister(
name = "NoFall",
desc = "Манипулирует с уроном от падения",
type = Category.Movement
)
public class NoFall extends Module {
private final ModeSetting mode = new ModeSetting("Режим", "FallReduce", new String[]{"FallReduce", "PacketGround", "Waterdrop"});
boolean wdropper;
InventoryUtil.Hand handUtil = new InventoryUtil.Hand();
private final BooleanSetting removealldmg = (new BooleanSetting("Исключать урон", false)).setVisible(() -> {
return this.mode.is("FallReduce");
});
long delay;
private int findAndTrowItem(int var1, int var2) {
int var3 = mc.player.inventory.currentItem;
if (var1 != -1) {
mc.player.connection.sendPacket(new CHeldItemChangePacket(var1));
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(net.minecraft.util.Hand.MAIN_HAND));
mc.player.swingArm(net.minecraft.util.Hand.MAIN_HAND);
this.delay = System.currentTimeMillis();
mc.player.connection.sendPacket(new CHeldItemChangePacket(var3));
return var1;
} else if (var2 != -1) {
this.handUtil.setOriginalSlot(mc.player.inventory.currentItem);
mc.playerController.pickItem(var2);
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(net.minecraft.util.Hand.MAIN_HAND));
mc.player.swingArm(net.minecraft.util.Hand.MAIN_HAND);
this.delay = System.currentTimeMillis();
return var2;
} else {
return -1;
}
}
private int getItemForType(Item var1, boolean var2) {
int var3 = var2 ? 0 : 9;
int var4 = var2 ? 9 : 36;
for(int var5 = var3; var5 < var4; ++var5) {
ItemStack var6 = mc.player.inventory.getStackInSlot(var5);
if (!var6.isEmpty() && !(var6.getItem() instanceof AirItem) && var6.getItem() == var1) {
return var5;
}
}
return -1;
}
public NoFall() {
this.addSettings(new Setting[]{this.mode, this.removealldmg});
}
@Subscribe
public void onUpdate(EventUpdate var1) {
if (this.wdropper) {
this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
int var2 = this.getItemForType(Items.WATER_BUCKET, true);
int var3 = this.getItemForType(Items.WATER_BUCKET, false);
if (var3 == -1 && var2 == -1) {
this.print("Ведра воды нет!");
this.wdropper = false;
return;
}
if (!mc.player.getCooldownTracker().hasCooldown(Items.WATER_BUCKET)) {
this.print("Засейвил водой!");
int var4 = this.findAndTrowItem(var2, var3);
if (var4 > 8) {
mc.playerController.pickItem(var4);
}
}
this.wdropper = false;
}
if (this.mode.is("FallReduce") && (double)mc.player.fallDistance > ((Boolean)this.removealldmg.get() ? 1.228D : 3.0D)) {
mc.player.connection.sendPacket(new PositionRotationPacket(mc.player.getPosX(), mc.player.getPosY(), mc.player.getPosZ(), mc.player.getYaw(1.0F), mc.player.getPitch(1.0F), true));
mc.player.fallDistance = 0.0F;
}
}
@Subscribe
public void onFoot(EventMotion var1) {
if (this.mode.is("PacketGround")) {
if (mc.player.fallDistance > 2.9F) {
var1.setOnGround(true);
}
if (mc.player.fallDistance == 0.0F) {
var1.setOnGround(mc.player.isOnGround());
}
}
if (this.mode.is("Waterdrop")) {
if (mc.player.fallDistance > 3.0F && !MoveUtils.isBlockUnder(3.0F) && !mc.player.isOnGround()) {
if (InventoryUtil.getInventoryCount(Items.WATER_BUCKET) != 0) {
var1.setPitch(90.0F);
mc.player.rotationPitchHead = 90.0F;
this.wdropper = true;
} else {
this.wdropper = false;
}
} else {
this.wdropper = false;
}
}
}
}
