From 5d6c8cd5a3e7dafb55d1d47f98df15fd8c931ed9 Mon Sep 17 00:00:00 2001 From: DrMaxNix Date: Wed, 19 Oct 2022 20:16:51 +0200 Subject: [PATCH 001/126] :sparkles: add entity filter for allay --- .../wurstclient/hacks/KillauraLegitHack.java | 1 + .../net/wurstclient/hacks/ProtectHack.java | 1 + .../filterlists/AnchorAuraFilterList.java | 5 +++ .../filterlists/CrystalAuraFilterList.java | 5 +++ .../filterlists/EntityFilterList.java | 1 + .../filterlists/FollowFilterList.java | 3 ++ .../filterlists/RemoteViewFilterList.java | 3 ++ .../settings/filters/FilterAllaysSetting.java | 31 +++++++++++++++++++ 8 files changed, 50 insertions(+) create mode 100644 src/main/java/net/wurstclient/settings/filters/FilterAllaysSetting.java diff --git a/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java b/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java index 4f24fb1e..5f2d150a 100644 --- a/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java @@ -81,6 +81,7 @@ public final class KillauraLegitHack extends Hack FilterPetsSetting.genericCombat(false), FilterTradersSetting.genericCombat(false), FilterGolemsSetting.genericCombat(false), + FilterAllaysSetting.genericCombat(false), FilterInvisibleSetting.genericCombat(true), FilterNamedSetting.genericCombat(false), FilterArmorStandsSetting.genericCombat(false), diff --git a/src/main/java/net/wurstclient/hacks/ProtectHack.java b/src/main/java/net/wurstclient/hacks/ProtectHack.java index 341bc800..807cb64b 100644 --- a/src/main/java/net/wurstclient/hacks/ProtectHack.java +++ b/src/main/java/net/wurstclient/hacks/ProtectHack.java @@ -60,6 +60,7 @@ public final class ProtectHack extends Hack FilterPetsSetting.genericCombat(false), FilterTradersSetting.genericCombat(false), FilterGolemsSetting.genericCombat(false), + FilterAllaysSetting.genericCombat(false), FilterInvisibleSetting.genericCombat(false), FilterNamedSetting.genericCombat(false), FilterArmorStandsSetting.genericCombat(false), diff --git a/src/main/java/net/wurstclient/settings/filterlists/AnchorAuraFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/AnchorAuraFilterList.java index 9c34f3c7..ff87a16a 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/AnchorAuraFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/AnchorAuraFilterList.java @@ -50,6 +50,11 @@ public final class AnchorAuraFilterList extends EntityFilterList + damageWarning, true)); + builder.add(new FilterAllaysSetting( + "Won't target allays when auto-placing anchors." + + damageWarning, + true)); + builder.add(new FilterInvisibleSetting( "Won't target invisible entities when auto-placing anchors." + damageWarning, diff --git a/src/main/java/net/wurstclient/settings/filterlists/CrystalAuraFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/CrystalAuraFilterList.java index d8be378b..b594fc83 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/CrystalAuraFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/CrystalAuraFilterList.java @@ -50,6 +50,11 @@ public final class CrystalAuraFilterList extends EntityFilterList + damageWarning, true)); + builder.add(new FilterAllaysSetting( + "Won't target allays when auto-placing crystals." + + damageWarning, + true)); + builder.add(new FilterInvisibleSetting( "Won't target invisible entities when auto-placing crystals." + damageWarning, diff --git a/src/main/java/net/wurstclient/settings/filterlists/EntityFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/EntityFilterList.java index ae2053bd..a3fb2fff 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/EntityFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/EntityFilterList.java @@ -63,6 +63,7 @@ public class EntityFilterList FilterPetsSetting.genericCombat(false), FilterTradersSetting.genericCombat(false), FilterGolemsSetting.genericCombat(false), + FilterAllaysSetting.genericCombat(false), FilterInvisibleSetting.genericCombat(false), FilterNamedSetting.genericCombat(false), FilterArmorStandsSetting.genericCombat(false), diff --git a/src/main/java/net/wurstclient/settings/filterlists/FollowFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/FollowFilterList.java index f66d0292..22776f98 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/FollowFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/FollowFilterList.java @@ -56,6 +56,9 @@ public final class FollowFilterList extends EntityFilterList builder.add(new FilterGolemsSetting( "Won't follow iron golems, snow golems and shulkers.", true)); + builder.add(new FilterAllaysSetting( + "Won't follow allays.", true)); + builder.add(new FilterInvisibleSetting( "Won't follow invisible entities.", false)); diff --git a/src/main/java/net/wurstclient/settings/filterlists/RemoteViewFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/RemoteViewFilterList.java index 8a30b52b..a0c1c624 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/RemoteViewFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/RemoteViewFilterList.java @@ -55,6 +55,9 @@ public final class RemoteViewFilterList extends EntityFilterList builder.add(new FilterGolemsSetting( "Won't view iron golems, snow golems and shulkers.", true)); + builder.add(new FilterAllaysSetting( + "Won't view allays.", true)); + builder.add(new FilterInvisibleSetting("Won't view invisible entities.", false)); diff --git a/src/main/java/net/wurstclient/settings/filters/FilterAllaysSetting.java b/src/main/java/net/wurstclient/settings/filters/FilterAllaysSetting.java new file mode 100644 index 00000000..04053dea --- /dev/null +++ b/src/main/java/net/wurstclient/settings/filters/FilterAllaysSetting.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2014-2022 Wurst-Imperium and contributors. + * + * 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.settings.filters; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.passive.AllayEntity; + +public final class FilterAllaysSetting extends EntityFilterCheckbox +{ + public FilterAllaysSetting(String description, boolean checked) + { + super("Filter allays", description, checked); + } + + @Override + public boolean test(Entity e) + { + return !(e instanceof AllayEntity); + } + + public static FilterAllaysSetting genericCombat(boolean checked) + { + return new FilterAllaysSetting( + "Won't attack allays.", checked); + } +} From 6c57f9cfb70463f7c4149b1fa3cb51c1f2871fbf Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 18 Jan 2023 23:08:30 +0100 Subject: [PATCH 002/126] [Wurst-Bot] Update to 23w03a --- gradle.properties | 10 +++++----- src/main/java/net/wurstclient/WurstClient.java | 2 +- .../java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- .../java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index 97d2a3a6..f2ffcf87 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=1.19.3 -yarn_mappings=1.19.3+build.1 -loader_version=0.14.11 +minecraft_version=23w03a +yarn_mappings=23w03a+build.1 +loader_version=0.14.13 #Fabric api -fabric_version=0.68.1+1.19.3 +fabric_version=0.72.1+1.19.4 # Mod Properties -mod_version = v7.31-MC1.19.3 +mod_version = v7.31-MC23w03a maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 23298de8..7e3570eb 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.31"; - public static final String MC_VERSION = "1.19.3"; + public static final String MC_VERSION = "23w03a"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 6de5e642..adc735f9 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 6333b6ff..7377a739 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index e400ad0f..4128487e 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setInitialFocus(searchBar); searchBar.setTextFieldFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 30ba030d69143477b0eadcfe8e4b31277b5f9dce Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 19 Jan 2023 00:36:28 +0100 Subject: [PATCH 003/126] Update to 23w03a --- .../java/net/wurstclient/WurstClient.java | 2 +- .../altmanager/screens/AltEditorScreen.java | 4 ++-- .../net/wurstclient/clickgui/ClickGui.java | 1 + .../clickgui/screens/EditBlockScreen.java | 4 ++-- .../clickgui/screens/EditColorScreen.java | 4 ++-- .../clickgui/screens/EditSliderScreen.java | 4 ++-- .../java/net/wurstclient/hacks/JesusHack.java | 2 +- .../wurstclient/mixin/ButtonWidgetMixin.java | 12 +++++----- .../mixin/GameMenuScreenMixin.java | 24 +------------------ .../net/wurstclient/mixin/IngameHudMixin.java | 7 +++--- .../mixin/LanguageManagerMixin.java | 11 ++------- .../wurstclient/mixin/StatsScreenMixin.java | 2 +- .../wurstclient/mixin/TitleScreenMixin.java | 2 +- .../navigator/NavigatorMainScreen.java | 10 +++++--- .../options/EnterProfileNameScreen.java | 4 ++-- .../options/KeybindEditorScreen.java | 4 ++-- .../serverfinder/CleanUpScreen.java | 2 +- .../serverfinder/ServerFinderScreen.java | 16 +++++++------ .../java/net/wurstclient/util/ListWidget.java | 12 ++++++---- src/main/resources/fabric.mod.json | 4 ++-- src/main/resources/wurst.accesswidener | 1 - 21 files changed, 56 insertions(+), 76 deletions(-) diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 7e3570eb..8cdc7664 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -179,7 +179,7 @@ public enum WurstClient public String translate(String key) { if(otfs.translationsOtf.getForceEnglish().isChecked()) - return IMC.getLanguageManager().getEnglish().get(key); + return IMC.getLanguageManager().getEnglish().method_48307(key); return I18n.translate(key); } diff --git a/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java b/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java index fab0bf84..351e4e7f 100644 --- a/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java +++ b/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java @@ -101,7 +101,7 @@ public abstract class AltEditorScreen extends Screen nameOrEmailBox = new TextFieldWidget(textRenderer, width / 2 - 100, 60, 200, 20, Text.literal("")); nameOrEmailBox.setMaxLength(48); - nameOrEmailBox.setTextFieldFocused(true); + nameOrEmailBox.setFocused(true); nameOrEmailBox.setText(getDefaultNameOrEmail()); addSelectableChild(nameOrEmailBox); @@ -117,7 +117,7 @@ public abstract class AltEditorScreen extends Screen passwordBox.setMaxLength(256); addSelectableChild(passwordBox); - setInitialFocus(nameOrEmailBox); + setFocused(nameOrEmailBox); } private void openSkinFolder() diff --git a/src/main/java/net/wurstclient/clickgui/ClickGui.java b/src/main/java/net/wurstclient/clickgui/ClickGui.java index 7c49c1a3..e260bff3 100644 --- a/src/main/java/net/wurstclient/clickgui/ClickGui.java +++ b/src/main/java/net/wurstclient/clickgui/ClickGui.java @@ -579,6 +579,7 @@ public final class ClickGui tessellator.draw(); // text + RenderSystem.setShaderColor(1, 1, 1, 1); for(int i = 0; i < lines.length; i++) fr.draw(matrixStack, lines[i], xt1 + 2, yt1 + 2 + i * fr.fontHeight, txtColor); diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java index cf9a71d4..4727311b 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java @@ -57,8 +57,8 @@ public final class EditBlockScreen extends Screen blockField.setMaxLength(256); addSelectableChild(blockField); - setInitialFocus(blockField); - blockField.setTextFieldFocused(true); + setFocused(blockField); + blockField.setFocused(true); doneButton = ButtonWidget.builder(Text.literal("Done"), b -> done()) .dimensions(x1, y2, 200, 20).build(); diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditColorScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditColorScreen.java index 9bc9ff3c..1bc71cc5 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditColorScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditColorScreen.java @@ -116,8 +116,8 @@ public final class EditColorScreen extends Screen addSelectableChild(greenValueField); addSelectableChild(blueValueField); - setInitialFocus(hexValueField); - hexValueField.setTextFieldFocused(true); + setFocused(hexValueField); + hexValueField.setFocused(true); hexValueField.setSelectionStart(0); hexValueField.setSelectionEnd(6); diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java index 83513406..4768e189 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java @@ -50,8 +50,8 @@ public final class EditSliderScreen extends Screen valueField.setSelectionStart(0); addSelectableChild(valueField); - setInitialFocus(valueField); - valueField.setTextFieldFocused(true); + setFocused(valueField); + valueField.setFocused(true); doneButton = ButtonWidget.builder(Text.literal("Done"), b -> done()) .dimensions(x1, y2, 200, 20).build(); diff --git a/src/main/java/net/wurstclient/hacks/JesusHack.java b/src/main/java/net/wurstclient/hacks/JesusHack.java index 621a34e9..b329c072 100644 --- a/src/main/java/net/wurstclient/hacks/JesusHack.java +++ b/src/main/java/net/wurstclient/hacks/JesusHack.java @@ -148,7 +148,7 @@ public final class JesusHack extends Hack packet.getPitch(0), true); // send new packet - MC.player.networkHandler.getConnection().send(newPacket); + MC.player.networkHandler.method_48296().send(newPacket); } public boolean isOverLiquid() diff --git a/src/main/java/net/wurstclient/mixin/ButtonWidgetMixin.java b/src/main/java/net/wurstclient/mixin/ButtonWidgetMixin.java index 558b58c3..aa3499ce 100644 --- a/src/main/java/net/wurstclient/mixin/ButtonWidgetMixin.java +++ b/src/main/java/net/wurstclient/mixin/ButtonWidgetMixin.java @@ -29,15 +29,15 @@ public abstract class ButtonWidgetMixin extends PressableWidget protected void renderBackground(MatrixStack matrixStack, MinecraftClient client, int mouseX, int mouseY) { - int i = getYImage(isHovered()); + int i = getYImage(); int x = getX(); int y = getY(); - drawTexture(matrixStack, x, y, 0, 46 + i * 20, width / 2, height / 2); - drawTexture(matrixStack, x + width / 2, y, 200 - width / 2, 46 + i * 20, + drawTexture(matrixStack, x, y, 0, i, width / 2, height / 2); + drawTexture(matrixStack, x + width / 2, y, 200 - width / 2, i, + width / 2, height / 2); + drawTexture(matrixStack, x, y + height / 2, 0, i + 20 - height / 2, width / 2, height / 2); - drawTexture(matrixStack, x, y + height / 2, 0, - 46 + i * 20 + 20 - height / 2, width / 2, height / 2); drawTexture(matrixStack, x + width / 2, y + height / 2, 200 - width / 2, - 46 + i * 20 + 20 - height / 2, width / 2, height / 2); + i + 20 - height / 2, width / 2, height / 2); } } diff --git a/src/main/java/net/wurstclient/mixin/GameMenuScreenMixin.java b/src/main/java/net/wurstclient/mixin/GameMenuScreenMixin.java index 2a712c38..4dfe06e8 100644 --- a/src/main/java/net/wurstclient/mixin/GameMenuScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/GameMenuScreenMixin.java @@ -22,7 +22,6 @@ import net.minecraft.client.gui.screen.GameMenuScreen; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ClickableWidget; -import net.minecraft.client.gui.widget.GridWidget; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; @@ -56,7 +55,7 @@ public abstract class GameMenuScreenMixin extends Screen private void addWurstOptionsButton() { - List buttons = getRealButtons(); + List buttons = Screens.getButtons(this); int buttonY = -1; int buttonI = -1; @@ -90,27 +89,6 @@ public abstract class GameMenuScreenMixin extends Screen buttons.add(wurstOptionsButton); } - @SuppressWarnings("unchecked") - private List getRealButtons() - { - // As of 22w43a, Fabric Screen API doesn't understand the new grid - // system (class_7845), so we must manually extract the real buttons - // from the grid. - - List notButtons = Screens.getButtons(this); - - for(ClickableWidget cw : notButtons) - { - if(!(cw instanceof GridWidget grid)) - continue; - - return (List)grid.wrappedWidgets(); - } - - throw new IllegalStateException( - "There's no longer a button grid in the game menu?"); - } - private boolean isFeedbackButton(ClickableWidget button) { return hasTrKey(button, "menu.sendFeedback"); diff --git a/src/main/java/net/wurstclient/mixin/IngameHudMixin.java b/src/main/java/net/wurstclient/mixin/IngameHudMixin.java index e6771825..8c825889 100644 --- a/src/main/java/net/wurstclient/mixin/IngameHudMixin.java +++ b/src/main/java/net/wurstclient/mixin/IngameHudMixin.java @@ -40,10 +40,11 @@ public class IngameHudMixin extends DrawableHelper } @Inject(at = {@At("HEAD")}, - method = {"renderOverlay(Lnet/minecraft/util/Identifier;F)V"}, + method = { + "renderOverlay(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/util/Identifier;F)V"}, cancellable = true) - private void onRenderOverlay(Identifier identifier, float scale, - CallbackInfo ci) + private void onRenderOverlay(MatrixStack matrixStack, Identifier identifier, + float f, CallbackInfo ci) { if(identifier == null || identifier.getPath() == null) return; diff --git a/src/main/java/net/wurstclient/mixin/LanguageManagerMixin.java b/src/main/java/net/wurstclient/mixin/LanguageManagerMixin.java index ccf30403..6d466d7a 100644 --- a/src/main/java/net/wurstclient/mixin/LanguageManagerMixin.java +++ b/src/main/java/net/wurstclient/mixin/LanguageManagerMixin.java @@ -7,8 +7,6 @@ */ package net.wurstclient.mixin; -import java.util.ArrayList; - import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -16,7 +14,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.google.common.collect.Lists; -import net.minecraft.client.resource.language.LanguageDefinition; import net.minecraft.client.resource.language.LanguageManager; import net.minecraft.client.resource.language.TranslationStorage; import net.minecraft.resource.ResourceManager; @@ -33,12 +30,8 @@ public abstract class LanguageManagerMixin method = {"reload(Lnet/minecraft/resource/ResourceManager;)V"}) private void onReload(ResourceManager manager, CallbackInfo ci) { - LanguageDefinition englishDef = - new LanguageDefinition("en_us", "US", "English", false); - ArrayList englishDefList = - Lists.newArrayList(englishDef); - - english = TranslationStorage.load(manager, englishDefList); + english = TranslationStorage.load(manager, Lists.newArrayList("en_us"), + false); } @Override diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index adc735f9..6de5e642 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 7377a739..6333b6ff 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 4128487e..c1097d02 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -70,10 +70,10 @@ public final class NavigatorMainScreen extends NavigatorScreen searchBar.setMaxLength(128); addSelectableChild(searchBar); - setInitialFocus(searchBar); - searchBar.setTextFieldFocused(true); + setFocused(searchBar); + searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } @@ -241,6 +241,7 @@ public final class NavigatorMainScreen extends NavigatorScreen // search bar if(!clickTimerRunning) { + RenderSystem.setShaderColor(1, 1, 1, 1); WurstClient.MC.textRenderer.drawWithShadow(matrixStack, "Search: ", middleX - 150, 32, txtColor); searchBar.render(matrixStack, mouseX, mouseY, partialTicks); @@ -322,6 +323,8 @@ public final class NavigatorMainScreen extends NavigatorScreen bufferBuilder.vertex(matrix, xt1, yt1, 0).next(); tessellator.draw(); + RenderSystem.setShaderColor(1, 1, 1, 1); + // text for(int i = 0; i < lines.length; i++) fr.draw(matrixStack, lines[i], xt1 + 2, @@ -467,6 +470,7 @@ public final class NavigatorMainScreen extends NavigatorScreen if(!clickTimerRunning) { RenderSystem.setShader(GameRenderer::getPositionProgram); + RenderSystem.setShaderColor(1, 1, 1, 1); String buttonText = feature.getName(); client.textRenderer.draw(matrixStack, buttonText, area.x + 4, area.y + 4, txtColor); diff --git a/src/main/java/net/wurstclient/options/EnterProfileNameScreen.java b/src/main/java/net/wurstclient/options/EnterProfileNameScreen.java index 73f51fe3..a4aba7bd 100644 --- a/src/main/java/net/wurstclient/options/EnterProfileNameScreen.java +++ b/src/main/java/net/wurstclient/options/EnterProfileNameScreen.java @@ -47,8 +47,8 @@ public final class EnterProfileNameScreen extends Screen valueField.setSelectionStart(0); addSelectableChild(valueField); - setInitialFocus(valueField); - valueField.setTextFieldFocused(true); + setFocused(valueField); + valueField.setFocused(true); doneButton = ButtonWidget.builder(Text.literal("Done"), b -> done()) .dimensions(x1, y2, 200, 20).build(); diff --git a/src/main/java/net/wurstclient/options/KeybindEditorScreen.java b/src/main/java/net/wurstclient/options/KeybindEditorScreen.java index 2849bec2..b4378906 100644 --- a/src/main/java/net/wurstclient/options/KeybindEditorScreen.java +++ b/src/main/java/net/wurstclient/options/KeybindEditorScreen.java @@ -64,8 +64,8 @@ public final class KeybindEditorScreen extends Screen 200, 20, Text.literal("")); commandField.setMaxLength(65536); addSelectableChild(commandField); - setInitialFocus(commandField); - commandField.setTextFieldFocused(true); + setFocused(commandField); + commandField.setFocused(true); if(oldCommands != null) commandField.setText(oldCommands); diff --git a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java index 7317e232..a824476b 100644 --- a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java +++ b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java @@ -167,7 +167,7 @@ public class CleanUpScreen extends Screen private boolean isSameProtocol(ServerInfo server) { return server.protocolVersion == SharedConstants.getGameVersion() - .getProtocolVersion(); + .method_48020(); } private boolean isFailedPing(ServerInfo server) diff --git a/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java b/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java index cfccccf0..0701f294 100644 --- a/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java +++ b/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java @@ -51,11 +51,13 @@ public class ServerFinderScreen extends Screen .dimensions(width / 2 - 100, height / 4 + 96 + 12, 200, 20) .build()); - addDrawableChild(ButtonWidget.builder(Text.literal("Tutorial"), - b -> Util.getOperatingSystem().open( - "https://www.wurstclient.net/serverfinder-tutorial/")) - .dimensions(width / 2 - 100, height / 4 + 120 + 12, 200, 20) - .build()); + addDrawableChild( + ButtonWidget + .builder(Text.literal("Tutorial"), + b -> Util.getOperatingSystem().open( + "https://www.wurstclient.net/serverfinder-tutorial/")) + .dimensions(width / 2 - 100, height / 4 + 120 + 12, 200, 20) + .build()); addDrawableChild(ButtonWidget .builder(Text.literal("Back"), b -> client.setScreen(prevScreen)) @@ -65,7 +67,7 @@ public class ServerFinderScreen extends Screen ipBox = new TextFieldWidget(textRenderer, width / 2 - 100, height / 4 + 34, 200, 20, Text.literal("")); ipBox.setMaxLength(200); - ipBox.setTextFieldFocused(true); + ipBox.setFocused(true); addSelectableChild(ipBox); maxThreadsBox = new TextFieldWidget(textRenderer, width / 2 - 32, @@ -74,7 +76,7 @@ public class ServerFinderScreen extends Screen maxThreadsBox.setText("128"); addSelectableChild(maxThreadsBox); - setInitialFocus(ipBox); + setFocused(ipBox); state = ServerFinderState.NOT_RUNNING; } diff --git a/src/main/java/net/wurstclient/util/ListWidget.java b/src/main/java/net/wurstclient/util/ListWidget.java index 81972ca6..68f57fbf 100644 --- a/src/main/java/net/wurstclient/util/ListWidget.java +++ b/src/main/java/net/wurstclient/util/ListWidget.java @@ -175,7 +175,7 @@ public abstract class ListWidget extends AbstractParentElement GlStateManager.SrcFactor.ZERO, GlStateManager.DstFactor.ONE); // RenderSystem.disableAlphaTest(); // RenderSystem.shadeModel(7425); - RenderSystem.disableTexture(); + // RenderSystem.disableTexture(); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR); @@ -244,7 +244,7 @@ public abstract class ListWidget extends AbstractParentElement } renderDecorations(mouseX, mouseY); - RenderSystem.enableTexture(); + // RenderSystem.enableTexture(); // RenderSystem.shadeModel(7424); // RenderSystem.enableAlphaTest(); RenderSystem.disableBlend(); @@ -389,7 +389,7 @@ public abstract class ListWidget extends AbstractParentElement { int q = left + width / 2 - getRowWidth() / 2; int r = left + width / 2 + getRowWidth() / 2; - RenderSystem.disableTexture(); + // RenderSystem.disableTexture(); float g = isFocused() ? 1.0F : 0.5F; RenderSystem.setShaderColor(g, g, g, 1.0F); bufferBuilder.begin(VertexFormat.DrawMode.QUADS, @@ -407,15 +407,17 @@ public abstract class ListWidget extends AbstractParentElement bufferBuilder.vertex(r - 1, o - 1, 0.0D).next(); bufferBuilder.vertex(q + 1, o - 1, 0.0D).next(); tessellator.draw(); - RenderSystem.enableTexture(); + // RenderSystem.enableTexture(); } + RenderSystem.setShaderColor(1, 1, 1, 1); renderItem(matrixStack, n, i, o, p, k, l, f); } } - protected boolean isFocused() + @Override + public boolean isFocused() { return false; } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5f81bba4..e7264f2d 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,8 +30,8 @@ "depends": { "fabricloader": ">=0.14.10", - "fabric-api": ">=0.68.0", - "minecraft": "~1.19.3-beta.3", + "fabric-api": ">=0.72.1", + "minecraft": "~1.19.4-alpha.23.3.a", "java": ">=17" }, "suggests": { diff --git a/src/main/resources/wurst.accesswidener b/src/main/resources/wurst.accesswidener index d3a7822b..7bc06ec6 100644 --- a/src/main/resources/wurst.accesswidener +++ b/src/main/resources/wurst.accesswidener @@ -4,4 +4,3 @@ accessible field net/minecraft/client/toast/ToastManager toastQueue Ljava/util/D accessible field net/minecraft/client/network/ClientPlayNetworkHandler session Lnet/minecraft/network/encryption/ClientPlayerSession; accessible field net/minecraft/client/network/ClientPlayNetworkHandler messagePacker Lnet/minecraft/network/message/MessageChain$Packer; accessible field net/minecraft/client/gui/screen/ingame/CreativeInventoryScreen selectedTab Lnet/minecraft/item/ItemGroup; -accessible method net/minecraft/client/gui/widget/GridWidget wrappedWidgets ()Ljava/util/List; From 2a27bc2d721be36dc2e68a5e7350a08be37e7543 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 25 Jan 2023 16:50:45 +0100 Subject: [PATCH 004/126] [Wurst-Bot] Update to 23w04a --- gradle.properties | 8 ++++---- src/main/java/net/wurstclient/WurstClient.java | 4 ++-- .../events/ConnectionPacketOutputListener.java | 3 +-- .../java/net/wurstclient/events/PacketInputListener.java | 3 +-- .../java/net/wurstclient/events/PacketOutputListener.java | 3 +-- src/main/java/net/wurstclient/hacks/AntiHungerHack.java | 2 +- src/main/java/net/wurstclient/hacks/CaveFinderHack.java | 2 +- src/main/java/net/wurstclient/hacks/JesusHack.java | 4 ++-- src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java | 2 +- src/main/java/net/wurstclient/hacks/PlayerFinderHack.java | 2 +- src/main/java/net/wurstclient/hacks/SearchHack.java | 2 +- .../java/net/wurstclient/mixin/ClientConnectionMixin.java | 2 +- .../wurstclient/mixin/ClientPlayNetworkHandlerMixin.java | 2 +- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- .../java/net/wurstclient/serverfinder/CleanUpScreen.java | 2 +- 17 files changed, 22 insertions(+), 25 deletions(-) diff --git a/gradle.properties b/gradle.properties index f2ffcf87..d3f47a20 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=23w03a -yarn_mappings=23w03a+build.1 +minecraft_version=23w04a +yarn_mappings=23w04a+build.2 loader_version=0.14.13 #Fabric api -fabric_version=0.72.1+1.19.4 +fabric_version=0.73.1+1.19.4 # Mod Properties -mod_version = v7.31-MC23w03a +mod_version = v7.31-MC23w04a maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 8cdc7664..579f2281 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.31"; - public static final String MC_VERSION = "23w03a"; + public static final String MC_VERSION = "23w04a"; private WurstAnalytics analytics; private EventManager eventManager; @@ -179,7 +179,7 @@ public enum WurstClient public String translate(String key) { if(otfs.translationsOtf.getForceEnglish().isChecked()) - return IMC.getLanguageManager().getEnglish().method_48307(key); + return IMC.getLanguageManager().getEnglish().get(key); return I18n.translate(key); } diff --git a/src/main/java/net/wurstclient/events/ConnectionPacketOutputListener.java b/src/main/java/net/wurstclient/events/ConnectionPacketOutputListener.java index 09e64aac..29cb3a05 100644 --- a/src/main/java/net/wurstclient/events/ConnectionPacketOutputListener.java +++ b/src/main/java/net/wurstclient/events/ConnectionPacketOutputListener.java @@ -8,8 +8,7 @@ package net.wurstclient.events; import java.util.ArrayList; - -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.wurstclient.event.CancellableEvent; import net.wurstclient.event.Listener; import net.wurstclient.events.PacketOutputListener.PacketOutputEvent; diff --git a/src/main/java/net/wurstclient/events/PacketInputListener.java b/src/main/java/net/wurstclient/events/PacketInputListener.java index 1753fcd7..b342edd1 100644 --- a/src/main/java/net/wurstclient/events/PacketInputListener.java +++ b/src/main/java/net/wurstclient/events/PacketInputListener.java @@ -8,8 +8,7 @@ package net.wurstclient.events; import java.util.ArrayList; - -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.wurstclient.event.CancellableEvent; import net.wurstclient.event.Listener; diff --git a/src/main/java/net/wurstclient/events/PacketOutputListener.java b/src/main/java/net/wurstclient/events/PacketOutputListener.java index 2b432432..207a3b57 100644 --- a/src/main/java/net/wurstclient/events/PacketOutputListener.java +++ b/src/main/java/net/wurstclient/events/PacketOutputListener.java @@ -8,8 +8,7 @@ package net.wurstclient.events; import java.util.ArrayList; - -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.wurstclient.event.CancellableEvent; import net.wurstclient.event.Listener; diff --git a/src/main/java/net/wurstclient/hacks/AntiHungerHack.java b/src/main/java/net/wurstclient/hacks/AntiHungerHack.java index 2ee4069e..1be57f52 100644 --- a/src/main/java/net/wurstclient/hacks/AntiHungerHack.java +++ b/src/main/java/net/wurstclient/hacks/AntiHungerHack.java @@ -7,7 +7,7 @@ */ package net.wurstclient.hacks; -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; import net.wurstclient.Category; import net.wurstclient.SearchTags; diff --git a/src/main/java/net/wurstclient/hacks/CaveFinderHack.java b/src/main/java/net/wurstclient/hacks/CaveFinderHack.java index 2742ea49..89ecb6fe 100644 --- a/src/main/java/net/wurstclient/hacks/CaveFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/CaveFinderHack.java @@ -39,7 +39,7 @@ import net.minecraft.client.render.VertexFormat; import net.minecraft.client.render.VertexFormats; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.world.ClientWorld; -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket; import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket; diff --git a/src/main/java/net/wurstclient/hacks/JesusHack.java b/src/main/java/net/wurstclient/hacks/JesusHack.java index b329c072..5ff25b76 100644 --- a/src/main/java/net/wurstclient/hacks/JesusHack.java +++ b/src/main/java/net/wurstclient/hacks/JesusHack.java @@ -12,7 +12,7 @@ import java.util.stream.Collectors; import net.minecraft.block.Material; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; @@ -148,7 +148,7 @@ public final class JesusHack extends Hack packet.getPitch(0), true); // send new packet - MC.player.networkHandler.method_48296().send(newPacket); + MC.player.networkHandler.getConnection().send(newPacket); } public boolean isOverLiquid() diff --git a/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java b/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java index 21dda590..91a820ab 100644 --- a/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java +++ b/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java @@ -30,7 +30,7 @@ import net.minecraft.client.render.VertexFormats; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.EntityType; -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket; import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket; diff --git a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java index 2266921d..57bea9b6 100644 --- a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java @@ -18,7 +18,7 @@ import net.minecraft.client.render.Tessellator; import net.minecraft.client.render.VertexFormat; import net.minecraft.client.render.VertexFormats; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/net/wurstclient/hacks/SearchHack.java b/src/main/java/net/wurstclient/hacks/SearchHack.java index 51871181..4fdb5a18 100644 --- a/src/main/java/net/wurstclient/hacks/SearchHack.java +++ b/src/main/java/net/wurstclient/hacks/SearchHack.java @@ -38,7 +38,7 @@ import net.minecraft.client.render.VertexFormat; import net.minecraft.client.render.VertexFormats; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.world.ClientWorld; -import net.minecraft.network.Packet; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket; import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket; diff --git a/src/main/java/net/wurstclient/mixin/ClientConnectionMixin.java b/src/main/java/net/wurstclient/mixin/ClientConnectionMixin.java index 31952c76..0ab8d3ea 100644 --- a/src/main/java/net/wurstclient/mixin/ClientConnectionMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientConnectionMixin.java @@ -19,8 +19,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import net.minecraft.network.ClientConnection; -import net.minecraft.network.Packet; import net.minecraft.network.PacketCallbacks; +import net.minecraft.network.packet.Packet; import net.wurstclient.event.EventManager; import net.wurstclient.events.ConnectionPacketOutputListener.ConnectionPacketOutputEvent; import net.wurstclient.events.PacketInputListener.PacketInputEvent; diff --git a/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java index ed27aa50..44f9d66f 100644 --- a/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java @@ -17,8 +17,8 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.client.toast.SystemToast; -import net.minecraft.network.Packet; import net.minecraft.network.listener.ClientPlayPacketListener; +import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.ChunkData; import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 6de5e642..adc735f9 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 6333b6ff..7377a739 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index c1097d02..7ed8ad48 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java index a824476b..7317e232 100644 --- a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java +++ b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java @@ -167,7 +167,7 @@ public class CleanUpScreen extends Screen private boolean isSameProtocol(ServerInfo server) { return server.protocolVersion == SharedConstants.getGameVersion() - .method_48020(); + .getProtocolVersion(); } private boolean isFailedPing(ServerInfo server) From d91cbaa24bfc89a20f966971ad193494901e64ac Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 25 Jan 2023 17:46:55 +0100 Subject: [PATCH 005/126] Update to 23w04a --- .../ConnectionPacketOutputListener.java | 1 + .../events/PacketInputListener.java | 1 + .../events/PacketOutputListener.java | 1 + .../net/wurstclient/hacks/AutoArmorHack.java | 5 ++- .../mixin/ClientConnectionMixin.java | 25 +++++++-------- .../wurstclient/mixin/GameRendererMixin.java | 31 ++++++++----------- .../wurstclient/mixin/StatsScreenMixin.java | 2 +- .../wurstclient/mixin/TitleScreenMixin.java | 2 +- .../navigator/NavigatorMainScreen.java | 2 +- src/main/resources/fabric.mod.json | 4 +-- 10 files changed, 34 insertions(+), 40 deletions(-) diff --git a/src/main/java/net/wurstclient/events/ConnectionPacketOutputListener.java b/src/main/java/net/wurstclient/events/ConnectionPacketOutputListener.java index 29cb3a05..0200b4ce 100644 --- a/src/main/java/net/wurstclient/events/ConnectionPacketOutputListener.java +++ b/src/main/java/net/wurstclient/events/ConnectionPacketOutputListener.java @@ -8,6 +8,7 @@ package net.wurstclient.events; import java.util.ArrayList; + import net.minecraft.network.packet.Packet; import net.wurstclient.event.CancellableEvent; import net.wurstclient.event.Listener; diff --git a/src/main/java/net/wurstclient/events/PacketInputListener.java b/src/main/java/net/wurstclient/events/PacketInputListener.java index b342edd1..29e2f47d 100644 --- a/src/main/java/net/wurstclient/events/PacketInputListener.java +++ b/src/main/java/net/wurstclient/events/PacketInputListener.java @@ -8,6 +8,7 @@ package net.wurstclient.events; import java.util.ArrayList; + import net.minecraft.network.packet.Packet; import net.wurstclient.event.CancellableEvent; import net.wurstclient.event.Listener; diff --git a/src/main/java/net/wurstclient/events/PacketOutputListener.java b/src/main/java/net/wurstclient/events/PacketOutputListener.java index 207a3b57..e6e1ffc1 100644 --- a/src/main/java/net/wurstclient/events/PacketOutputListener.java +++ b/src/main/java/net/wurstclient/events/PacketOutputListener.java @@ -8,6 +8,7 @@ package net.wurstclient.events; import java.util.ArrayList; + import net.minecraft.network.packet.Packet; import net.wurstclient.event.CancellableEvent; import net.wurstclient.event.Listener; diff --git a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java index 1169c21c..90cf1b3a 100644 --- a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java @@ -17,10 +17,10 @@ import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; -import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorItem.class_8051; import net.minecraft.item.ItemStack; import net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket; import net.wurstclient.Category; @@ -177,8 +177,7 @@ public final class AutoArmorHack extends Hack int armorPoints = item.getProtection(); int prtPoints = 0; int armorToughness = (int)((IArmorItem)item).getToughness(); - int armorType = - item.getMaterial().getProtectionAmount(EquipmentSlot.LEGS); + int armorType = item.getMaterial().method_48403(class_8051.LEGGINGS); if(useEnchantments.isChecked()) { diff --git a/src/main/java/net/wurstclient/mixin/ClientConnectionMixin.java b/src/main/java/net/wurstclient/mixin/ClientConnectionMixin.java index 0ab8d3ea..86e197a1 100644 --- a/src/main/java/net/wurstclient/mixin/ClientConnectionMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientConnectionMixin.java @@ -32,11 +32,10 @@ public abstract class ClientConnectionMixin private ConcurrentLinkedQueue events = new ConcurrentLinkedQueue<>(); - @Inject(at = {@At(value = "INVOKE", - target = "Lnet/minecraft/network/ClientConnection;handlePacket(Lnet/minecraft/network/Packet;Lnet/minecraft/network/listener/PacketListener;)V", - ordinal = 0)}, - method = { - "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/Packet;)V"}, + @Inject(at = @At(value = "INVOKE", + target = "Lnet/minecraft/network/ClientConnection;handlePacket(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/listener/PacketListener;)V", + ordinal = 0), + method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/packet/Packet;)V", cancellable = true) private void onChannelRead0(ChannelHandlerContext channelHandlerContext, Packet packet, CallbackInfo ci) @@ -48,10 +47,9 @@ public abstract class ClientConnectionMixin ci.cancel(); } - @ModifyVariable( - method = "send(Lnet/minecraft/network/Packet;Lnet/minecraft/network/PacketCallbacks;)V", - at = @At("HEAD")) - public Packet onSendPacket(Packet packet) + @ModifyVariable(at = @At("HEAD"), + method = "send(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/PacketCallbacks;)V") + public Packet modifyPacket(Packet packet) { ConnectionPacketOutputEvent event = new ConnectionPacketOutputEvent(packet); @@ -60,12 +58,11 @@ public abstract class ClientConnectionMixin return event.getPacket(); } - @Inject(at = {@At(value = "HEAD")}, - method = { - "send(Lnet/minecraft/network/Packet;Lnet/minecraft/network/PacketCallbacks;)V"}, + @Inject(at = @At("HEAD"), + method = "send(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/PacketCallbacks;)V", cancellable = true) - private void onSendPacket(Packet packet, - @Nullable PacketCallbacks callback, CallbackInfo ci) + private void onSend(Packet packet, @Nullable PacketCallbacks callback, + CallbackInfo ci) { ConnectionPacketOutputEvent event = getEvent(packet); if(event == null) diff --git a/src/main/java/net/wurstclient/mixin/GameRendererMixin.java b/src/main/java/net/wurstclient/mixin/GameRendererMixin.java index 668e02b7..9c355635 100644 --- a/src/main/java/net/wurstclient/mixin/GameRendererMixin.java +++ b/src/main/java/net/wurstclient/mixin/GameRendererMixin.java @@ -40,8 +40,7 @@ public abstract class GameRendererMixin @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/GameRenderer;bobView(Lnet/minecraft/client/util/math/MatrixStack;F)V", ordinal = 0), - method = { - "renderWorld(FJLnet/minecraft/client/util/math/MatrixStack;)V"}) + method = "renderWorld(FJLnet/minecraft/client/util/math/MatrixStack;)V") private void onRenderWorldViewBobbing(float tickDelta, long limitTime, MatrixStack matrices, CallbackInfo ci) { @@ -75,12 +74,11 @@ public abstract class GameRendererMixin } @Inject( - at = {@At(value = "FIELD", + at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/GameRenderer;renderHand:Z", opcode = Opcodes.GETFIELD, - ordinal = 0)}, - method = { - "renderWorld(FJLnet/minecraft/client/util/math/MatrixStack;)V"}) + ordinal = 0), + method = "renderWorld(FJLnet/minecraft/client/util/math/MatrixStack;)V") private void onRenderWorld(float partialTicks, long finishTimeNano, MatrixStack matrixStack, CallbackInfo ci) { @@ -89,7 +87,7 @@ public abstract class GameRendererMixin } @Inject(at = @At(value = "RETURN", ordinal = 1), - method = {"getFov(Lnet/minecraft/client/render/Camera;FZ)D"}, + method = "getFov(Lnet/minecraft/client/render/Camera;FZ)D", cancellable = true) private void onGetFov(Camera camera, float tickDelta, boolean changingFov, CallbackInfoReturnable cir) @@ -98,10 +96,10 @@ public abstract class GameRendererMixin .changeFovBasedOnZoom(cir.getReturnValueD())); } - @Inject(at = {@At(value = "INVOKE", + @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getCameraPosVec(F)Lnet/minecraft/util/math/Vec3d;", opcode = Opcodes.INVOKEVIRTUAL, - ordinal = 0)}, method = {"updateTargetedEntity(F)V"}) + ordinal = 0), method = "updateTargetedEntity(F)V") private void onHitResultRayTrace(float float_1, CallbackInfo ci) { HitResultRayTraceEvent event = new HitResultRayTraceEvent(float_1); @@ -112,8 +110,7 @@ public abstract class GameRendererMixin at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;lerp(FFF)F", ordinal = 0), - method = { - "renderWorld(FJLnet/minecraft/client/util/math/MatrixStack;)V"}) + method = "renderWorld(FJLnet/minecraft/client/util/math/MatrixStack;)V") private float wurstNauseaLerp(float delta, float first, float second) { if(!WurstClient.INSTANCE.getHax().antiWobbleHack.isEnabled()) @@ -122,9 +119,8 @@ public abstract class GameRendererMixin return 0; } - @Inject(at = {@At("HEAD")}, - method = { - "getNightVisionStrength(Lnet/minecraft/entity/LivingEntity;F)F"}, + @Inject(at = @At("HEAD"), + method = "getNightVisionStrength(Lnet/minecraft/entity/LivingEntity;F)F", cancellable = true) private static void onGetNightVisionStrength(LivingEntity livingEntity, float f, CallbackInfoReturnable cir) @@ -136,11 +132,10 @@ public abstract class GameRendererMixin cir.setReturnValue(fullbright.getNightVisionStrength()); } - @Inject(at = {@At("HEAD")}, - method = { - "bobViewWhenHurt(Lnet/minecraft/client/util/math/MatrixStack;F)V"}, + @Inject(at = @At("HEAD"), + method = "tiltViewWhenHurt(Lnet/minecraft/client/util/math/MatrixStack;F)V", cancellable = true) - private void onBobViewWhenHurt(MatrixStack matrixStack, float f, + private void onTiltViewWhenHurt(MatrixStack matrixStack, float f, CallbackInfo ci) { if(WurstClient.INSTANCE.getHax().noHurtcamHack.isEnabled()) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index adc735f9..6de5e642 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 7377a739..6333b6ff 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 7ed8ad48..c1097d02 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e7264f2d..c5ae01c2 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,8 +30,8 @@ "depends": { "fabricloader": ">=0.14.10", - "fabric-api": ">=0.72.1", - "minecraft": "~1.19.4-alpha.23.3.a", + "fabric-api": ">=0.73.1", + "minecraft": "~1.19.4-alpha.23.4.a", "java": ">=17" }, "suggests": { From 660a41a18acbe5ce881798907c975d5d9fbaede4 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 25 Jan 2023 17:50:41 +0100 Subject: [PATCH 006/126] Update build.gradle with github task --- build.gradle | 52 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index 34078dfb..255fad1c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,16 @@ +buildscript { + dependencies { + classpath 'org.kohsuke:github-api:1.135' + } +} + plugins { id 'fabric-loom' version '1.0-SNAPSHOT' id 'maven-publish' } +def ENV = System.getenv() + sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 @@ -42,7 +50,7 @@ loom { processResources { inputs.property "version", project.version - + filesMatching("fabric.mod.json") { expand "version": project.version } @@ -73,7 +81,7 @@ publishing { from components.java } } - + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. repositories { // Add repositories to publish to here. @@ -83,13 +91,35 @@ publishing { } } -afterEvaluate { - // Loom 0.11's devlibs folder messes with my other scripts, - // so I'm moving these files back to the old location. - tasks.named("remapJar") { - doLast { - ant.move(file:"${project.buildDir}/devlibs/${archivesBaseName}-${version}-dev.jar", tofile:"${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar") - ant.move(file:"${project.buildDir}/devlibs/${archivesBaseName}-${version}-sources.jar", tofile:"${project.buildDir}/libs/${archivesBaseName}-${version}-sources-dev.jar") - } - } +task moveDevLibs(dependsOn: [remapJar, remapSourcesJar]) { + doLast { + ant.move(file:"${project.buildDir}/devlibs/${archivesBaseName}-${version}-dev.jar", tofile:"${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar") + ant.move(file:"${project.buildDir}/devlibs/${archivesBaseName}-${version}-sources.jar", tofile:"${project.buildDir}/libs/${archivesBaseName}-${version}-sources-dev.jar") + } +} + +import org.kohsuke.github.GHReleaseBuilder +import org.kohsuke.github.GitHub + +task github(dependsOn: moveDevLibs) { + onlyIf { + ENV.GITHUB_TOKEN + } + + doLast { + def github = GitHub.connectUsingOAuth(ENV.GITHUB_TOKEN as String) + def repository = github.getRepository("Wurst-Imperium/Wurst-MCX2") + def ghVersion = "v" + version.substring(0, version.indexOf("-")) + + def ghRelease = repository.getReleaseByTagName(ghVersion as String); + if(ghRelease == null) { + def releaseBuilder = new GHReleaseBuilder(repository, ghVersion as String) + ghRelease = releaseBuilder.create() + } + + ghRelease.uploadAsset(remapJar.archiveFile.get().getAsFile(), "application/java-archive"); + ghRelease.uploadAsset(remapSourcesJar.archiveFile.get().getAsFile(), "application/java-archive") + ghRelease.uploadAsset(new File("${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar"), "application/java-archive") + ghRelease.uploadAsset(new File("${project.buildDir}/libs/${archivesBaseName}-${version}-sources-dev.jar"), "application/java-archive") + } } From 94bd8d9dbbfe2bcf8ffc5352abaf9f66379ab505 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 25 Jan 2023 18:02:54 +0100 Subject: [PATCH 007/126] Fix ClientPlayNetworkHandlerMixin --- .../net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java index 44f9d66f..a7287840 100644 --- a/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientPlayNetworkHandlerMixin.java @@ -38,8 +38,8 @@ public abstract class ClientPlayNetworkHandlerMixin @Final private MinecraftClient client; - @Inject(at = {@At("HEAD")}, - method = {"sendPacket(Lnet/minecraft/network/Packet;)V"}, + @Inject(at = @At("HEAD"), + method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", cancellable = true) private void onSendPacket(Packet packet, CallbackInfo ci) { From 67065e7cbc79db28df0cd928f6c8ba0b1f9a074c Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 25 Jan 2023 18:15:45 +0100 Subject: [PATCH 008/126] Fix build.gradle --- build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 255fad1c..b8defa59 100644 --- a/build.gradle +++ b/build.gradle @@ -109,15 +109,15 @@ task github(dependsOn: moveDevLibs) { doLast { def github = GitHub.connectUsingOAuth(ENV.GITHUB_TOKEN as String) def repository = github.getRepository("Wurst-Imperium/Wurst-MCX2") - def ghVersion = "v" + version.substring(0, version.indexOf("-")) + def ghVersion = version.substring(0, version.indexOf("-")) - def ghRelease = repository.getReleaseByTagName(ghVersion as String); + def ghRelease = repository.getReleaseByTagName(ghVersion as String) if(ghRelease == null) { def releaseBuilder = new GHReleaseBuilder(repository, ghVersion as String) ghRelease = releaseBuilder.create() } - ghRelease.uploadAsset(remapJar.archiveFile.get().getAsFile(), "application/java-archive"); + ghRelease.uploadAsset(remapJar.archiveFile.get().getAsFile(), "application/java-archive") ghRelease.uploadAsset(remapSourcesJar.archiveFile.get().getAsFile(), "application/java-archive") ghRelease.uploadAsset(new File("${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar"), "application/java-archive") ghRelease.uploadAsset(new File("${project.buildDir}/libs/${archivesBaseName}-${version}-sources-dev.jar"), "application/java-archive") From 7f131f6a79e1f382db92881d5f2968d09a797738 Mon Sep 17 00:00:00 2001 From: ThisTestUser Date: Sat, 28 Jan 2023 13:51:59 -0500 Subject: [PATCH 009/126] Fix jitter issues Discontinue use of applyRenderOffset --- .../java/net/wurstclient/ai/PathFinder.java | 13 +++++--- .../java/net/wurstclient/ai/PathRenderer.java | 15 +++++---- .../net/wurstclient/hacks/BowAimbotHack.java | 10 ++++-- .../net/wurstclient/hacks/ExcavatorHack.java | 32 +++++++++++-------- .../net/wurstclient/hacks/FeedAuraHack.java | 10 ++++-- .../net/wurstclient/hacks/FreecamHack.java | 18 +++++++---- .../wurstclient/hacks/InstantBunkerHack.java | 12 +++++-- .../net/wurstclient/hacks/ItemEspHack.java | 14 ++++---- .../net/wurstclient/hacks/OverlayHack.java | 9 ++++-- .../wurstclient/hacks/PlayerFinderHack.java | 15 ++++++--- .../wurstclient/hacks/ProphuntEspHack.java | 10 ++++-- .../net/wurstclient/util/RenderUtils.java | 8 ----- 12 files changed, 103 insertions(+), 63 deletions(-) diff --git a/src/main/java/net/wurstclient/ai/PathFinder.java b/src/main/java/net/wurstclient/ai/PathFinder.java index f8f76b61..5bb84d59 100644 --- a/src/main/java/net/wurstclient/ai/PathFinder.java +++ b/src/main/java/net/wurstclient/ai/PathFinder.java @@ -562,7 +562,11 @@ public class PathFinder GL11.glDepthMask(false); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; matrixStack.translate(0.5, 0.5, 0.5); if(debugMode) @@ -576,7 +580,7 @@ public class PathFinder if(renderedThings >= 5000) break; - PathRenderer.renderNode(matrixStack, element); + PathRenderer.renderNode(matrixStack, element, regionX, regionZ); renderedThings++; } @@ -592,7 +596,7 @@ public class PathFinder RenderSystem.setShaderColor(1, 0, 0, 0.75F); PathRenderer.renderArrow(matrixStack, entry.getValue(), - entry.getKey()); + entry.getKey(), regionX, regionZ); renderedThings++; } } @@ -603,7 +607,8 @@ public class PathFinder else RenderSystem.setShaderColor(0, 1, 0, 0.75F); for(int i = 0; i < path.size() - 1; i++) - PathRenderer.renderArrow(matrixStack, path.get(i), path.get(i + 1)); + PathRenderer.renderArrow(matrixStack, path.get(i), path.get(i + 1), + regionX, regionZ); matrixStack.pop(); diff --git a/src/main/java/net/wurstclient/ai/PathRenderer.java b/src/main/java/net/wurstclient/ai/PathRenderer.java index 96dbfc16..8a0ad394 100644 --- a/src/main/java/net/wurstclient/ai/PathRenderer.java +++ b/src/main/java/net/wurstclient/ai/PathRenderer.java @@ -22,20 +22,20 @@ import net.minecraft.util.math.BlockPos; public final class PathRenderer { public static void renderArrow(MatrixStack matrixStack, BlockPos start, - BlockPos end) + BlockPos end, int regionX, int regionZ) { Tessellator tessellator = RenderSystem.renderThreadTesselator(); BufferBuilder bufferBuilder = tessellator.getBuffer(); bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, VertexFormats.POSITION); - int startX = start.getX(); + int startX = start.getX() - regionX; int startY = start.getY(); - int startZ = start.getZ(); + int startZ = start.getZ() - regionZ; - int endX = end.getX(); + int endX = end.getX() - regionX; int endY = end.getY(); - int endZ = end.getZ(); + int endZ = end.getZ() - regionZ; matrixStack.push(); Matrix4f matrix = matrixStack.peek().getPositionMatrix(); @@ -96,11 +96,12 @@ public final class PathRenderer tessellator.draw(); } - public static void renderNode(MatrixStack matrixStack, BlockPos pos) + public static void renderNode(MatrixStack matrixStack, BlockPos pos, int regionX, int regionZ) { matrixStack.push(); - matrixStack.translate(pos.getX(), pos.getY(), pos.getZ()); + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); matrixStack.scale(0.1F, 0.1F, 0.1F); Matrix4f matrix = matrixStack.peek().getPositionMatrix(); diff --git a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java index f5cbb7ab..f17afc61 100644 --- a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java +++ b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java @@ -34,6 +34,7 @@ import net.minecraft.item.BowItem; import net.minecraft.item.CrossbowItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.wurstclient.Category; import net.wurstclient.SearchTags; @@ -211,10 +212,15 @@ public final class BowAimbotHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; // set position - matrixStack.translate(target.getX(), target.getY(), target.getZ()); + matrixStack.translate(target.getX() - regionX, + target.getY(), target.getZ() - regionZ); // set size float boxWidth = target.getWidth() + 0.1F; diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index 54ab75fb..fac8c9d7 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -92,9 +92,7 @@ public final class ExcavatorHack extends Hack public void onEnable() { // disable conflicting hacks - // TODO: - // WURST.getHax().bowAimbotMod.setEnabled(false); - // WURST.getHax().templateToolMod.setEnabled(false); + WURST.getHax().bowAimbotHack.setEnabled(false); WURST.getHax().autoMineHack.setEnabled(false); WURST.getHax().nukerHack.setEnabled(false); WURST.getHax().nukerLegitHack.setEnabled(false); @@ -161,7 +159,11 @@ public final class ExcavatorHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; RenderSystem.setShader(GameRenderer::getPositionProgram); @@ -178,7 +180,8 @@ public final class ExcavatorHack extends Hack BlockPos pos = area.blocksList.get(i); matrixStack.push(); - matrixStack.translate(pos.getX(), pos.getY(), pos.getZ()); + matrixStack.translate(pos.getX() - regionX, + pos.getY(), pos.getZ() - regionZ); matrixStack.translate(-0.005, -0.005, -0.005); matrixStack.scale(1.01F, 1.01F, 1.01F); @@ -192,8 +195,8 @@ public final class ExcavatorHack extends Hack } matrixStack.push(); - matrixStack.translate(area.minX + offset, area.minY + offset, - area.minZ + offset); + matrixStack.translate(area.minX + offset - regionX, area.minY + offset, + area.minZ + offset - regionZ); matrixStack.scale(area.sizeX + scale, area.sizeY + scale, area.sizeZ + scale); @@ -230,7 +233,8 @@ public final class ExcavatorHack extends Hack continue; matrixStack.push(); - matrixStack.translate(pos.getX(), pos.getY(), pos.getZ()); + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); matrixStack.translate(offset, offset, offset); matrixStack.scale(scale, scale, scale); @@ -251,8 +255,8 @@ public final class ExcavatorHack extends Hack // area box matrixStack.push(); - matrixStack.translate(preview.minX + offset, preview.minY + offset, - preview.minZ + offset); + matrixStack.translate(preview.minX + offset - regionX, preview.minY + offset, + preview.minZ + offset - regionZ); matrixStack.scale(preview.sizeX + scale, preview.sizeY + scale, preview.sizeZ + scale); RenderSystem.setShaderColor(0F, 0F, 0F, 0.5F); @@ -266,8 +270,8 @@ public final class ExcavatorHack extends Hack if(posLookingAt != null) { matrixStack.push(); - matrixStack.translate(posLookingAt.getX(), posLookingAt.getY(), - posLookingAt.getZ()); + matrixStack.translate(posLookingAt.getX() - regionX, posLookingAt.getY(), + posLookingAt.getZ() - regionZ); matrixStack.translate(offset, offset, offset); matrixStack.scale(scale, scale, scale); @@ -285,8 +289,8 @@ public final class ExcavatorHack extends Hack if(currentBlock != null) { // set position - matrixStack.translate(currentBlock.getX(), currentBlock.getY(), - currentBlock.getZ()); + matrixStack.translate(currentBlock.getX() - regionX, currentBlock.getY(), + currentBlock.getZ() - regionZ); // get progress float progress; diff --git a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java index 62971a36..df7cc16d 100644 --- a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java @@ -167,7 +167,11 @@ public final class FeedAuraHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; Box box = new Box(BlockPos.ORIGIN); float p = 1; @@ -178,11 +182,11 @@ public final class FeedAuraHack extends Hack matrixStack.translate( renderTarget.prevX - + (renderTarget.getX() - renderTarget.prevX) * partialTicks, + + (renderTarget.getX() - renderTarget.prevX) * partialTicks - regionX, renderTarget.prevY + (renderTarget.getY() - renderTarget.prevY) * partialTicks, renderTarget.prevZ - + (renderTarget.getZ() - renderTarget.prevZ) * partialTicks); + + (renderTarget.getZ() - renderTarget.prevZ) * partialTicks - regionZ); matrixStack.translate(0, 0.05, 0); matrixStack.scale(renderTarget.getWidth(), renderTarget.getHeight(), renderTarget.getWidth()); diff --git a/src/main/java/net/wurstclient/hacks/FreecamHack.java b/src/main/java/net/wurstclient/hacks/FreecamHack.java index fa7fa1c4..01a273d1 100644 --- a/src/main/java/net/wurstclient/hacks/FreecamHack.java +++ b/src/main/java/net/wurstclient/hacks/FreecamHack.java @@ -24,6 +24,7 @@ import net.minecraft.client.render.VertexFormat; import net.minecraft.client.render.VertexFormats; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import net.wurstclient.Category; @@ -180,15 +181,19 @@ public final class FreecamHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; float[] colorF = color.getColorF(); RenderSystem.setShaderColor(colorF[0], colorF[1], colorF[2], 0.5F); // box matrixStack.push(); - matrixStack.translate(fakePlayer.getX(), fakePlayer.getY(), - fakePlayer.getZ()); + matrixStack.translate(fakePlayer.getX() - regionX, fakePlayer.getY(), + fakePlayer.getZ() - regionZ); matrixStack.scale(fakePlayer.getWidth() + 0.1F, fakePlayer.getHeight() + 0.1F, fakePlayer.getWidth() + 0.1F); Box bb = new Box(-0.5, 0, -0.5, 0.5, 1, 0.5); @@ -196,9 +201,10 @@ public final class FreecamHack extends Hack matrixStack.pop(); // line - Vec3d start = - RotationUtils.getClientLookVec().add(RenderUtils.getCameraPos()); - Vec3d end = fakePlayer.getBoundingBox().getCenter(); + Vec3d start = RotationUtils.getClientLookVec(). + add(RenderUtils.getCameraPos()).subtract(regionX, 0, regionZ); + Vec3d end = fakePlayer.getBoundingBox().getCenter() + .subtract(regionX, 0, regionZ); Matrix4f matrix = matrixStack.peek().getPositionMatrix(); Tessellator tessellator = RenderSystem.renderThreadTesselator(); diff --git a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java index da7f22cf..3412bc49 100644 --- a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java +++ b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java @@ -260,7 +260,11 @@ public final class InstantBunkerHack extends Hack GL11.glDisable(GL11.GL_CULL_FACE); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; // green box { @@ -269,7 +273,8 @@ public final class InstantBunkerHack extends Hack BlockPos pos = positions.get(blockIndex); matrixStack.push(); - matrixStack.translate(pos.getX(), pos.getY(), pos.getZ()); + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); matrixStack.translate(offset, offset, offset); matrixStack.scale(scale, scale, scale); @@ -286,7 +291,8 @@ public final class InstantBunkerHack extends Hack BlockPos pos = positions.get(i); matrixStack.push(); - matrixStack.translate(pos.getX(), pos.getY(), pos.getZ()); + matrixStack.translate(pos.getX() - regionX, + pos.getY(), pos.getZ() - regionZ); matrixStack.translate(offset, offset, offset); matrixStack.scale(scale, scale, scale); diff --git a/src/main/java/net/wurstclient/hacks/ItemEspHack.java b/src/main/java/net/wurstclient/hacks/ItemEspHack.java index fdd473c3..3c5eb73a 100644 --- a/src/main/java/net/wurstclient/hacks/ItemEspHack.java +++ b/src/main/java/net/wurstclient/hacks/ItemEspHack.java @@ -173,8 +173,8 @@ public final class ItemEspHack extends Hack implements UpdateListener, BufferBuilder bufferBuilder = tessellator.getBuffer(); RenderSystem.setShader(GameRenderer::getPositionProgram); - Vec3d start = - RotationUtils.getClientLookVec().add(RenderUtils.getCameraPos()); + Vec3d start = RotationUtils.getClientLookVec() + .add(RenderUtils.getCameraPos()).subtract(regionX, 0, regionZ); bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, VertexFormats.POSITION); @@ -183,12 +183,12 @@ public final class ItemEspHack extends Hack implements UpdateListener, Vec3d end = e.getBoundingBox().getCenter() .subtract(new Vec3d(e.getX(), e.getY(), e.getZ()) .subtract(e.prevX, e.prevY, e.prevZ) - .multiply(1 - partialTicks)); + .multiply(1 - partialTicks)).subtract(regionX, 0, regionZ); - bufferBuilder.vertex(matrix, (float)start.x - regionX, - (float)start.y, (float)start.z - regionZ).next(); - bufferBuilder.vertex(matrix, (float)end.x - regionX, (float)end.y, - (float)end.z - regionZ).next(); + bufferBuilder.vertex(matrix, (float)start.x, (float)start.y, + (float)start.z).next(); + bufferBuilder.vertex(matrix, (float)end.x, (float)end.y, + (float)end.z).next(); } tessellator.draw(); } diff --git a/src/main/java/net/wurstclient/hacks/OverlayHack.java b/src/main/java/net/wurstclient/hacks/OverlayHack.java index 7f19c85b..706bdfe2 100644 --- a/src/main/java/net/wurstclient/hacks/OverlayHack.java +++ b/src/main/java/net/wurstclient/hacks/OverlayHack.java @@ -63,10 +63,15 @@ public final class OverlayHack extends Hack implements RenderListener GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; // set position - matrixStack.translate(pos.getX(), pos.getY(), pos.getZ()); + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); // get progress float progress = diff --git a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java index 2266921d..2c554868 100644 --- a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java @@ -89,7 +89,11 @@ public final class PlayerFinderHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; float[] rainbow = RenderUtils.getRainbowColor(); RenderSystem.setShaderColor(rainbow[0], rainbow[1], rainbow[2], 0.5F); @@ -104,11 +108,11 @@ public final class PlayerFinderHack extends Hack VertexFormats.POSITION); // set start position - Vec3d start = - RotationUtils.getClientLookVec().add(RenderUtils.getCameraPos()); + Vec3d start = RotationUtils.getClientLookVec(). + add(RenderUtils.getCameraPos()).subtract(regionX, 0, regionZ); // set end position - Vec3d end = Vec3d.ofCenter(pos); + Vec3d end = Vec3d.ofCenter(pos).subtract(regionX, 0, regionZ); // draw line bufferBuilder @@ -122,7 +126,8 @@ public final class PlayerFinderHack extends Hack // block box { matrixStack.push(); - matrixStack.translate(pos.getX(), pos.getY(), pos.getZ()); + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); RenderUtils.drawOutlinedBox(matrixStack); diff --git a/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java b/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java index 1896c404..9b42bbbb 100644 --- a/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java +++ b/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java @@ -14,6 +14,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; import net.minecraft.entity.mob.MobEntity; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.MathHelper; import net.wurstclient.Category; @@ -57,7 +58,11 @@ public final class ProphuntEspHack extends Hack implements RenderListener GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRenderOffset(matrixStack); + RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; // set color float alpha = 0.5F + 0.25F * MathHelper @@ -77,7 +82,8 @@ public final class ProphuntEspHack extends Hack implements RenderListener continue; matrixStack.push(); - matrixStack.translate(entity.getX(), entity.getY(), entity.getZ()); + matrixStack.translate(entity.getX() - regionX, entity.getY(), + entity.getZ() - regionZ); RenderUtils.drawOutlinedBox(FAKE_BLOCK_BOX, matrixStack); RenderUtils.drawSolidBox(FAKE_BLOCK_BOX, matrixStack); diff --git a/src/main/java/net/wurstclient/util/RenderUtils.java b/src/main/java/net/wurstclient/util/RenderUtils.java index d87fa4d6..47bac6e4 100644 --- a/src/main/java/net/wurstclient/util/RenderUtils.java +++ b/src/main/java/net/wurstclient/util/RenderUtils.java @@ -49,14 +49,6 @@ public enum RenderUtils GL11.glScissor(scissorX, scissorY, scissorWidth, scissorHeight); } - public static void applyRenderOffset(MatrixStack matrixStack) - { - applyCameraRotationOnly(); - Vec3d camPos = getCameraPos(); - - matrixStack.translate(-camPos.x, -camPos.y, -camPos.z); - } - public static void applyRegionalRenderOffset(MatrixStack matrixStack) { applyCameraRotationOnly(); From 0d7ceb4f5588d5d43f8605bc51fe275a267e82fb Mon Sep 17 00:00:00 2001 From: ThisTestUser Date: Sun, 29 Jan 2023 11:17:07 -0500 Subject: [PATCH 010/126] Fix FeedAura using entity health for ESP --- .../net/wurstclient/hacks/FeedAuraHack.java | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java index df7cc16d..2e7dc09d 100644 --- a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java @@ -174,12 +174,6 @@ public final class FeedAuraHack extends Hack int regionZ = (camPos.getZ() >> 9) * 512; Box box = new Box(BlockPos.ORIGIN); - float p = 1; - LivingEntity le = renderTarget; - p = (le.getMaxHealth() - le.getHealth()) / le.getMaxHealth(); - float red = p * 2F; - float green = 2 - red; - matrixStack.translate( renderTarget.prevX + (renderTarget.getX() - renderTarget.prevX) * partialTicks - regionX, @@ -192,19 +186,12 @@ public final class FeedAuraHack extends Hack renderTarget.getWidth()); matrixStack.translate(-0.5, 0, -0.5); - if(p < 1) - { - matrixStack.translate(0.5, 0.5, 0.5); - matrixStack.scale(p, p, p); - matrixStack.translate(-0.5, -0.5, -0.5); - } - RenderSystem.setShader(GameRenderer::getPositionProgram); - RenderSystem.setShaderColor(red, green, 0, 0.25F); + RenderSystem.setShaderColor(1, 0, 0, 0.25F); RenderUtils.drawSolidBox(box, matrixStack); - RenderSystem.setShaderColor(red, green, 0, 0.5F); + RenderSystem.setShaderColor(1, 0, 0, 0.5F); RenderUtils.drawOutlinedBox(box, matrixStack); matrixStack.pop(); From e232d9dbbfc6196a95a87e57deeb46ff2e811531 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 2 Feb 2023 20:23:12 +0100 Subject: [PATCH 011/126] [Wurst-Bot] Update to 23w05a --- gradle.properties | 8 ++++---- src/main/java/net/wurstclient/WurstClient.java | 2 +- src/main/java/net/wurstclient/hacks/AutoArmorHack.java | 4 ++-- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index d3f47a20..99c196d5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=23w04a -yarn_mappings=23w04a+build.2 +minecraft_version=23w05a +yarn_mappings=23w05a+build.5 loader_version=0.14.13 #Fabric api -fabric_version=0.73.1+1.19.4 +fabric_version=0.73.3+1.19.4 # Mod Properties -mod_version = v7.31-MC23w04a +mod_version = v7.31-MC23w05a maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 579f2281..7ee197bc 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.31"; - public static final String MC_VERSION = "23w04a"; + public static final String MC_VERSION = "23w05a"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java index 90cf1b3a..7c0fec7f 100644 --- a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java @@ -20,7 +20,7 @@ import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ArmorItem; -import net.minecraft.item.ArmorItem.class_8051; +import net.minecraft.item.ArmorItem.Type; import net.minecraft.item.ItemStack; import net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket; import net.wurstclient.Category; @@ -177,7 +177,7 @@ public final class AutoArmorHack extends Hack int armorPoints = item.getProtection(); int prtPoints = 0; int armorToughness = (int)((IArmorItem)item).getToughness(); - int armorType = item.getMaterial().method_48403(class_8051.LEGGINGS); + int armorType = item.getMaterial().getProtection(Type.LEGGINGS); if(useEnchantments.isChecked()) { diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 6de5e642..adc735f9 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 6333b6ff..7377a739 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index c1097d02..7ed8ad48 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From e6b68e1e20575add93dda6084c1eb428850b124a Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 2 Feb 2023 20:33:45 +0100 Subject: [PATCH 012/126] Update to 23w05a --- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- src/main/resources/fabric.mod.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index adc735f9..6de5e642 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 7377a739..6333b6ff 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 7ed8ad48..c1097d02 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index c5ae01c2..bda678b4 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -31,7 +31,7 @@ "depends": { "fabricloader": ">=0.14.10", "fabric-api": ">=0.73.1", - "minecraft": "~1.19.4-alpha.23.4.a", + "minecraft": "~1.19.4-alpha.23.5.a", "java": ">=17" }, "suggests": { From f430a8e2b4966be9161cedac3e23031fa54529b6 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 8 Feb 2023 21:27:08 +0100 Subject: [PATCH 013/126] [Wurst-Bot] Update to 23w06a --- gradle.properties | 10 +++++----- src/main/java/net/wurstclient/WurstClient.java | 2 +- .../java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- .../java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index 99c196d5..7c59d0fe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=23w05a -yarn_mappings=23w05a+build.5 -loader_version=0.14.13 +minecraft_version=23w06a +yarn_mappings=23w06a+build.2 +loader_version=0.14.14 #Fabric api -fabric_version=0.73.3+1.19.4 +fabric_version=0.73.5+1.19.4 # Mod Properties -mod_version = v7.31-MC23w05a +mod_version = v7.31-MC23w06a maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 7ee197bc..a295f956 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.31"; - public static final String MC_VERSION = "23w05a"; + public static final String MC_VERSION = "23w06a"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 6de5e642..adc735f9 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 6333b6ff..7377a739 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index c1097d02..7ed8ad48 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From dc375a8399b6252a99b01f8cc51fb4f85840b096 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 8 Feb 2023 21:54:28 +0100 Subject: [PATCH 014/126] Update to 23w06a --- src/main/java/net/wurstclient/hacks/AutoArmorHack.java | 2 +- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- src/main/resources/fabric.mod.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java index 7c0fec7f..566e1797 100644 --- a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java @@ -185,7 +185,7 @@ public final class AutoArmorHack extends Hack int prtLvl = EnchantmentHelper.getLevel(protection, stack); ClientPlayerEntity player = MC.player; - DamageSource dmgSource = DamageSource.player(player); + DamageSource dmgSource = player.method_48923().method_48802(player); prtPoints = protection.getProtectionAmount(prtLvl, dmgSource); } diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index adc735f9..6de5e642 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 7377a739..6333b6ff 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 7ed8ad48..c1097d02 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index bda678b4..49b6010c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -31,7 +31,7 @@ "depends": { "fabricloader": ">=0.14.10", "fabric-api": ">=0.73.1", - "minecraft": "~1.19.4-alpha.23.5.a", + "minecraft": "~1.19.4-alpha.23.6.a", "java": ">=17" }, "suggests": { From d164ef15c8f8435ce6d36777508fa9ef023c9d54 Mon Sep 17 00:00:00 2001 From: ThisTestUser Date: Sat, 11 Feb 2023 15:42:30 -0500 Subject: [PATCH 015/126] Fix AutoFarm crashing on second activation --- src/main/java/net/wurstclient/hacks/AutoFarmHack.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index 3743d1da..1f492a82 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -111,6 +111,7 @@ public final class AutoFarmHack extends Hack Stream.of(greenBuffer, cyanBuffer, redBuffer).filter(Objects::nonNull) .forEach(VertexBuffer::close); + greenBuffer = cyanBuffer = redBuffer = null; } @Override From 96c0a960de8d9cf34cc45461ce0c96c7d3759f75 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 15 Feb 2023 22:10:35 +0100 Subject: [PATCH 016/126] [Wurst-Bot] Update to 23w07a --- gradle.properties | 8 ++++---- src/main/java/net/wurstclient/WurstClient.java | 2 +- .../altmanager/screens/AltEditorScreen.java | 8 ++++---- .../altmanager/screens/AltManagerScreen.java | 6 +++--- .../clickgui/screens/EditBlockListScreen.java | 4 ++-- .../clickgui/screens/EditBlockScreen.java | 4 ++-- .../clickgui/screens/EditColorScreen.java | 2 +- .../clickgui/screens/EditItemListScreen.java | 4 ++-- .../clickgui/screens/EditSliderScreen.java | 2 +- .../clickgui/screens/SelectFileScreen.java | 2 +- .../net/wurstclient/hacks/AutoArmorHack.java | 2 +- .../wurstclient/mixin/StatsScreenMixin.java | 2 +- .../wurstclient/mixin/TitleScreenMixin.java | 2 +- .../navigator/NavigatorFeatureScreen.java | 4 ++-- .../navigator/NavigatorMainScreen.java | 2 +- .../navigator/NavigatorNewKeybindScreen.java | 10 +++++----- .../NavigatorRemoveKeybindScreen.java | 10 +++++----- .../nochatreports/ForcedChatReportsScreen.java | 2 +- .../nochatreports/NcrModRequiredScreen.java | 2 +- .../options/EnterProfileNameScreen.java | 2 +- .../options/KeybindEditorScreen.java | 6 +++--- .../options/KeybindManagerScreen.java | 4 ++-- .../options/KeybindProfilesScreen.java | 2 +- .../wurstclient/options/PressAKeyScreen.java | 2 +- .../options/WurstOptionsScreen.java | 8 ++++---- .../wurstclient/options/ZoomManagerScreen.java | 4 ++-- .../serverfinder/CleanUpScreen.java | 4 ++-- .../serverfinder/ServerFinderScreen.java | 18 +++++++++--------- 28 files changed, 64 insertions(+), 64 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7c59d0fe..e701d459 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=23w06a -yarn_mappings=23w06a+build.2 +minecraft_version=23w07a +yarn_mappings=23w07a+build.1 loader_version=0.14.14 #Fabric api -fabric_version=0.73.5+1.19.4 +fabric_version=0.74.1+1.19.4 # Mod Properties -mod_version = v7.31-MC23w06a +mod_version = v7.31-MC23w07a maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index a295f956..27f42824 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.31"; - public static final String MC_VERSION = "23w06a"; + public static final String MC_VERSION = "23w07a"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java b/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java index 351e4e7f..e6e2cae0 100644 --- a/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java +++ b/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java @@ -359,17 +359,17 @@ public abstract class AltEditorScreen extends Screen width - (width / 2 - 100) / 2 - 64, height / 2 - 128, 128, 256); // text - drawStringWithShadow(matrixStack, textRenderer, + drawTextWithShadow(matrixStack, textRenderer, "Name (for cracked alts), or", width / 2 - 100, 37, 10526880); - drawStringWithShadow(matrixStack, textRenderer, + drawTextWithShadow(matrixStack, textRenderer, "E-Mail (for premium alts)", width / 2 - 100, 47, 10526880); - drawStringWithShadow(matrixStack, textRenderer, + drawTextWithShadow(matrixStack, textRenderer, "Password (leave blank for cracked alts)", width / 2 - 100, 87, 10526880); String[] lines = message.split("\n"); for(int i = 0; i < lines.length; i++) - drawCenteredText(matrixStack, textRenderer, lines[i], width / 2, + drawCenteredTextWithShadow(matrixStack, textRenderer, lines[i], width / 2, 142 + 10 * i, 16777215); // text boxes diff --git a/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java b/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java index 53e9616a..d104d533 100644 --- a/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java +++ b/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java @@ -435,11 +435,11 @@ public final class AltManagerScreen extends Screen } // title text - drawCenteredText(matrixStack, textRenderer, "Alt Manager", width / 2, 4, + drawCenteredTextWithShadow(matrixStack, textRenderer, "Alt Manager", width / 2, 4, 16777215); - drawCenteredText(matrixStack, textRenderer, + drawCenteredTextWithShadow(matrixStack, textRenderer, "Alts: " + altManager.getList().size(), width / 2, 14, 10526880); - drawCenteredText( + drawCenteredTextWithShadow( matrixStack, textRenderer, "premium: " + altManager.getNumPremium() + ", cracked: " + altManager.getNumCracked(), width / 2, 24, 10526880); diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java index f08b8c10..3ffbd5c4 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java @@ -169,7 +169,7 @@ public final class EditBlockListScreen extends Screen { listGui.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredText(matrixStack, client.textRenderer, + drawCenteredTextWithShadow(matrixStack, client.textRenderer, blockList.getName() + " (" + listGui.getItemCount() + ")", width / 2, 12, 0xffffff); @@ -182,7 +182,7 @@ public final class EditBlockListScreen extends Screen matrixStack.translate(-64 + width / 2 - 152, 0, 0); if(blockNameField.getText().isEmpty() && !blockNameField.isFocused()) - drawStringWithShadow(matrixStack, client.textRenderer, + drawTextWithShadow(matrixStack, client.textRenderer, "block name or ID", 68, height - 50, 0x808080); int border = blockNameField.isFocused() ? 0xffffffff : 0xffa0a0a0; diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java index 4727311b..35469db8 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java @@ -106,7 +106,7 @@ public final class EditBlockScreen extends Screen TextRenderer tr = client.textRenderer; renderBackground(matrixStack); - drawCenteredText(matrixStack, tr, setting.getName(), width / 2, 20, + drawCenteredTextWithShadow(matrixStack, tr, setting.getName(), width / 2, 20, 0xFFFFFF); blockField.render(matrixStack, mouseX, mouseY, partialTicks); @@ -122,7 +122,7 @@ public final class EditBlockScreen extends Screen int lblX = lblAbove ? 50 : 68; int lblY = lblAbove ? -66 : -50; int lblColor = lblAbove ? 0xF0F0F0 : 0x808080; - drawStringWithShadow(matrixStack, tr, lblText, lblX, lblY, lblColor); + drawTextWithShadow(matrixStack, tr, lblText, lblX, lblY, lblColor); int border = blockField.isFocused() ? 0xffffffff : 0xffa0a0a0; int black = 0xff000000; diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditColorScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditColorScreen.java index 1bc71cc5..8142696e 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditColorScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditColorScreen.java @@ -173,7 +173,7 @@ public final class EditColorScreen extends Screen TextRenderer tr = client.textRenderer; renderBackground(matrixStack); - drawCenteredText(matrixStack, client.textRenderer, + drawCenteredTextWithShadow(matrixStack, client.textRenderer, colorSetting.getName(), width / 2, 16, 0xF0F0F0); // Draw palette diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditItemListScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditItemListScreen.java index f6f750de..ff090bda 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditItemListScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditItemListScreen.java @@ -171,7 +171,7 @@ public final class EditItemListScreen extends Screen { listGui.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredText(matrixStack, client.textRenderer, + drawCenteredTextWithShadow(matrixStack, client.textRenderer, itemList.getName() + " (" + listGui.getItemCount() + ")", width / 2, 12, 0xffffff); @@ -187,7 +187,7 @@ public final class EditItemListScreen extends Screen { matrixStack.push(); matrixStack.translate(0, 0, 300); - drawStringWithShadow(matrixStack, client.textRenderer, + drawTextWithShadow(matrixStack, client.textRenderer, "item name or ID", 68, height - 50, 0x808080); matrixStack.pop(); } diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java index 4768e189..42a59b2d 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java @@ -96,7 +96,7 @@ public final class EditSliderScreen extends Screen float partialTicks) { renderBackground(matrixStack); - drawCenteredText(matrixStack, client.textRenderer, slider.getName(), + drawCenteredTextWithShadow(matrixStack, client.textRenderer, slider.getName(), width / 2, 20, 0xFFFFFF); valueField.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java b/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java index 036c8fbb..3e1bfb35 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java @@ -168,7 +168,7 @@ public final class SelectFileScreen extends Screen renderBackground(matrixStack); listGui.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredText(matrixStack, client.textRenderer, setting.getName(), + drawCenteredTextWithShadow(matrixStack, client.textRenderer, setting.getName(), width / 2, 12, 0xffffff); super.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java index 566e1797..89f67d31 100644 --- a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java @@ -185,7 +185,7 @@ public final class AutoArmorHack extends Hack int prtLvl = EnchantmentHelper.getLevel(protection, stack); ClientPlayerEntity player = MC.player; - DamageSource dmgSource = player.method_48923().method_48802(player); + DamageSource dmgSource = player.getDamageSources().playerAttack(player); prtPoints = protection.getProtectionAmount(prtLvl, dmgSource); } diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 6de5e642..adc735f9 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 6333b6ff..7377a739 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java index ee935a8b..1182bf85 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java @@ -325,7 +325,7 @@ public final class NavigatorFeatureScreen extends NavigatorScreen int txtColor = gui.getTxtColor(); // title bar - drawCenteredText(matrixStack, client.textRenderer, feature.getName(), + drawCenteredTextWithShadow(matrixStack, client.textRenderer, feature.getName(), middleX, 32, txtColor); GL11.glEnable(GL11.GL_BLEND); @@ -463,7 +463,7 @@ public final class NavigatorFeatureScreen extends NavigatorScreen drawBox(matrixStack, x1, y1, x2, y2); // text - drawCenteredText(matrixStack, client.textRenderer, + drawCenteredTextWithShadow(matrixStack, client.textRenderer, buttonData.buttonText, (x1 + x2) / 2, y1 + (buttonData.height - 10) / 2 + 1, buttonData.isLocked() ? 0xaaaaaa : buttonData.textColor); diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index c1097d02..7ed8ad48 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/java/net/wurstclient/navigator/NavigatorNewKeybindScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorNewKeybindScreen.java index 321023ef..f985b12f 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorNewKeybindScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorNewKeybindScreen.java @@ -163,7 +163,7 @@ public class NavigatorNewKeybindScreen extends NavigatorScreen int txtColor = gui.getTxtColor(); // title bar - drawCenteredText(matrixStack, client.textRenderer, "New Keybind", + drawCenteredTextWithShadow(matrixStack, client.textRenderer, "New Keybind", middleX, 32, txtColor); GL11.glEnable(GL11.GL_BLEND); @@ -212,9 +212,9 @@ public class NavigatorNewKeybindScreen extends NavigatorScreen drawBox(matrixStack, x1, y1, x2, y2); // text - drawStringWithShadow(matrixStack, client.textRenderer, + drawTextWithShadow(matrixStack, client.textRenderer, pkb.getDescription(), x1 + 1, y1 + 1, txtColor); - drawStringWithShadow(matrixStack, client.textRenderer, + drawTextWithShadow(matrixStack, client.textRenderer, pkb.getCommand(), x1 + 1, y1 + 1 + client.textRenderer.fontHeight, txtColor); GL11.glEnable(GL11.GL_BLEND); @@ -225,7 +225,7 @@ public class NavigatorNewKeybindScreen extends NavigatorScreen int textY = bgy1 + scroll + 2; for(String line : text.split("\n")) { - drawStringWithShadow(matrixStack, client.textRenderer, line, + drawTextWithShadow(matrixStack, client.textRenderer, line, bgx1 + 2, textY, txtColor); textY += client.textRenderer.fontHeight; } @@ -261,7 +261,7 @@ public class NavigatorNewKeybindScreen extends NavigatorScreen drawBox(matrixStack, x1, y1, x2, y2); // text - drawCenteredText(matrixStack, client.textRenderer, + drawCenteredTextWithShadow(matrixStack, client.textRenderer, button.getMessage().getString(), (x1 + x2) / 2, y1 + 5, txtColor); GL11.glEnable(GL11.GL_BLEND); diff --git a/src/main/java/net/wurstclient/navigator/NavigatorRemoveKeybindScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorRemoveKeybindScreen.java index e8511658..a3e42ced 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorRemoveKeybindScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorRemoveKeybindScreen.java @@ -135,7 +135,7 @@ public class NavigatorRemoveKeybindScreen extends NavigatorScreen int txtColor = gui.getTxtColor(); // title bar - drawCenteredText(matrixStack, client.textRenderer, "Remove Keybind", + drawCenteredTextWithShadow(matrixStack, client.textRenderer, "Remove Keybind", middleX, 32, txtColor); GL11.glEnable(GL11.GL_BLEND); @@ -182,11 +182,11 @@ public class NavigatorRemoveKeybindScreen extends NavigatorScreen drawBox(matrixStack, x1, y1, x2, y2); // text - drawStringWithShadow(matrixStack, client.textRenderer, + drawTextWithShadow(matrixStack, client.textRenderer, key.replace("key.keyboard.", "") + ": " + keybind.getDescription(), x1 + 1, y1 + 1, txtColor); - drawStringWithShadow(matrixStack, client.textRenderer, + drawTextWithShadow(matrixStack, client.textRenderer, keybind.getCommand(), x1 + 1, y1 + 1 + client.textRenderer.fontHeight, txtColor); GL11.glEnable(GL11.GL_BLEND); @@ -196,7 +196,7 @@ public class NavigatorRemoveKeybindScreen extends NavigatorScreen int textY = bgy1 + scroll + 2; for(String line : text.split("\n")) { - drawStringWithShadow(matrixStack, client.textRenderer, line, + drawTextWithShadow(matrixStack, client.textRenderer, line, bgx1 + 2, textY, txtColor); textY += client.textRenderer.fontHeight; } @@ -232,7 +232,7 @@ public class NavigatorRemoveKeybindScreen extends NavigatorScreen drawBox(matrixStack, x1, y1, x2, y2); // text - drawCenteredText(matrixStack, client.textRenderer, + drawCenteredTextWithShadow(matrixStack, client.textRenderer, button.getMessage().getString(), (x1 + x2) / 2, y1 + 5, txtColor); GL11.glEnable(GL11.GL_BLEND); diff --git a/src/main/java/net/wurstclient/nochatreports/ForcedChatReportsScreen.java b/src/main/java/net/wurstclient/nochatreports/ForcedChatReportsScreen.java index eec7ed78..0bc6aba8 100644 --- a/src/main/java/net/wurstclient/nochatreports/ForcedChatReportsScreen.java +++ b/src/main/java/net/wurstclient/nochatreports/ForcedChatReportsScreen.java @@ -111,7 +111,7 @@ public final class ForcedChatReportsScreen extends Screen int reasonY = (height - 68) / 2 - reasonHeight / 2; int titleY = reasonY - textRenderer.fontHeight * 2; - DrawableHelper.drawCenteredText(matrices, textRenderer, title, centerX, + DrawableHelper.drawCenteredTextWithShadow(matrices, textRenderer, title, centerX, titleY, 0xAAAAAA); reasonFormatted.drawCenterWithShadow(matrices, centerX, reasonY); diff --git a/src/main/java/net/wurstclient/nochatreports/NcrModRequiredScreen.java b/src/main/java/net/wurstclient/nochatreports/NcrModRequiredScreen.java index 553bbad9..bae8f1eb 100644 --- a/src/main/java/net/wurstclient/nochatreports/NcrModRequiredScreen.java +++ b/src/main/java/net/wurstclient/nochatreports/NcrModRequiredScreen.java @@ -127,7 +127,7 @@ public final class NcrModRequiredScreen extends Screen int reasonY = (height - 68) / 2 - reasonHeight / 2; int titleY = reasonY - textRenderer.fontHeight * 2; - DrawableHelper.drawCenteredText(matrices, textRenderer, title, centerX, + DrawableHelper.drawCenteredTextWithShadow(matrices, textRenderer, title, centerX, titleY, 0xAAAAAA); reasonFormatted.drawCenterWithShadow(matrices, centerX, reasonY); diff --git a/src/main/java/net/wurstclient/options/EnterProfileNameScreen.java b/src/main/java/net/wurstclient/options/EnterProfileNameScreen.java index a4aba7bd..a7e81874 100644 --- a/src/main/java/net/wurstclient/options/EnterProfileNameScreen.java +++ b/src/main/java/net/wurstclient/options/EnterProfileNameScreen.java @@ -92,7 +92,7 @@ public final class EnterProfileNameScreen extends Screen float partialTicks) { renderBackground(matrixStack); - drawCenteredText(matrixStack, client.textRenderer, + drawCenteredTextWithShadow(matrixStack, client.textRenderer, "Name your new profile", width / 2, 20, 0xFFFFFF); valueField.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/options/KeybindEditorScreen.java b/src/main/java/net/wurstclient/options/KeybindEditorScreen.java index b4378906..9b4a9480 100644 --- a/src/main/java/net/wurstclient/options/KeybindEditorScreen.java +++ b/src/main/java/net/wurstclient/options/KeybindEditorScreen.java @@ -99,14 +99,14 @@ public final class KeybindEditorScreen extends Screen { renderBackground(matrixStack); - drawCenteredText(matrixStack, textRenderer, + drawCenteredTextWithShadow(matrixStack, textRenderer, (oldKey != null ? "Edit" : "Add") + " Keybind", width / 2, 20, 0xffffff); - drawStringWithShadow(matrixStack, textRenderer, + drawTextWithShadow(matrixStack, textRenderer, "Key: " + key.replace("key.keyboard.", ""), width / 2 - 100, 47, 0xa0a0a0); - drawStringWithShadow(matrixStack, textRenderer, + drawTextWithShadow(matrixStack, textRenderer, "Commands (separated by ';')", width / 2 - 100, 87, 0xa0a0a0); commandField.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/options/KeybindManagerScreen.java b/src/main/java/net/wurstclient/options/KeybindManagerScreen.java index 83cf5a01..6418e9a1 100644 --- a/src/main/java/net/wurstclient/options/KeybindManagerScreen.java +++ b/src/main/java/net/wurstclient/options/KeybindManagerScreen.java @@ -169,9 +169,9 @@ public final class KeybindManagerScreen extends Screen renderBackground(matrixStack); listGui.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredText(matrixStack, textRenderer, "Keybind Manager", + drawCenteredTextWithShadow(matrixStack, textRenderer, "Keybind Manager", width / 2, 8, 0xffffff); - drawCenteredText(matrixStack, textRenderer, + drawCenteredTextWithShadow(matrixStack, textRenderer, "Keybinds: " + listGui.getItemCount(), width / 2, 20, 0xffffff); super.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java b/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java index 893008d9..6569d1bc 100644 --- a/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java +++ b/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java @@ -176,7 +176,7 @@ public final class KeybindProfilesScreen extends Screen renderBackground(matrixStack); listGui.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredText(matrixStack, client.textRenderer, "Keybind Profiles", + drawCenteredTextWithShadow(matrixStack, client.textRenderer, "Keybind Profiles", width / 2, 12, 0xffffff); super.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/options/PressAKeyScreen.java b/src/main/java/net/wurstclient/options/PressAKeyScreen.java index 267a71a8..debcf987 100644 --- a/src/main/java/net/wurstclient/options/PressAKeyScreen.java +++ b/src/main/java/net/wurstclient/options/PressAKeyScreen.java @@ -54,7 +54,7 @@ public class PressAKeyScreen extends Screen float partialTicks) { renderBackground(matrixStack); - drawCenteredText(matrixStack, textRenderer, "Press a key", width / 2, + drawCenteredTextWithShadow(matrixStack, textRenderer, "Press a key", width / 2, height / 4 + 48, 16777215); super.render(matrixStack, mouseX, mouseY, partialTicks); } diff --git a/src/main/java/net/wurstclient/options/WurstOptionsScreen.java b/src/main/java/net/wurstclient/options/WurstOptionsScreen.java index 633fe0ef..804ecf34 100644 --- a/src/main/java/net/wurstclient/options/WurstOptionsScreen.java +++ b/src/main/java/net/wurstclient/options/WurstOptionsScreen.java @@ -162,13 +162,13 @@ public class WurstOptionsScreen extends Screen int y1 = 40; int y2 = height / 4 + 24 - 28; - drawCenteredText(matrixStack, tr, "Wurst Options", middleX, y1, + drawCenteredTextWithShadow(matrixStack, tr, "Wurst Options", middleX, y1, 0xffffff); - drawCenteredText(matrixStack, tr, "Settings", middleX - 104, y2, + drawCenteredTextWithShadow(matrixStack, tr, "Settings", middleX - 104, y2, 0xcccccc); - drawCenteredText(matrixStack, tr, "Managers", middleX, y2, 0xcccccc); - drawCenteredText(matrixStack, tr, "Links", middleX + 104, y2, 0xcccccc); + drawCenteredTextWithShadow(matrixStack, tr, "Managers", middleX, y2, 0xcccccc); + drawCenteredTextWithShadow(matrixStack, tr, "Links", middleX + 104, y2, 0xcccccc); } private void renderButtonTooltip(MatrixStack matrixStack, int mouseX, diff --git a/src/main/java/net/wurstclient/options/ZoomManagerScreen.java b/src/main/java/net/wurstclient/options/ZoomManagerScreen.java index 1d35e3e7..05b5197c 100644 --- a/src/main/java/net/wurstclient/options/ZoomManagerScreen.java +++ b/src/main/java/net/wurstclient/options/ZoomManagerScreen.java @@ -101,9 +101,9 @@ public class ZoomManagerScreen extends Screen implements PressAKeyCallback SliderSetting level = zoom.getLevelSetting(); renderBackground(matrixStack); - drawCenteredText(matrixStack, textRenderer, "Zoom Manager", width / 2, + drawCenteredTextWithShadow(matrixStack, textRenderer, "Zoom Manager", width / 2, 40, 0xffffff); - drawStringWithShadow(matrixStack, textRenderer, + drawTextWithShadow(matrixStack, textRenderer, "Zoom Level: " + level.getValueString(), width / 2 - 75, height / 4 + 44, 0xcccccc); diff --git a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java index 7317e232..6891fd29 100644 --- a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java +++ b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java @@ -205,9 +205,9 @@ public class CleanUpScreen extends Screen float partialTicks) { renderBackground(matrixStack); - drawCenteredText(matrixStack, textRenderer, "Clean Up", width / 2, 20, + drawCenteredTextWithShadow(matrixStack, textRenderer, "Clean Up", width / 2, 20, 16777215); - drawCenteredText(matrixStack, textRenderer, + drawCenteredTextWithShadow(matrixStack, textRenderer, "Please select the servers you want to remove:", width / 2, 36, 10526880); diff --git a/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java b/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java index 0701f294..978119b4 100644 --- a/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java +++ b/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java @@ -219,33 +219,33 @@ public class ServerFinderScreen extends Screen { renderBackground(matrixStack); - drawCenteredText(matrixStack, textRenderer, "Server Finder", width / 2, + drawCenteredTextWithShadow(matrixStack, textRenderer, "Server Finder", width / 2, 20, 16777215); - drawCenteredText(matrixStack, textRenderer, + drawCenteredTextWithShadow(matrixStack, textRenderer, "This will search for servers with similar IPs", width / 2, 40, 10526880); - drawCenteredText(matrixStack, textRenderer, + drawCenteredTextWithShadow(matrixStack, textRenderer, "to the IP you type into the field below.", width / 2, 50, 10526880); - drawCenteredText(matrixStack, textRenderer, + drawCenteredTextWithShadow(matrixStack, textRenderer, "The servers it finds will be added to your server list.", width / 2, 60, 10526880); - drawStringWithShadow(matrixStack, textRenderer, "Server address:", + drawTextWithShadow(matrixStack, textRenderer, "Server address:", width / 2 - 100, height / 4 + 24, 10526880); ipBox.render(matrixStack, mouseX, mouseY, partialTicks); - drawStringWithShadow(matrixStack, textRenderer, "Max. threads:", + drawTextWithShadow(matrixStack, textRenderer, "Max. threads:", width / 2 - 100, height / 4 + 60, 10526880); maxThreadsBox.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredText(matrixStack, textRenderer, state.toString(), width / 2, + drawCenteredTextWithShadow(matrixStack, textRenderer, state.toString(), width / 2, height / 4 + 73, 10526880); - drawStringWithShadow(matrixStack, textRenderer, + drawTextWithShadow(matrixStack, textRenderer, "Checked: " + checked + " / 1792", width / 2 - 100, height / 4 + 84, 10526880); - drawStringWithShadow(matrixStack, textRenderer, "Working: " + working, + drawTextWithShadow(matrixStack, textRenderer, "Working: " + working, width / 2 - 100, height / 4 + 94, 10526880); super.render(matrixStack, mouseX, mouseY, partialTicks); From be5fc36b0539ad2f114b42286c16c96e9f234476 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 15 Feb 2023 22:35:11 +0100 Subject: [PATCH 017/126] Update to 23w07a --- .../altmanager/screens/AltEditorScreen.java | 4 +-- .../altmanager/screens/AltManagerScreen.java | 4 +-- .../clickgui/screens/EditBlockScreen.java | 4 +-- .../clickgui/screens/EditSliderScreen.java | 4 +-- .../clickgui/screens/SelectFileScreen.java | 4 +-- .../net/wurstclient/hacks/AutoArmorHack.java | 3 +- .../mixin/EntityRendererMixin.java | 32 +++++++++---------- .../wurstclient/mixin/StatsScreenMixin.java | 2 +- .../wurstclient/mixin/TitleScreenMixin.java | 2 +- .../navigator/NavigatorFeatureScreen.java | 4 +-- .../navigator/NavigatorMainScreen.java | 2 +- .../navigator/NavigatorNewKeybindScreen.java | 8 ++--- .../NavigatorRemoveKeybindScreen.java | 8 ++--- .../ForcedChatReportsScreen.java | 4 +-- .../nochatreports/NcrModRequiredScreen.java | 4 +-- .../options/KeybindProfilesScreen.java | 4 +-- .../wurstclient/options/PressAKeyScreen.java | 4 +-- .../options/WurstOptionsScreen.java | 12 ++++--- .../options/ZoomManagerScreen.java | 4 +-- .../serverfinder/CleanUpScreen.java | 4 +-- .../serverfinder/ServerFinderScreen.java | 8 ++--- src/main/resources/fabric.mod.json | 2 +- 22 files changed, 65 insertions(+), 62 deletions(-) diff --git a/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java b/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java index e6e2cae0..211f0152 100644 --- a/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java +++ b/src/main/java/net/wurstclient/altmanager/screens/AltEditorScreen.java @@ -369,8 +369,8 @@ public abstract class AltEditorScreen extends Screen String[] lines = message.split("\n"); for(int i = 0; i < lines.length; i++) - drawCenteredTextWithShadow(matrixStack, textRenderer, lines[i], width / 2, - 142 + 10 * i, 16777215); + drawCenteredTextWithShadow(matrixStack, textRenderer, lines[i], + width / 2, 142 + 10 * i, 16777215); // text boxes nameOrEmailBox.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java b/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java index d104d533..3a6d5039 100644 --- a/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java +++ b/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java @@ -435,8 +435,8 @@ public final class AltManagerScreen extends Screen } // title text - drawCenteredTextWithShadow(matrixStack, textRenderer, "Alt Manager", width / 2, 4, - 16777215); + drawCenteredTextWithShadow(matrixStack, textRenderer, "Alt Manager", + width / 2, 4, 16777215); drawCenteredTextWithShadow(matrixStack, textRenderer, "Alts: " + altManager.getList().size(), width / 2, 14, 10526880); drawCenteredTextWithShadow( diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java index 35469db8..3fdea8fe 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java @@ -106,8 +106,8 @@ public final class EditBlockScreen extends Screen TextRenderer tr = client.textRenderer; renderBackground(matrixStack); - drawCenteredTextWithShadow(matrixStack, tr, setting.getName(), width / 2, 20, - 0xFFFFFF); + drawCenteredTextWithShadow(matrixStack, tr, setting.getName(), + width / 2, 20, 0xFFFFFF); blockField.render(matrixStack, mouseX, mouseY, partialTicks); super.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java index 42a59b2d..ae817d87 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditSliderScreen.java @@ -96,8 +96,8 @@ public final class EditSliderScreen extends Screen float partialTicks) { renderBackground(matrixStack); - drawCenteredTextWithShadow(matrixStack, client.textRenderer, slider.getName(), - width / 2, 20, 0xFFFFFF); + drawCenteredTextWithShadow(matrixStack, client.textRenderer, + slider.getName(), width / 2, 20, 0xFFFFFF); valueField.render(matrixStack, mouseX, mouseY, partialTicks); super.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java b/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java index 3e1bfb35..d6af3547 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java @@ -168,8 +168,8 @@ public final class SelectFileScreen extends Screen renderBackground(matrixStack); listGui.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredTextWithShadow(matrixStack, client.textRenderer, setting.getName(), - width / 2, 12, 0xffffff); + drawCenteredTextWithShadow(matrixStack, client.textRenderer, + setting.getName(), width / 2, 12, 0xffffff); super.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java index 89f67d31..cae1ad68 100644 --- a/src/main/java/net/wurstclient/hacks/AutoArmorHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoArmorHack.java @@ -185,7 +185,8 @@ public final class AutoArmorHack extends Hack int prtLvl = EnchantmentHelper.getLevel(protection, stack); ClientPlayerEntity player = MC.player; - DamageSource dmgSource = player.getDamageSources().playerAttack(player); + DamageSource dmgSource = + player.getDamageSources().playerAttack(player); prtPoints = protection.getProtectionAmount(prtLvl, dmgSource); } diff --git a/src/main/java/net/wurstclient/mixin/EntityRendererMixin.java b/src/main/java/net/wurstclient/mixin/EntityRendererMixin.java index 246d4715..522f547a 100644 --- a/src/main/java/net/wurstclient/mixin/EntityRendererMixin.java +++ b/src/main/java/net/wurstclient/mixin/EntityRendererMixin.java @@ -55,23 +55,21 @@ public abstract class EntityRendererMixin * an infinite loop. Also makes it easier to modify. */ protected void wurstRenderLabelIfPresent(T entity, Text text, - MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, - int i) + MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light) { double d = this.dispatcher.getSquaredDistanceToCamera(entity); - - if(d > 4096) + if(d > 4096.0) return; NameTagsHack nameTagsHack = WurstClient.INSTANCE.getHax().nameTagsHack; boolean bl = !entity.isSneaky() || nameTagsHack.isEnabled(); float f = entity.getHeight() + 0.5F; - int j = "deadmau5".equals(text.getString()) ? -10 : 0; + int i = "deadmau5".equals(text.getString()) ? -10 : 0; - matrixStack.push(); - matrixStack.translate(0.0D, f, 0.0D); - matrixStack.multiply(this.dispatcher.getRotation()); + matrices.push(); + matrices.translate(0F, f, 0F); + matrices.multiply(this.dispatcher.getRotation()); float scale = 0.025F; if(nameTagsHack.isEnabled()) @@ -82,23 +80,25 @@ public abstract class EntityRendererMixin scale *= distance / 10; } - matrixStack.scale(-scale, -scale, scale); + matrices.scale(-scale, -scale, scale); - Matrix4f matrix4f = matrixStack.peek().getPositionMatrix(); + Matrix4f matrix4f = matrices.peek().getPositionMatrix(); float g = WurstClient.MC.options.getTextBackgroundOpacity(0.25F); - int k = (int)(g * 255.0F) << 24; + int j = (int)(g * 255.0F) << 24; TextRenderer textRenderer = this.getTextRenderer(); float h = -textRenderer.getWidth(text) / 2; - textRenderer.draw(text.asOrderedText(), h, j, 553648127, false, - matrix4f, vertexConsumerProvider, bl, k, i); + textRenderer.draw(text, h, i, 0x20FFFFFF, false, matrix4f, + vertexConsumers, bl ? TextRenderer.TextLayerType.SEE_THROUGH + : TextRenderer.TextLayerType.NORMAL, + j, light); if(bl) - textRenderer.draw(text.asOrderedText(), h, j, -1, false, matrix4f, - vertexConsumerProvider, false, 0, i); + textRenderer.draw(text, h, i, -1, false, matrix4f, vertexConsumers, + TextRenderer.TextLayerType.NORMAL, 0, light); - matrixStack.pop(); + matrices.pop(); } @Shadow diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index adc735f9..6de5e642 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 7377a739..6333b6ff 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java index 1182bf85..f1a7663b 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java @@ -325,8 +325,8 @@ public final class NavigatorFeatureScreen extends NavigatorScreen int txtColor = gui.getTxtColor(); // title bar - drawCenteredTextWithShadow(matrixStack, client.textRenderer, feature.getName(), - middleX, 32, txtColor); + drawCenteredTextWithShadow(matrixStack, client.textRenderer, + feature.getName(), middleX, 32, txtColor); GL11.glEnable(GL11.GL_BLEND); // background diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 7ed8ad48..c1097d02 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/java/net/wurstclient/navigator/NavigatorNewKeybindScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorNewKeybindScreen.java index f985b12f..f2865993 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorNewKeybindScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorNewKeybindScreen.java @@ -163,8 +163,8 @@ public class NavigatorNewKeybindScreen extends NavigatorScreen int txtColor = gui.getTxtColor(); // title bar - drawCenteredTextWithShadow(matrixStack, client.textRenderer, "New Keybind", - middleX, 32, txtColor); + drawCenteredTextWithShadow(matrixStack, client.textRenderer, + "New Keybind", middleX, 32, txtColor); GL11.glEnable(GL11.GL_BLEND); // background @@ -225,8 +225,8 @@ public class NavigatorNewKeybindScreen extends NavigatorScreen int textY = bgy1 + scroll + 2; for(String line : text.split("\n")) { - drawTextWithShadow(matrixStack, client.textRenderer, line, - bgx1 + 2, textY, txtColor); + drawTextWithShadow(matrixStack, client.textRenderer, line, bgx1 + 2, + textY, txtColor); textY += client.textRenderer.fontHeight; } GL11.glEnable(GL11.GL_BLEND); diff --git a/src/main/java/net/wurstclient/navigator/NavigatorRemoveKeybindScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorRemoveKeybindScreen.java index a3e42ced..2e605d77 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorRemoveKeybindScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorRemoveKeybindScreen.java @@ -135,8 +135,8 @@ public class NavigatorRemoveKeybindScreen extends NavigatorScreen int txtColor = gui.getTxtColor(); // title bar - drawCenteredTextWithShadow(matrixStack, client.textRenderer, "Remove Keybind", - middleX, 32, txtColor); + drawCenteredTextWithShadow(matrixStack, client.textRenderer, + "Remove Keybind", middleX, 32, txtColor); GL11.glEnable(GL11.GL_BLEND); // background @@ -196,8 +196,8 @@ public class NavigatorRemoveKeybindScreen extends NavigatorScreen int textY = bgy1 + scroll + 2; for(String line : text.split("\n")) { - drawTextWithShadow(matrixStack, client.textRenderer, line, - bgx1 + 2, textY, txtColor); + drawTextWithShadow(matrixStack, client.textRenderer, line, bgx1 + 2, + textY, txtColor); textY += client.textRenderer.fontHeight; } GL11.glEnable(GL11.GL_BLEND); diff --git a/src/main/java/net/wurstclient/nochatreports/ForcedChatReportsScreen.java b/src/main/java/net/wurstclient/nochatreports/ForcedChatReportsScreen.java index 0bc6aba8..f257590e 100644 --- a/src/main/java/net/wurstclient/nochatreports/ForcedChatReportsScreen.java +++ b/src/main/java/net/wurstclient/nochatreports/ForcedChatReportsScreen.java @@ -111,8 +111,8 @@ public final class ForcedChatReportsScreen extends Screen int reasonY = (height - 68) / 2 - reasonHeight / 2; int titleY = reasonY - textRenderer.fontHeight * 2; - DrawableHelper.drawCenteredTextWithShadow(matrices, textRenderer, title, centerX, - titleY, 0xAAAAAA); + DrawableHelper.drawCenteredTextWithShadow(matrices, textRenderer, title, + centerX, titleY, 0xAAAAAA); reasonFormatted.drawCenterWithShadow(matrices, centerX, reasonY); super.render(matrices, mouseX, mouseY, delta); diff --git a/src/main/java/net/wurstclient/nochatreports/NcrModRequiredScreen.java b/src/main/java/net/wurstclient/nochatreports/NcrModRequiredScreen.java index bae8f1eb..af7fc671 100644 --- a/src/main/java/net/wurstclient/nochatreports/NcrModRequiredScreen.java +++ b/src/main/java/net/wurstclient/nochatreports/NcrModRequiredScreen.java @@ -127,8 +127,8 @@ public final class NcrModRequiredScreen extends Screen int reasonY = (height - 68) / 2 - reasonHeight / 2; int titleY = reasonY - textRenderer.fontHeight * 2; - DrawableHelper.drawCenteredTextWithShadow(matrices, textRenderer, title, centerX, - titleY, 0xAAAAAA); + DrawableHelper.drawCenteredTextWithShadow(matrices, textRenderer, title, + centerX, titleY, 0xAAAAAA); reasonFormatted.drawCenterWithShadow(matrices, centerX, reasonY); super.render(matrices, mouseX, mouseY, delta); diff --git a/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java b/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java index 6569d1bc..760ece66 100644 --- a/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java +++ b/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java @@ -176,8 +176,8 @@ public final class KeybindProfilesScreen extends Screen renderBackground(matrixStack); listGui.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredTextWithShadow(matrixStack, client.textRenderer, "Keybind Profiles", - width / 2, 12, 0xffffff); + drawCenteredTextWithShadow(matrixStack, client.textRenderer, + "Keybind Profiles", width / 2, 12, 0xffffff); super.render(matrixStack, mouseX, mouseY, partialTicks); diff --git a/src/main/java/net/wurstclient/options/PressAKeyScreen.java b/src/main/java/net/wurstclient/options/PressAKeyScreen.java index debcf987..cdb935f2 100644 --- a/src/main/java/net/wurstclient/options/PressAKeyScreen.java +++ b/src/main/java/net/wurstclient/options/PressAKeyScreen.java @@ -54,8 +54,8 @@ public class PressAKeyScreen extends Screen float partialTicks) { renderBackground(matrixStack); - drawCenteredTextWithShadow(matrixStack, textRenderer, "Press a key", width / 2, - height / 4 + 48, 16777215); + drawCenteredTextWithShadow(matrixStack, textRenderer, "Press a key", + width / 2, height / 4 + 48, 16777215); super.render(matrixStack, mouseX, mouseY, partialTicks); } } diff --git a/src/main/java/net/wurstclient/options/WurstOptionsScreen.java b/src/main/java/net/wurstclient/options/WurstOptionsScreen.java index 804ecf34..988a2008 100644 --- a/src/main/java/net/wurstclient/options/WurstOptionsScreen.java +++ b/src/main/java/net/wurstclient/options/WurstOptionsScreen.java @@ -162,13 +162,15 @@ public class WurstOptionsScreen extends Screen int y1 = 40; int y2 = height / 4 + 24 - 28; - drawCenteredTextWithShadow(matrixStack, tr, "Wurst Options", middleX, y1, - 0xffffff); + drawCenteredTextWithShadow(matrixStack, tr, "Wurst Options", middleX, + y1, 0xffffff); - drawCenteredTextWithShadow(matrixStack, tr, "Settings", middleX - 104, y2, + drawCenteredTextWithShadow(matrixStack, tr, "Settings", middleX - 104, + y2, 0xcccccc); + drawCenteredTextWithShadow(matrixStack, tr, "Managers", middleX, y2, + 0xcccccc); + drawCenteredTextWithShadow(matrixStack, tr, "Links", middleX + 104, y2, 0xcccccc); - drawCenteredTextWithShadow(matrixStack, tr, "Managers", middleX, y2, 0xcccccc); - drawCenteredTextWithShadow(matrixStack, tr, "Links", middleX + 104, y2, 0xcccccc); } private void renderButtonTooltip(MatrixStack matrixStack, int mouseX, diff --git a/src/main/java/net/wurstclient/options/ZoomManagerScreen.java b/src/main/java/net/wurstclient/options/ZoomManagerScreen.java index 05b5197c..e91f09e8 100644 --- a/src/main/java/net/wurstclient/options/ZoomManagerScreen.java +++ b/src/main/java/net/wurstclient/options/ZoomManagerScreen.java @@ -101,8 +101,8 @@ public class ZoomManagerScreen extends Screen implements PressAKeyCallback SliderSetting level = zoom.getLevelSetting(); renderBackground(matrixStack); - drawCenteredTextWithShadow(matrixStack, textRenderer, "Zoom Manager", width / 2, - 40, 0xffffff); + drawCenteredTextWithShadow(matrixStack, textRenderer, "Zoom Manager", + width / 2, 40, 0xffffff); drawTextWithShadow(matrixStack, textRenderer, "Zoom Level: " + level.getValueString(), width / 2 - 75, height / 4 + 44, 0xcccccc); diff --git a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java index 6891fd29..c29826bf 100644 --- a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java +++ b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java @@ -205,8 +205,8 @@ public class CleanUpScreen extends Screen float partialTicks) { renderBackground(matrixStack); - drawCenteredTextWithShadow(matrixStack, textRenderer, "Clean Up", width / 2, 20, - 16777215); + drawCenteredTextWithShadow(matrixStack, textRenderer, "Clean Up", + width / 2, 20, 16777215); drawCenteredTextWithShadow(matrixStack, textRenderer, "Please select the servers you want to remove:", width / 2, 36, 10526880); diff --git a/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java b/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java index 978119b4..07ea76ab 100644 --- a/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java +++ b/src/main/java/net/wurstclient/serverfinder/ServerFinderScreen.java @@ -219,8 +219,8 @@ public class ServerFinderScreen extends Screen { renderBackground(matrixStack); - drawCenteredTextWithShadow(matrixStack, textRenderer, "Server Finder", width / 2, - 20, 16777215); + drawCenteredTextWithShadow(matrixStack, textRenderer, "Server Finder", + width / 2, 20, 16777215); drawCenteredTextWithShadow(matrixStack, textRenderer, "This will search for servers with similar IPs", width / 2, 40, 10526880); @@ -239,8 +239,8 @@ public class ServerFinderScreen extends Screen width / 2 - 100, height / 4 + 60, 10526880); maxThreadsBox.render(matrixStack, mouseX, mouseY, partialTicks); - drawCenteredTextWithShadow(matrixStack, textRenderer, state.toString(), width / 2, - height / 4 + 73, 10526880); + drawCenteredTextWithShadow(matrixStack, textRenderer, state.toString(), + width / 2, height / 4 + 73, 10526880); drawTextWithShadow(matrixStack, textRenderer, "Checked: " + checked + " / 1792", width / 2 - 100, height / 4 + 84, diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 49b6010c..86211c65 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -31,7 +31,7 @@ "depends": { "fabricloader": ">=0.14.10", "fabric-api": ">=0.73.1", - "minecraft": "~1.19.4-alpha.23.6.a", + "minecraft": "~1.19.4-alpha.23.7.a", "java": ">=17" }, "suggests": { From 5b5a6ad7a0bef46fc346b0e7b3c21637833d6478 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 15 Feb 2023 22:36:35 +0100 Subject: [PATCH 018/126] =?UTF-8?q?Add=20sus=20sand=20to=20default=20X-Ray?= =?UTF-8?q?=20list=20=E0=B6=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/net/wurstclient/hacks/XRayHack.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/XRayHack.java b/src/main/java/net/wurstclient/hacks/XRayHack.java index 77ff426b..bc83c436 100644 --- a/src/main/java/net/wurstclient/hacks/XRayHack.java +++ b/src/main/java/net/wurstclient/hacks/XRayHack.java @@ -62,8 +62,8 @@ public final class XRayHack extends Hack implements UpdateListener, "minecraft:raw_gold_block", "minecraft:raw_iron_block", "minecraft:redstone_block", "minecraft:redstone_ore", "minecraft:repeating_command_block", "minecraft:spawner", - "minecraft:tnt", "minecraft:torch", "minecraft:trapped_chest", - "minecraft:water"); + "minecraft:suspicious_sand", "minecraft:tnt", "minecraft:torch", + "minecraft:trapped_chest", "minecraft:water"); private ArrayList oreNames; private final String warning; From bfc5cd8f4e38ab63677d3d056e9c97de7eda8e7a Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 22 Feb 2023 23:02:37 +0100 Subject: [PATCH 019/126] [Wurst-Bot] Update to 1.19.4-pre1 --- gradle.properties | 10 +++++----- src/main/java/net/wurstclient/WurstClient.java | 2 +- .../java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- .../java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle.properties b/gradle.properties index e701d459..ddf2f4e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=23w07a -yarn_mappings=23w07a+build.1 -loader_version=0.14.14 +minecraft_version=1.19.4-pre1 +yarn_mappings=1.19.4-pre1+build.1 +loader_version=0.14.15 #Fabric api -fabric_version=0.74.1+1.19.4 +fabric_version=0.74.2+1.19.4 # Mod Properties -mod_version = v7.31-MC23w07a +mod_version = v7.31-MC1.19.4-pre1 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 27f42824..8db6bd52 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.31"; - public static final String MC_VERSION = "23w07a"; + public static final String MC_VERSION = "1.19.4-pre1"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 6de5e642..adc735f9 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 6333b6ff..7377a739 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index c1097d02..7ed8ad48 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 57c5618f8e3d6ef02c760f33cf4ea507fdf8bd6b Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 23 Feb 2023 20:17:42 +0100 Subject: [PATCH 020/126] Update to 1.19.4-pre1 --- .../net/wurstclient/ai/FlyPathProcessor.java | 2 +- .../java/net/wurstclient/ai/PathFinder.java | 10 ++-- .../net/wurstclient/ai/WalkPathProcessor.java | 4 +- .../clickgui/components/BlockComponent.java | 18 ++---- .../clickgui/screens/EditBlockListScreen.java | 33 +++++------ .../clickgui/screens/EditBlockScreen.java | 16 ++--- .../clickgui/screens/EditItemListScreen.java | 31 ++++------ .../java/net/wurstclient/commands/DigCmd.java | 2 +- .../net/wurstclient/commands/ExcavateCmd.java | 2 +- .../net/wurstclient/commands/GetPosCmd.java | 2 +- .../net/wurstclient/commands/GoToCmd.java | 4 +- .../net/wurstclient/commands/PathCmd.java | 4 +- .../java/net/wurstclient/commands/TpCmd.java | 4 +- .../events/AirStrafingSpeedListener.java | 59 +++++++++++++++++++ .../net/wurstclient/hacks/AnchorAuraHack.java | 2 +- .../net/wurstclient/hacks/AntiAfkHack.java | 2 +- .../net/wurstclient/hacks/AutoFarmHack.java | 2 +- .../net/wurstclient/hacks/BaseFinderHack.java | 2 +- .../wurstclient/hacks/BonemealAuraHack.java | 2 +- .../wurstclient/hacks/BuildRandomHack.java | 2 +- .../net/wurstclient/hacks/CaveFinderHack.java | 2 +- .../net/wurstclient/hacks/ExcavatorHack.java | 2 +- .../net/wurstclient/hacks/FightBotHack.java | 2 +- .../net/wurstclient/hacks/FlightHack.java | 23 +++++--- .../net/wurstclient/hacks/FollowHack.java | 2 +- .../net/wurstclient/hacks/FreecamHack.java | 13 +++- .../java/net/wurstclient/hacks/GlideHack.java | 19 ++++-- .../wurstclient/hacks/InstantBunkerHack.java | 4 +- .../java/net/wurstclient/hacks/JesusHack.java | 2 +- .../net/wurstclient/hacks/KaboomHack.java | 2 +- .../wurstclient/hacks/MobSpawnEspHack.java | 2 +- .../net/wurstclient/hacks/NoClipHack.java | 16 +++-- .../java/net/wurstclient/hacks/NukerHack.java | 2 +- .../net/wurstclient/hacks/NukerLegitHack.java | 2 +- .../wurstclient/hacks/PlayerFinderHack.java | 5 +- .../net/wurstclient/hacks/ProtectHack.java | 2 +- .../wurstclient/hacks/ScaffoldWalkHack.java | 2 +- .../net/wurstclient/hacks/SearchHack.java | 2 +- .../net/wurstclient/hacks/SpeedNukerHack.java | 2 +- .../net/wurstclient/hacks/TillauraHack.java | 2 +- .../net/wurstclient/hacks/TreeBotHack.java | 4 +- .../net/wurstclient/hacks/TunnellerHack.java | 16 ++--- .../wurstclient/mixin/ButtonWidgetMixin.java | 43 -------------- .../mixin/ClientPlayerEntityMixin.java | 38 ++++-------- .../net/wurstclient/mixin/IngameHudMixin.java | 9 ++- .../wurstclient/mixin/StatsScreenMixin.java | 2 +- .../wurstclient/mixin/TitleScreenMixin.java | 2 +- .../navigator/NavigatorMainScreen.java | 2 +- src/main/resources/fabric.mod.json | 4 +- src/main/resources/wurst.accesswidener | 1 + src/main/resources/wurst.mixins.json | 1 - 51 files changed, 224 insertions(+), 209 deletions(-) create mode 100644 src/main/java/net/wurstclient/events/AirStrafingSpeedListener.java delete mode 100644 src/main/java/net/wurstclient/mixin/ButtonWidgetMixin.java diff --git a/src/main/java/net/wurstclient/ai/FlyPathProcessor.java b/src/main/java/net/wurstclient/ai/FlyPathProcessor.java index 260e00d4..d9aa108d 100644 --- a/src/main/java/net/wurstclient/ai/FlyPathProcessor.java +++ b/src/main/java/net/wurstclient/ai/FlyPathProcessor.java @@ -30,7 +30,7 @@ public class FlyPathProcessor extends PathProcessor public void process() { // get positions - BlockPos pos = new BlockPos(MC.player.getPos()); + BlockPos pos = BlockPos.method_49638(MC.player.getPos()); Vec3d posVec = MC.player.getPos(); BlockPos nextPos = path.get(index); int posIndex = path.indexOf(pos); diff --git a/src/main/java/net/wurstclient/ai/PathFinder.java b/src/main/java/net/wurstclient/ai/PathFinder.java index f8f76b61..104fbdc3 100644 --- a/src/main/java/net/wurstclient/ai/PathFinder.java +++ b/src/main/java/net/wurstclient/ai/PathFinder.java @@ -63,11 +63,13 @@ public class PathFinder public PathFinder(BlockPos goal) { if(WurstClient.MC.player.isOnGround()) - start = new PathPos(new BlockPos(WurstClient.MC.player.getX(), - WurstClient.MC.player.getY() + 0.5, - WurstClient.MC.player.getZ())); + start = + new PathPos(BlockPos.method_49637(WurstClient.MC.player.getX(), + WurstClient.MC.player.getY() + 0.5, + WurstClient.MC.player.getZ())); else - start = new PathPos(new BlockPos(WurstClient.MC.player.getPos())); + start = new PathPos( + BlockPos.method_49638(WurstClient.MC.player.getPos())); this.goal = goal; costMap.put(start, 0F); diff --git a/src/main/java/net/wurstclient/ai/WalkPathProcessor.java b/src/main/java/net/wurstclient/ai/WalkPathProcessor.java index 4f19076e..71b302de 100644 --- a/src/main/java/net/wurstclient/ai/WalkPathProcessor.java +++ b/src/main/java/net/wurstclient/ai/WalkPathProcessor.java @@ -32,11 +32,11 @@ public class WalkPathProcessor extends PathProcessor // get positions BlockPos pos; if(WurstClient.MC.player.isOnGround()) - pos = new BlockPos(WurstClient.MC.player.getX(), + pos = BlockPos.method_49637(WurstClient.MC.player.getX(), WurstClient.MC.player.getY() + 0.5, WurstClient.MC.player.getZ()); else - pos = new BlockPos(WurstClient.MC.player.getPos()); + pos = BlockPos.method_49638(WurstClient.MC.player.getPos()); PathPos nextPos = path.get(index); int posIndex = path.indexOf(pos); diff --git a/src/main/java/net/wurstclient/clickgui/components/BlockComponent.java b/src/main/java/net/wurstclient/clickgui/components/BlockComponent.java index 7e46a36e..fd63aab9 100644 --- a/src/main/java/net/wurstclient/clickgui/components/BlockComponent.java +++ b/src/main/java/net/wurstclient/clickgui/components/BlockComponent.java @@ -27,7 +27,6 @@ import net.minecraft.item.ItemStack; import net.wurstclient.WurstClient; import net.wurstclient.clickgui.ClickGui; import net.wurstclient.clickgui.Component; -import net.wurstclient.clickgui.Window; import net.wurstclient.clickgui.screens.EditBlockScreen; import net.wurstclient.settings.BlockSetting; @@ -144,25 +143,20 @@ public final class BlockComponent extends Component private void renderIcon(MatrixStack matrixStack, ItemStack stack, int x, int y, boolean large) { - MatrixStack modelViewStack = RenderSystem.getModelViewStack(); - modelViewStack.push(); + matrixStack.push(); - Window parent = getParent(); - modelViewStack.translate(parent.getX(), - parent.getY() + 13 + parent.getScrollOffset(), 0); - modelViewStack.translate(x, y, 0); + matrixStack.translate(x, y, 0); float scale = large ? 1.5F : 0.75F; - modelViewStack.scale(scale, scale, scale); + matrixStack.scale(scale, scale, scale); DiffuseLighting.enableGuiDepthLighting(); ItemStack grass = new ItemStack(Blocks.GRASS_BLOCK); ItemStack renderStack = !stack.isEmpty() ? stack : grass; - WurstClient.MC.getItemRenderer().renderInGuiWithOverrides(renderStack, - 0, 0); + WurstClient.MC.getItemRenderer().renderInGuiWithOverrides(matrixStack, + renderStack, 0, 0); DiffuseLighting.disableGuiDepthLighting(); - modelViewStack.pop(); - RenderSystem.applyModelViewMatrix(); + matrixStack.pop(); if(stack.isEmpty()) renderQuestionMark(matrixStack, x, y, large); diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java index 3ffbd5c4..67f85a82 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditBlockListScreen.java @@ -12,8 +12,6 @@ import java.util.List; import org.lwjgl.glfw.GLFW; import org.lwjgl.opengl.GL11; -import com.mojang.blaze3d.systems.RenderSystem; - import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; @@ -281,21 +279,19 @@ public final class EditBlockListScreen extends Screen { if(stack.isEmpty()) { - MatrixStack modelViewStack = RenderSystem.getModelViewStack(); - modelViewStack.push(); - modelViewStack.translate(x, y, 0); + matrixStack.push(); + matrixStack.translate(x, y, 0); if(large) - modelViewStack.scale(1.5F, 1.5F, 1.5F); + matrixStack.scale(1.5F, 1.5F, 1.5F); else - modelViewStack.scale(0.75F, 0.75F, 0.75F); + matrixStack.scale(0.75F, 0.75F, 0.75F); DiffuseLighting.enableGuiDepthLighting(); - mc.getItemRenderer().renderInGuiWithOverrides( + mc.getItemRenderer().renderInGuiWithOverrides(matrixStack, new ItemStack(Blocks.GRASS_BLOCK), 0, 0); DiffuseLighting.disableGuiDepthLighting(); - modelViewStack.pop(); - RenderSystem.applyModelViewMatrix(); + matrixStack.pop(); matrixStack.push(); matrixStack.translate(x, y, 0); @@ -308,22 +304,21 @@ public final class EditBlockListScreen extends Screen matrixStack.pop(); return "\u00a7ounknown block\u00a7r"; - } - MatrixStack modelViewStack = RenderSystem.getModelViewStack(); - modelViewStack.push(); - modelViewStack.translate(x, y, 0); + + matrixStack.push(); + matrixStack.translate(x, y, 0); if(large) - modelViewStack.scale(1.5F, 1.5F, 1.5F); + matrixStack.scale(1.5F, 1.5F, 1.5F); else - modelViewStack.scale(0.75F, 0.75F, 0.75F); + matrixStack.scale(0.75F, 0.75F, 0.75F); DiffuseLighting.enableGuiDepthLighting(); - mc.getItemRenderer().renderInGuiWithOverrides(stack, 0, 0); + mc.getItemRenderer().renderInGuiWithOverrides(matrixStack, stack, 0, + 0); DiffuseLighting.disableGuiDepthLighting(); - modelViewStack.pop(); - RenderSystem.applyModelViewMatrix(); + matrixStack.pop(); return stack.getName().getString(); } diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java index 3fdea8fe..67fc9ac6 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditBlockScreen.java @@ -10,8 +10,6 @@ package net.wurstclient.clickgui.screens; import org.lwjgl.glfw.GLFW; import org.lwjgl.opengl.GL11; -import com.mojang.blaze3d.systems.RenderSystem; - import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.client.font.TextRenderer; @@ -164,22 +162,20 @@ public final class EditBlockScreen extends Screen private void renderIcon(MatrixStack matrixStack, ItemStack stack, int x, int y, boolean large) { - MatrixStack modelViewStack = RenderSystem.getModelViewStack(); - modelViewStack.push(); + matrixStack.push(); - modelViewStack.translate(x, y, 0); + matrixStack.translate(x, y, 0); float scale = large ? 1.5F : 0.75F; - modelViewStack.scale(scale, scale, scale); + matrixStack.scale(scale, scale, scale); DiffuseLighting.enableGuiDepthLighting(); ItemStack grass = new ItemStack(Blocks.GRASS_BLOCK); ItemStack renderStack = !stack.isEmpty() ? stack : grass; - WurstClient.MC.getItemRenderer().renderInGuiWithOverrides(renderStack, - 0, 0); + WurstClient.MC.getItemRenderer().renderInGuiWithOverrides(matrixStack, + renderStack, 0, 0); DiffuseLighting.disableGuiDepthLighting(); - modelViewStack.pop(); - RenderSystem.applyModelViewMatrix(); + matrixStack.pop(); if(stack.isEmpty()) renderQuestionMark(matrixStack, x, y, large); diff --git a/src/main/java/net/wurstclient/clickgui/screens/EditItemListScreen.java b/src/main/java/net/wurstclient/clickgui/screens/EditItemListScreen.java index ff090bda..1f605ab5 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/EditItemListScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/EditItemListScreen.java @@ -12,8 +12,6 @@ import java.util.List; import org.lwjgl.glfw.GLFW; import org.lwjgl.opengl.GL11; -import com.mojang.blaze3d.systems.RenderSystem; - import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -287,21 +285,19 @@ public final class EditItemListScreen extends Screen { if(stack.isEmpty()) { - MatrixStack modelViewStack = RenderSystem.getModelViewStack(); - modelViewStack.push(); - modelViewStack.translate(x, y, 0); + matrixStack.push(); + matrixStack.translate(x, y, 0); if(large) - modelViewStack.scale(1.5F, 1.5F, 1.5F); + matrixStack.scale(1.5F, 1.5F, 1.5F); else - modelViewStack.scale(0.75F, 0.75F, 0.75F); + matrixStack.scale(0.75F, 0.75F, 0.75F); DiffuseLighting.enableGuiDepthLighting(); - mc.getItemRenderer().renderInGuiWithOverrides( + mc.getItemRenderer().renderInGuiWithOverrides(matrixStack, new ItemStack(Blocks.GRASS_BLOCK), 0, 0); DiffuseLighting.disableGuiDepthLighting(); - modelViewStack.pop(); - RenderSystem.applyModelViewMatrix(); + matrixStack.pop(); matrixStack.push(); matrixStack.translate(x, y, 0); @@ -316,21 +312,20 @@ public final class EditItemListScreen extends Screen return "\u00a7ounknown item\u00a7r"; } - MatrixStack modelViewStack = RenderSystem.getModelViewStack(); - modelViewStack.push(); - modelViewStack.translate(x, y, 0); + matrixStack.push(); + matrixStack.translate(x, y, 0); if(large) - modelViewStack.scale(1.5F, 1.5F, 1.5F); + matrixStack.scale(1.5F, 1.5F, 1.5F); else - modelViewStack.scale(0.75F, 0.75F, 0.75F); + matrixStack.scale(0.75F, 0.75F, 0.75F); DiffuseLighting.enableGuiDepthLighting(); - mc.getItemRenderer().renderInGuiWithOverrides(stack, 0, 0); + mc.getItemRenderer().renderInGuiWithOverrides(matrixStack, stack, 0, + 0); DiffuseLighting.disableGuiDepthLighting(); - modelViewStack.pop(); - RenderSystem.applyModelViewMatrix(); + matrixStack.pop(); return stack.getName().getString(); } diff --git a/src/main/java/net/wurstclient/commands/DigCmd.java b/src/main/java/net/wurstclient/commands/DigCmd.java index d416698c..cbf597ba 100644 --- a/src/main/java/net/wurstclient/commands/DigCmd.java +++ b/src/main/java/net/wurstclient/commands/DigCmd.java @@ -45,7 +45,7 @@ public final class DigCmd extends Command ClientPlayerEntity player = MC.player; Direction direction = player.getHorizontalFacing(); - BlockPos pos1 = new BlockPos( + BlockPos pos1 = BlockPos.method_49638( player.getPos().add(0, player.getEyeHeight(player.getPose()), 0)); if(height < 0) diff --git a/src/main/java/net/wurstclient/commands/ExcavateCmd.java b/src/main/java/net/wurstclient/commands/ExcavateCmd.java index 4a8eaee4..c86c1022 100644 --- a/src/main/java/net/wurstclient/commands/ExcavateCmd.java +++ b/src/main/java/net/wurstclient/commands/ExcavateCmd.java @@ -35,7 +35,7 @@ public final class ExcavateCmd extends Command private BlockPos argsToXyzPos(String... xyz) throws CmdSyntaxError { - BlockPos playerPos = new BlockPos(MC.player.getPos()); + BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); int[] player = {playerPos.getX(), playerPos.getY(), playerPos.getZ()}; int[] pos = new int[3]; diff --git a/src/main/java/net/wurstclient/commands/GetPosCmd.java b/src/main/java/net/wurstclient/commands/GetPosCmd.java index 5dc7159c..5413f06d 100644 --- a/src/main/java/net/wurstclient/commands/GetPosCmd.java +++ b/src/main/java/net/wurstclient/commands/GetPosCmd.java @@ -24,7 +24,7 @@ public final class GetPosCmd extends Command @Override public void call(String[] args) throws CmdException { - BlockPos pos = new BlockPos(MC.player.getPos()); + BlockPos pos = BlockPos.method_49638(MC.player.getPos()); String posString = pos.getX() + " " + pos.getY() + " " + pos.getZ(); switch(String.join(" ", args).toLowerCase()) diff --git a/src/main/java/net/wurstclient/commands/GoToCmd.java b/src/main/java/net/wurstclient/commands/GoToCmd.java index d038ae7b..10942a48 100644 --- a/src/main/java/net/wurstclient/commands/GoToCmd.java +++ b/src/main/java/net/wurstclient/commands/GoToCmd.java @@ -101,12 +101,12 @@ public final class GoToCmd extends Command if(entity == null) throw new CmdError("Entity \"" + name + "\" could not be found."); - return new BlockPos(entity.getPos()); + return BlockPos.method_49638(entity.getPos()); } private BlockPos argsToXyzPos(String... xyz) throws CmdSyntaxError { - BlockPos playerPos = new BlockPos(MC.player.getPos()); + BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); int[] player = {playerPos.getX(), playerPos.getY(), playerPos.getZ()}; int[] pos = new int[3]; diff --git a/src/main/java/net/wurstclient/commands/PathCmd.java b/src/main/java/net/wurstclient/commands/PathCmd.java index d53a8d16..3856b317 100644 --- a/src/main/java/net/wurstclient/commands/PathCmd.java +++ b/src/main/java/net/wurstclient/commands/PathCmd.java @@ -141,12 +141,12 @@ public final class PathCmd extends Command if(entity == null) throw new CmdError("Entity \"" + name + "\" could not be found."); - return new BlockPos(entity.getPos()); + return BlockPos.method_49638(entity.getPos()); } private BlockPos argsToXyzPos(String... xyz) throws CmdSyntaxError { - BlockPos playerPos = new BlockPos(MC.player.getPos()); + BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); int[] player = {playerPos.getX(), playerPos.getY(), playerPos.getZ()}; int[] pos = new int[3]; diff --git a/src/main/java/net/wurstclient/commands/TpCmd.java b/src/main/java/net/wurstclient/commands/TpCmd.java index 1270295f..40a70581 100644 --- a/src/main/java/net/wurstclient/commands/TpCmd.java +++ b/src/main/java/net/wurstclient/commands/TpCmd.java @@ -68,12 +68,12 @@ public final class TpCmd extends Command if(entity == null) throw new CmdError("Entity \"" + name + "\" could not be found."); - return new BlockPos(entity.getPos()); + return BlockPos.method_49638(entity.getPos()); } private BlockPos argsToXyzPos(String... xyz) throws CmdSyntaxError { - BlockPos playerPos = new BlockPos(MC.player.getPos()); + BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); int[] player = {playerPos.getX(), playerPos.getY(), playerPos.getZ()}; int[] pos = new int[3]; diff --git a/src/main/java/net/wurstclient/events/AirStrafingSpeedListener.java b/src/main/java/net/wurstclient/events/AirStrafingSpeedListener.java new file mode 100644 index 00000000..d1ff3dbc --- /dev/null +++ b/src/main/java/net/wurstclient/events/AirStrafingSpeedListener.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.events; + +import java.util.ArrayList; + +import net.wurstclient.event.Event; +import net.wurstclient.event.Listener; + +public interface AirStrafingSpeedListener extends Listener +{ + public void onGetAirStrafingSpeed(AirStrafingSpeedEvent event); + + public static class AirStrafingSpeedEvent + extends Event + { + private float airStrafingSpeed; + private final float defaultSpeed; + + public AirStrafingSpeedEvent(float airStrafingSpeed) + { + this.airStrafingSpeed = airStrafingSpeed; + defaultSpeed = airStrafingSpeed; + } + + public float getSpeed() + { + return airStrafingSpeed; + } + + public void setSpeed(float airStrafingSpeed) + { + this.airStrafingSpeed = airStrafingSpeed; + } + + public float getDefaultSpeed() + { + return defaultSpeed; + } + + @Override + public void fire(ArrayList listeners) + { + for(AirStrafingSpeedListener listener : listeners) + listener.onGetAirStrafingSpeed(this); + } + + @Override + public Class getListenerType() + { + return AirStrafingSpeedListener.class; + } + } +} diff --git a/src/main/java/net/wurstclient/hacks/AnchorAuraHack.java b/src/main/java/net/wurstclient/hacks/AnchorAuraHack.java index 966e4ced..e80aa5d8 100644 --- a/src/main/java/net/wurstclient/hacks/AnchorAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/AnchorAuraHack.java @@ -359,7 +359,7 @@ public final class AnchorAuraHack extends Hack implements UpdateListener int rangeI = (int)Math.ceil(rangeD); double rangeSq = Math.pow(rangeD + 0.5, 2); - BlockPos center = new BlockPos(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/AntiAfkHack.java b/src/main/java/net/wurstclient/hacks/AntiAfkHack.java index dc992f5a..e351e241 100644 --- a/src/main/java/net/wurstclient/hacks/AntiAfkHack.java +++ b/src/main/java/net/wurstclient/hacks/AntiAfkHack.java @@ -56,7 +56,7 @@ public final class AntiAfkHack extends Hack @Override public void onEnable() { - start = new BlockPos(MC.player.getPos()); + start = BlockPos.method_49638(MC.player.getPos()); nextBlock = null; pathFinder = new RandomPathFinder(start); creativeFlying = MC.player.getAbilities().flying; diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index aedeffeb..d17d2f80 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -117,7 +117,7 @@ public final class AutoFarmHack extends Hack { currentBlock = null; Vec3d eyesVec = RotationUtils.getEyesPos().subtract(0.5, 0.5, 0.5); - BlockPos eyesBlock = new BlockPos(RotationUtils.getEyesPos()); + BlockPos eyesBlock = BlockPos.method_49638(RotationUtils.getEyesPos()); double rangeSq = Math.pow(range.getValue(), 2); int blockRange = (int)Math.ceil(range.getValue()); diff --git a/src/main/java/net/wurstclient/hacks/BaseFinderHack.java b/src/main/java/net/wurstclient/hacks/BaseFinderHack.java index b57d7dd9..652fc327 100644 --- a/src/main/java/net/wurstclient/hacks/BaseFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/BaseFinderHack.java @@ -239,7 +239,7 @@ public final class BaseFinderHack extends Hack int endY = startY - stepSize; BlockPos playerPos = - new BlockPos(MC.player.getX(), 0, MC.player.getZ()); + BlockPos.method_49637(MC.player.getX(), 0, MC.player.getZ()); // search matching blocks loop: for(int y = startY; y > endY; y--) diff --git a/src/main/java/net/wurstclient/hacks/BonemealAuraHack.java b/src/main/java/net/wurstclient/hacks/BonemealAuraHack.java index 8584d877..eb0e536a 100644 --- a/src/main/java/net/wurstclient/hacks/BonemealAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/BonemealAuraHack.java @@ -185,7 +185,7 @@ public final class BonemealAuraHack extends Hack implements UpdateListener double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = new BlockPos(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/BuildRandomHack.java b/src/main/java/net/wurstclient/hacks/BuildRandomHack.java index ebf38f74..8c8b9b16 100644 --- a/src/main/java/net/wurstclient/hacks/BuildRandomHack.java +++ b/src/main/java/net/wurstclient/hacks/BuildRandomHack.java @@ -109,7 +109,7 @@ public final class BuildRandomHack extends Hack do { // generate random position - pos = new BlockPos(MC.player.getPos()).add( + pos = BlockPos.method_49638(MC.player.getPos()).add( random.nextInt(bound) - range, random.nextInt(bound) - range, random.nextInt(bound) - range); attempts++; diff --git a/src/main/java/net/wurstclient/hacks/CaveFinderHack.java b/src/main/java/net/wurstclient/hacks/CaveFinderHack.java index 89ecb6fe..dbcc1629 100644 --- a/src/main/java/net/wurstclient/hacks/CaveFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/CaveFinderHack.java @@ -182,7 +182,7 @@ public final class CaveFinderHack extends Hack public void onUpdate() { Block currentBlock = BlockUtils.getBlockFromName("minecraft:cave_air"); - BlockPos eyesPos = new BlockPos(RotationUtils.getEyesPos()); + BlockPos eyesPos = BlockPos.method_49638(RotationUtils.getEyesPos()); ChunkPos center = getPlayerChunkPos(eyesPos); int range = area.getSelected().chunkRange; diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index 54ab75fb..08d67857 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -565,7 +565,7 @@ public final class ExcavatorHack extends Hack double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = new BlockPos(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/FightBotHack.java b/src/main/java/net/wurstclient/hacks/FightBotHack.java index 59c6fc4e..e91ca013 100644 --- a/src/main/java/net/wurstclient/hacks/FightBotHack.java +++ b/src/main/java/net/wurstclient/hacks/FightBotHack.java @@ -243,7 +243,7 @@ public final class FightBotHack extends Hack public EntityPathFinder(Entity entity) { - super(new BlockPos(entity.getPos())); + super(BlockPos.method_49638(entity.getPos())); this.entity = entity; setThinkTime(1); } diff --git a/src/main/java/net/wurstclient/hacks/FlightHack.java b/src/main/java/net/wurstclient/hacks/FlightHack.java index 44a02a28..9980f98b 100644 --- a/src/main/java/net/wurstclient/hacks/FlightHack.java +++ b/src/main/java/net/wurstclient/hacks/FlightHack.java @@ -11,6 +11,7 @@ import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.util.math.Vec3d; import net.wurstclient.Category; import net.wurstclient.SearchTags; +import net.wurstclient.events.AirStrafingSpeedListener; import net.wurstclient.events.IsPlayerInWaterListener; import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; @@ -20,7 +21,7 @@ import net.wurstclient.settings.SliderSetting.ValueDisplay; @SearchTags({"FlyHack", "fly hack", "flying"}) public final class FlightHack extends Hack - implements UpdateListener, IsPlayerInWaterListener + implements UpdateListener, IsPlayerInWaterListener, AirStrafingSpeedListener { public final SliderSetting horizontalSpeed = new SliderSetting( "Horizontal Speed", 1, 0.05, 10, 0.05, ValueDisplay.DECIMAL); @@ -75,6 +76,7 @@ public final class FlightHack extends Hack EVENTS.add(UpdateListener.class, this); EVENTS.add(IsPlayerInWaterListener.class, this); + EVENTS.add(AirStrafingSpeedListener.class, this); } @Override @@ -82,6 +84,7 @@ public final class FlightHack extends Hack { EVENTS.remove(UpdateListener.class, this); EVENTS.remove(IsPlayerInWaterListener.class, this); + EVENTS.remove(AirStrafingSpeedListener.class, this); } @Override @@ -90,7 +93,6 @@ public final class FlightHack extends Hack ClientPlayerEntity player = MC.player; player.getAbilities().flying = false; - player.airStrafingSpeed = horizontalSpeed.getValueF(); player.setVelocity(0, 0, 0); Vec3d velocity = player.getVelocity(); @@ -100,19 +102,24 @@ public final class FlightHack extends Hack velocity.z); if(MC.options.sneakKey.isPressed()) - { - if(slowSneaking.isChecked()) - player.airStrafingSpeed = - Math.min(horizontalSpeed.getValueF(), 0.85F); - player.setVelocity(velocity.x, -verticalSpeed.getValue(), velocity.z); - } if(antiKick.isChecked()) doAntiKick(velocity); } + @Override + public void onGetAirStrafingSpeed(AirStrafingSpeedEvent event) + { + float speed = horizontalSpeed.getValueF(); + + if(MC.options.sneakKey.isPressed() && slowSneaking.isChecked()) + speed = Math.min(speed, 0.85F); + + event.setSpeed(speed); + } + private void doAntiKick(Vec3d velocity) { if(tickCounter > antiKickInterval.getValueI() + 1) diff --git a/src/main/java/net/wurstclient/hacks/FollowHack.java b/src/main/java/net/wurstclient/hacks/FollowHack.java index 785dc4c9..0e88c44b 100644 --- a/src/main/java/net/wurstclient/hacks/FollowHack.java +++ b/src/main/java/net/wurstclient/hacks/FollowHack.java @@ -258,7 +258,7 @@ public final class FollowHack extends Hack { public EntityPathFinder() { - super(new BlockPos(entity.getPos())); + super(BlockPos.method_49638(entity.getPos())); setThinkTime(1); } diff --git a/src/main/java/net/wurstclient/hacks/FreecamHack.java b/src/main/java/net/wurstclient/hacks/FreecamHack.java index fa7fa1c4..624e177d 100644 --- a/src/main/java/net/wurstclient/hacks/FreecamHack.java +++ b/src/main/java/net/wurstclient/hacks/FreecamHack.java @@ -42,8 +42,8 @@ import net.wurstclient.util.RotationUtils; @DontSaveState @SearchTags({"free camera", "spectator"}) -public final class FreecamHack extends Hack - implements UpdateListener, PacketOutputListener, IsPlayerInWaterListener, +public final class FreecamHack extends Hack implements UpdateListener, + PacketOutputListener, IsPlayerInWaterListener, AirStrafingSpeedListener, IsPlayerInLavaListener, CameraTransformViewBobbingListener, IsNormalCubeListener, SetOpaqueCubeListener, RenderListener { @@ -74,6 +74,7 @@ public final class FreecamHack extends Hack EVENTS.add(PacketOutputListener.class, this); EVENTS.add(IsPlayerInWaterListener.class, this); EVENTS.add(IsPlayerInLavaListener.class, this); + EVENTS.add(AirStrafingSpeedListener.class, this); EVENTS.add(CameraTransformViewBobbingListener.class, this); EVENTS.add(IsNormalCubeListener.class, this); EVENTS.add(SetOpaqueCubeListener.class, this); @@ -96,6 +97,7 @@ public final class FreecamHack extends Hack EVENTS.remove(PacketOutputListener.class, this); EVENTS.remove(IsPlayerInWaterListener.class, this); EVENTS.remove(IsPlayerInLavaListener.class, this); + EVENTS.remove(AirStrafingSpeedListener.class, this); EVENTS.remove(CameraTransformViewBobbingListener.class, this); EVENTS.remove(IsNormalCubeListener.class, this); EVENTS.remove(SetOpaqueCubeListener.class, this); @@ -118,7 +120,6 @@ public final class FreecamHack extends Hack player.getAbilities().flying = false; player.setOnGround(false); - player.airStrafingSpeed = speed.getValueF(); Vec3d velocity = player.getVelocity(); if(MC.options.jumpKey.isPressed()) @@ -128,6 +129,12 @@ public final class FreecamHack extends Hack player.setVelocity(velocity.subtract(0, speed.getValue(), 0)); } + @Override + public void onGetAirStrafingSpeed(AirStrafingSpeedEvent event) + { + event.setSpeed(speed.getValueF()); + } + @Override public void onSentPacket(PacketOutputEvent event) { diff --git a/src/main/java/net/wurstclient/hacks/GlideHack.java b/src/main/java/net/wurstclient/hacks/GlideHack.java index 3a4daee5..9e66336d 100644 --- a/src/main/java/net/wurstclient/hacks/GlideHack.java +++ b/src/main/java/net/wurstclient/hacks/GlideHack.java @@ -17,13 +17,15 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import net.wurstclient.Category; +import net.wurstclient.events.AirStrafingSpeedListener; import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; import net.wurstclient.util.BlockUtils; -public final class GlideHack extends Hack implements UpdateListener +public final class GlideHack extends Hack + implements UpdateListener, AirStrafingSpeedListener { private final SliderSetting fallSpeed = new SliderSetting("Fall speed", 0.125, 0.005, 0.25, 0.005, ValueDisplay.DECIMAL); @@ -50,12 +52,14 @@ public final class GlideHack extends Hack implements UpdateListener public void onEnable() { EVENTS.add(UpdateListener.class, this); + EVENTS.add(AirStrafingSpeedListener.class, this); } @Override public void onDisable() { EVENTS.remove(UpdateListener.class, this); + EVENTS.remove(AirStrafingSpeedListener.class, this); } @Override @@ -75,10 +79,8 @@ public final class GlideHack extends Hack implements UpdateListener if(!MC.world.isSpaceEmpty(box)) return; - BlockPos min = - new BlockPos(new Vec3d(box.minX, box.minY, box.minZ)); - BlockPos max = - new BlockPos(new Vec3d(box.maxX, box.maxY, box.maxZ)); + BlockPos min = BlockPos.method_49637(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.method_49637(box.maxX, box.maxY, box.maxZ); Stream stream = StreamSupport .stream(BlockUtils.getAllInBox(min, max).spliterator(), true); @@ -89,6 +91,11 @@ public final class GlideHack extends Hack implements UpdateListener } player.setVelocity(v.x, Math.max(v.y, -fallSpeed.getValue()), v.z); - player.airStrafingSpeed *= moveSpeed.getValueF(); + } + + @Override + public void onGetAirStrafingSpeed(AirStrafingSpeedEvent event) + { + event.setSpeed(event.getDefaultSpeed() * moveSpeed.getValueF()); } } diff --git a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java index da7f22cf..91687d00 100644 --- a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java +++ b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java @@ -85,7 +85,7 @@ public final class InstantBunkerHack extends Hack ChatUtils.warning("Not enough blocks. Bunker may be incomplete."); // get start pos and facings - BlockPos startPos = new BlockPos(MC.player.getPos()); + BlockPos startPos = BlockPos.method_49638(MC.player.getPos()); Direction facing = MC.player.getHorizontalFacing(); Direction facing2 = facing.rotateYCounterclockwise(); @@ -150,7 +150,7 @@ public final class InstantBunkerHack extends Hack // { // if(!BlockUtils.placeBlockLegit(pos)) // { - // BlockPos playerPos = new BlockPos(MC.player); + // BlockPos playerPos = BlockPos.method_49638(MC.player); // if(MC.player.onGround // && Math.abs(pos.getX() - playerPos.getX()) == 2 // && pos.getY() - playerPos.getY() == 2 diff --git a/src/main/java/net/wurstclient/hacks/JesusHack.java b/src/main/java/net/wurstclient/hacks/JesusHack.java index 5ff25b76..632f6676 100644 --- a/src/main/java/net/wurstclient/hacks/JesusHack.java +++ b/src/main/java/net/wurstclient/hacks/JesusHack.java @@ -165,7 +165,7 @@ public final class JesusHack extends Hack for(Box bb : blockCollisions) { - BlockPos pos = new BlockPos(bb.getCenter()); + BlockPos pos = BlockPos.method_49638(bb.getCenter()); Material material = BlockUtils.getState(pos).getMaterial(); if(material == Material.WATER || material == Material.LAVA) diff --git a/src/main/java/net/wurstclient/hacks/KaboomHack.java b/src/main/java/net/wurstclient/hacks/KaboomHack.java index 7cb560c0..2a744db8 100644 --- a/src/main/java/net/wurstclient/hacks/KaboomHack.java +++ b/src/main/java/net/wurstclient/hacks/KaboomHack.java @@ -77,7 +77,7 @@ public final class KaboomHack extends Hack implements UpdateListener double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = new BlockPos(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java b/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java index 91a820ab..362226bd 100644 --- a/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java +++ b/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java @@ -110,7 +110,7 @@ public final class MobSpawnEspHack extends Hack { ClientWorld world = MC.world; - BlockPos eyesBlock = new BlockPos(RotationUtils.getEyesPos()); + BlockPos eyesBlock = BlockPos.method_49638(RotationUtils.getEyesPos()); int chunkX = eyesBlock.getX() >> 4; int chunkZ = eyesBlock.getZ() >> 4; int chunkRange = drawDistance.getSelected().chunkRange; diff --git a/src/main/java/net/wurstclient/hacks/NoClipHack.java b/src/main/java/net/wurstclient/hacks/NoClipHack.java index 96fa84ab..63b03b8b 100644 --- a/src/main/java/net/wurstclient/hacks/NoClipHack.java +++ b/src/main/java/net/wurstclient/hacks/NoClipHack.java @@ -10,6 +10,7 @@ package net.wurstclient.hacks; import net.minecraft.client.network.ClientPlayerEntity; import net.wurstclient.Category; import net.wurstclient.SearchTags; +import net.wurstclient.events.AirStrafingSpeedListener; import net.wurstclient.events.IsNormalCubeListener; import net.wurstclient.events.PlayerMoveListener; import net.wurstclient.events.SetOpaqueCubeListener; @@ -18,8 +19,9 @@ import net.wurstclient.hack.Hack; import net.wurstclient.mixinterface.IClientPlayerEntity; @SearchTags({"no clip"}) -public final class NoClipHack extends Hack implements UpdateListener, - PlayerMoveListener, IsNormalCubeListener, SetOpaqueCubeListener +public final class NoClipHack extends Hack + implements UpdateListener, PlayerMoveListener, IsNormalCubeListener, + SetOpaqueCubeListener, AirStrafingSpeedListener { public NoClipHack() { @@ -34,6 +36,7 @@ public final class NoClipHack extends Hack implements UpdateListener, EVENTS.add(PlayerMoveListener.class, this); EVENTS.add(IsNormalCubeListener.class, this); EVENTS.add(SetOpaqueCubeListener.class, this); + EVENTS.add(AirStrafingSpeedListener.class, this); } @Override @@ -43,6 +46,7 @@ public final class NoClipHack extends Hack implements UpdateListener, EVENTS.remove(PlayerMoveListener.class, this); EVENTS.remove(IsNormalCubeListener.class, this); EVENTS.remove(SetOpaqueCubeListener.class, this); + EVENTS.remove(AirStrafingSpeedListener.class, this); MC.player.noClip = false; } @@ -60,14 +64,18 @@ public final class NoClipHack extends Hack implements UpdateListener, player.setVelocity(0, 0, 0); float speed = 0.2F; - player.airStrafingSpeed = speed; - if(MC.options.jumpKey.isPressed()) player.addVelocity(0, speed, 0); if(MC.options.sneakKey.isPressed()) player.addVelocity(0, -speed, 0); } + @Override + public void onGetAirStrafingSpeed(AirStrafingSpeedEvent event) + { + event.setSpeed(0.2F); + } + @Override public void onPlayerMove(IClientPlayerEntity player) { diff --git a/src/main/java/net/wurstclient/hacks/NukerHack.java b/src/main/java/net/wurstclient/hacks/NukerHack.java index 6bfad2e3..5072c4f8 100644 --- a/src/main/java/net/wurstclient/hacks/NukerHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerHack.java @@ -146,7 +146,7 @@ public final class NukerHack extends Hack currentBlock = null; Vec3d eyesPos = RotationUtils.getEyesPos().subtract(0.5, 0.5, 0.5); - BlockPos eyesBlock = new BlockPos(RotationUtils.getEyesPos()); + BlockPos eyesBlock = BlockPos.method_49638(RotationUtils.getEyesPos()); double rangeSq = Math.pow(range.getValue(), 2); int blockRange = (int)Math.ceil(range.getValue()); diff --git a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java index cdc24eda..a6ec8eb6 100644 --- a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java @@ -188,7 +188,7 @@ public final class NukerLegitHack extends Hack double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = new BlockPos(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java index 57bea9b6..bf16e106 100644 --- a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java @@ -158,13 +158,14 @@ public final class PlayerFinderHack extends Hack // // }else if(packet instanceof PlaySoundS2CPacket sound) - newPos = new BlockPos(sound.getX(), sound.getY(), sound.getZ()); + newPos = + BlockPos.method_49637(sound.getX(), sound.getY(), sound.getZ()); if(newPos == null) return; // check distance to player - BlockPos playerPos = new BlockPos(MC.player.getPos()); + BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); if(Math.abs(playerPos.getX() - newPos.getX()) > 256 || Math.abs(playerPos.getZ() - newPos.getZ()) > 256) pos = newPos; diff --git a/src/main/java/net/wurstclient/hacks/ProtectHack.java b/src/main/java/net/wurstclient/hacks/ProtectHack.java index ceccaa18..8b5a85a4 100644 --- a/src/main/java/net/wurstclient/hacks/ProtectHack.java +++ b/src/main/java/net/wurstclient/hacks/ProtectHack.java @@ -305,7 +305,7 @@ public final class ProtectHack extends Hack public EntityPathFinder(Entity entity, double distance) { - super(new BlockPos(entity.getPos())); + super(BlockPos.method_49638(entity.getPos())); this.entity = entity; distanceSq = distance * distance; setThinkTime(1); diff --git a/src/main/java/net/wurstclient/hacks/ScaffoldWalkHack.java b/src/main/java/net/wurstclient/hacks/ScaffoldWalkHack.java index 3c7edef6..c1310dd4 100644 --- a/src/main/java/net/wurstclient/hacks/ScaffoldWalkHack.java +++ b/src/main/java/net/wurstclient/hacks/ScaffoldWalkHack.java @@ -53,7 +53,7 @@ public final class ScaffoldWalkHack extends Hack implements UpdateListener @Override public void onUpdate() { - BlockPos belowPlayer = new BlockPos(MC.player.getPos()).down(); + BlockPos belowPlayer = BlockPos.method_49638(MC.player.getPos()).down(); // check if block is already placed if(!BlockUtils.getState(belowPlayer).getMaterial().isReplaceable()) diff --git a/src/main/java/net/wurstclient/hacks/SearchHack.java b/src/main/java/net/wurstclient/hacks/SearchHack.java index 4fdb5a18..aeff187f 100644 --- a/src/main/java/net/wurstclient/hacks/SearchHack.java +++ b/src/main/java/net/wurstclient/hacks/SearchHack.java @@ -181,7 +181,7 @@ public final class SearchHack extends Hack public void onUpdate() { Block currentBlock = block.getBlock(); - BlockPos eyesPos = new BlockPos(RotationUtils.getEyesPos()); + BlockPos eyesPos = BlockPos.method_49638(RotationUtils.getEyesPos()); ChunkPos center = MC.player.getChunkPos(); int dimensionId = MC.world.getRegistryKey().toString().hashCode(); diff --git a/src/main/java/net/wurstclient/hacks/SpeedNukerHack.java b/src/main/java/net/wurstclient/hacks/SpeedNukerHack.java index 5b5749aa..37bb7d15 100644 --- a/src/main/java/net/wurstclient/hacks/SpeedNukerHack.java +++ b/src/main/java/net/wurstclient/hacks/SpeedNukerHack.java @@ -139,7 +139,7 @@ public final class SpeedNukerHack extends Hack double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = new BlockPos(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/TillauraHack.java b/src/main/java/net/wurstclient/hacks/TillauraHack.java index a9edb149..f0f52c0c 100644 --- a/src/main/java/net/wurstclient/hacks/TillauraHack.java +++ b/src/main/java/net/wurstclient/hacks/TillauraHack.java @@ -122,7 +122,7 @@ public final class TillauraHack extends Hack implements UpdateListener double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = new BlockPos(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/TreeBotHack.java b/src/main/java/net/wurstclient/hacks/TreeBotHack.java index fbcae981..a86565bf 100644 --- a/src/main/java/net/wurstclient/hacks/TreeBotHack.java +++ b/src/main/java/net/wurstclient/hacks/TreeBotHack.java @@ -459,7 +459,7 @@ public final class TreeBotHack extends Hack { public TreeFinder() { - super(new BlockPos(WurstClient.MC.player.getPos())); + super(BlockPos.method_49638(WurstClient.MC.player.getPos())); } public TreeFinder(TreeBotPathFinder pathFinder) @@ -538,7 +538,7 @@ public final class TreeBotHack extends Hack { public AngleFinder() { - super(new BlockPos(WurstClient.MC.player.getPos())); + super(BlockPos.method_49638(WurstClient.MC.player.getPos())); setThinkSpeed(512); setThinkTime(1); } diff --git a/src/main/java/net/wurstclient/hacks/TunnellerHack.java b/src/main/java/net/wurstclient/hacks/TunnellerHack.java index 06456e19..2b0bc9e2 100644 --- a/src/main/java/net/wurstclient/hacks/TunnellerHack.java +++ b/src/main/java/net/wurstclient/hacks/TunnellerHack.java @@ -130,7 +130,7 @@ public final class TunnellerHack extends Hack EVENTS.add(RenderListener.class, this); ClientPlayerEntity player = MC.player; - start = new BlockPos(player.getPos()); + start = BlockPos.method_49638(player.getPos()); direction = player.getHorizontalFacing(); length = 0; lastTorch = null; @@ -364,7 +364,7 @@ public final class TunnellerHack extends Hack @Override public boolean canRun() { - BlockPos player = new BlockPos(MC.player.getPos()); + BlockPos player = BlockPos.method_49638(MC.player.getPos()); BlockPos base = start.offset(direction, length); int distance = getDistance(player, base); @@ -379,7 +379,7 @@ public final class TunnellerHack extends Hack @Override public void run() { - BlockPos player = new BlockPos(MC.player.getPos()); + BlockPos player = BlockPos.method_49638(MC.player.getPos()); BlockPos base = start.offset(direction, length); BlockPos from = offset(player, size.getSelected().from); BlockPos to = offset(base, size.getSelected().to); @@ -468,7 +468,7 @@ public final class TunnellerHack extends Hack @Override public boolean canRun() { - BlockPos player = new BlockPos(MC.player.getPos()); + BlockPos player = BlockPos.method_49638(MC.player.getPos()); BlockPos base = start.offset(direction, length); return getDistance(player, base) > 1; @@ -492,7 +492,7 @@ public final class TunnellerHack extends Hack @Override public boolean canRun() { - BlockPos player = new BlockPos(MC.player.getPos()); + BlockPos player = BlockPos.method_49638(MC.player.getPos()); BlockPos from = offsetFloor(player, size.getSelected().from); BlockPos to = offsetFloor(player, size.getSelected().to); @@ -678,7 +678,7 @@ public final class TunnellerHack extends Hack @Override public void run() { - BlockPos player = new BlockPos(MC.player.getPos()); + BlockPos player = BlockPos.method_49638(MC.player.getPos()); KeyBinding forward = MC.options.forwardKey; Vec3d diffVec = Vec3d.of(player.subtract(start)); @@ -733,7 +733,7 @@ public final class TunnellerHack extends Hack if(!torches.isChecked()) { lastTorch = null; - nextTorch = new BlockPos(MC.player.getPos()); + nextTorch = BlockPos.method_49638(MC.player.getPos()); if(vertexBuffers[4] != null) vertexBuffers[4].close(); return false; @@ -760,7 +760,7 @@ public final class TunnellerHack extends Hack RenderUtils.drawArrow(torchVec, torchVec.add(0, 0.5, 0), vertexBuffers[4]); - BlockPos player = new BlockPos(MC.player.getPos()); + BlockPos player = BlockPos.method_49638(MC.player.getPos()); if(getDistance(player, nextTorch) > 4) return false; diff --git a/src/main/java/net/wurstclient/mixin/ButtonWidgetMixin.java b/src/main/java/net/wurstclient/mixin/ButtonWidgetMixin.java deleted file mode 100644 index aa3499ce..00000000 --- a/src/main/java/net/wurstclient/mixin/ButtonWidgetMixin.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2014-2022 Wurst-Imperium and contributors. - * - * 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 net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.PressableWidget; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.Text; -import net.wurstclient.WurstClient; - -@Mixin(ButtonWidget.class) -public abstract class ButtonWidgetMixin extends PressableWidget -{ - public ButtonWidgetMixin(WurstClient wurst, int i, int j, int k, int l, - Text text) - { - super(i, j, k, l, text); - } - - @Override - protected void renderBackground(MatrixStack matrixStack, - MinecraftClient client, int mouseX, int mouseY) - { - int i = getYImage(); - int x = getX(); - int y = getY(); - drawTexture(matrixStack, x, y, 0, i, width / 2, height / 2); - drawTexture(matrixStack, x + width / 2, y, 200 - width / 2, i, - width / 2, height / 2); - drawTexture(matrixStack, x, y + height / 2, 0, i + 20 - height / 2, - width / 2, height / 2); - drawTexture(matrixStack, x + width / 2, y + height / 2, 200 - width / 2, - i + 20 - height / 2, width / 2, height / 2); - } -} diff --git a/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java b/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java index a0908ead..9c03e1bf 100644 --- a/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java @@ -31,6 +31,7 @@ import net.minecraft.entity.effect.StatusEffects; import net.minecraft.util.math.Vec3d; import net.wurstclient.WurstClient; import net.wurstclient.event.EventManager; +import net.wurstclient.events.AirStrafingSpeedListener.AirStrafingSpeedEvent; import net.wurstclient.events.IsPlayerInLavaListener.IsPlayerInLavaEvent; import net.wurstclient.events.IsPlayerInWaterListener.IsPlayerInWaterEvent; import net.wurstclient.events.KnockbackListener.KnockbackEvent; @@ -138,31 +139,18 @@ public class ClientPlayerEntityMixin extends AbstractClientPlayerEntity tempCurrentScreen = null; } - // FIXME - // @Inject(at = @At("HEAD"), - // method = - // "signChatMessage(Lnet/minecraft/network/message/MessageMetadata;Lnet/minecraft/network/message/DecoratedContents;Lnet/minecraft/network/message/LastSeenMessageList;)Lnet/minecraft/network/message/MessageSignatureData;", - // cancellable = true) - // private void onSignChatMessage(MessageMetadata metadata, - // DecoratedContents content, LastSeenMessageList lastSeenMessages, - // CallbackInfoReturnable cir) - // { - // if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) - // cir.setReturnValue(MessageSignatureData.EMPTY); - // } - // - // @Inject(at = @At("HEAD"), - // method = - // "signArguments(Lnet/minecraft/network/message/MessageMetadata;Lcom/mojang/brigadier/ParseResults;Lnet/minecraft/text/Text;Lnet/minecraft/network/message/LastSeenMessageList;)Lnet/minecraft/network/message/ArgumentSignatureDataMap;", - // cancellable = true) - // private void onSignArguments(MessageMetadata metadata, - // ParseResults parseResults, @Nullable Text preview, - // LastSeenMessageList lastSeenMessages, - // CallbackInfoReturnable cir) - // { - // if(WurstClient.INSTANCE.getOtfs().noChatReportsOtf.isActive()) - // cir.setReturnValue(ArgumentSignatureDataMap.EMPTY); - // } + /** + * Getter method for what used to be airStrafingSpeed. + * Overridden to allow for the speed to be modified by hacks. + */ + @Override + protected float method_49484() + { + AirStrafingSpeedEvent event = + new AirStrafingSpeedEvent(super.method_49484()); + EventManager.fire(event); + return event.getSpeed(); + } @Override public void setVelocityClient(double x, double y, double z) diff --git a/src/main/java/net/wurstclient/mixin/IngameHudMixin.java b/src/main/java/net/wurstclient/mixin/IngameHudMixin.java index 8c825889..0ff10cae 100644 --- a/src/main/java/net/wurstclient/mixin/IngameHudMixin.java +++ b/src/main/java/net/wurstclient/mixin/IngameHudMixin.java @@ -27,8 +27,8 @@ public class IngameHudMixin extends DrawableHelper at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/RenderSystem;enableBlend()V", remap = false, - ordinal = 4), - method = {"render(Lnet/minecraft/client/util/math/MatrixStack;F)V"}) + ordinal = 3), + method = "render(Lnet/minecraft/client/util/math/MatrixStack;F)V") private void onRender(MatrixStack matrixStack, float partialTicks, CallbackInfo ci) { @@ -39,9 +39,8 @@ public class IngameHudMixin extends DrawableHelper EventManager.fire(event); } - @Inject(at = {@At("HEAD")}, - method = { - "renderOverlay(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/util/Identifier;F)V"}, + @Inject(at = @At("HEAD"), + method = "renderOverlay(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/util/Identifier;F)V", cancellable = true) private void onRenderOverlay(MatrixStack matrixStack, Identifier identifier, float f, CallbackInfo ci) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index adc735f9..6de5e642 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 7377a739..6333b6ff 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 7ed8ad48..c1097d02 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 86211c65..bf639a0f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,8 +30,8 @@ "depends": { "fabricloader": ">=0.14.10", - "fabric-api": ">=0.73.1", - "minecraft": "~1.19.4-alpha.23.7.a", + "fabric-api": ">=0.74.2", + "minecraft": "~1.19.4-beta.1", "java": ">=17" }, "suggests": { diff --git a/src/main/resources/wurst.accesswidener b/src/main/resources/wurst.accesswidener index 7bc06ec6..5b503106 100644 --- a/src/main/resources/wurst.accesswidener +++ b/src/main/resources/wurst.accesswidener @@ -4,3 +4,4 @@ accessible field net/minecraft/client/toast/ToastManager toastQueue Ljava/util/D accessible field net/minecraft/client/network/ClientPlayNetworkHandler session Lnet/minecraft/network/encryption/ClientPlayerSession; accessible field net/minecraft/client/network/ClientPlayNetworkHandler messagePacker Lnet/minecraft/network/message/MessageChain$Packer; accessible field net/minecraft/client/gui/screen/ingame/CreativeInventoryScreen selectedTab Lnet/minecraft/item/ItemGroup; +accessible field net/minecraft/entity/Entity stepHeight F \ No newline at end of file diff --git a/src/main/resources/wurst.mixins.json b/src/main/resources/wurst.mixins.json index 1ba3768b..e46d11e3 100644 --- a/src/main/resources/wurst.mixins.json +++ b/src/main/resources/wurst.mixins.json @@ -13,7 +13,6 @@ "BlockEntityRenderDispatcherMixin", "BlockMixin", "BlockModelRendererMixin", - "ButtonWidgetMixin", "CactusBlockMixin", "CameraMixin", "ChatHudMixin", From 867559ad83e048d7a18a098a6b2dd10e16816845 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 27 Feb 2023 20:31:42 +0100 Subject: [PATCH 021/126] [Wurst-Bot] Update to 1.19.4-pre2 --- gradle.properties | 10 +++++----- src/main/java/net/wurstclient/WurstClient.java | 2 +- .../net/wurstclient/ai/FlyPathProcessor.java | 2 +- src/main/java/net/wurstclient/ai/PathFinder.java | 4 ++-- .../net/wurstclient/ai/WalkPathProcessor.java | 4 ++-- .../altmanager/screens/AltManagerScreen.java | 2 +- .../clickgui/screens/SelectFileScreen.java | 2 +- .../java/net/wurstclient/commands/DigCmd.java | 2 +- .../net/wurstclient/commands/ExcavateCmd.java | 2 +- .../java/net/wurstclient/commands/GetPosCmd.java | 2 +- .../java/net/wurstclient/commands/GoToCmd.java | 4 ++-- .../java/net/wurstclient/commands/PathCmd.java | 4 ++-- .../java/net/wurstclient/commands/TpCmd.java | 4 ++-- .../net/wurstclient/hacks/AnchorAuraHack.java | 2 +- .../java/net/wurstclient/hacks/AntiAfkHack.java | 2 +- .../java/net/wurstclient/hacks/AutoFarmHack.java | 2 +- .../net/wurstclient/hacks/BaseFinderHack.java | 2 +- .../net/wurstclient/hacks/BonemealAuraHack.java | 2 +- .../net/wurstclient/hacks/BuildRandomHack.java | 2 +- .../net/wurstclient/hacks/CaveFinderHack.java | 2 +- .../net/wurstclient/hacks/ExcavatorHack.java | 2 +- .../java/net/wurstclient/hacks/FightBotHack.java | 2 +- .../java/net/wurstclient/hacks/FollowHack.java | 2 +- .../java/net/wurstclient/hacks/GlideHack.java | 4 ++-- .../net/wurstclient/hacks/InstantBunkerHack.java | 2 +- .../java/net/wurstclient/hacks/JesusHack.java | 2 +- .../java/net/wurstclient/hacks/KaboomHack.java | 2 +- .../net/wurstclient/hacks/MobSpawnEspHack.java | 2 +- .../java/net/wurstclient/hacks/NukerHack.java | 2 +- .../net/wurstclient/hacks/NukerLegitHack.java | 2 +- .../net/wurstclient/hacks/PlayerFinderHack.java | 4 ++-- .../java/net/wurstclient/hacks/ProtectHack.java | 2 +- .../net/wurstclient/hacks/ScaffoldWalkHack.java | 2 +- .../java/net/wurstclient/hacks/SearchHack.java | 2 +- .../net/wurstclient/hacks/SpeedNukerHack.java | 2 +- .../java/net/wurstclient/hacks/TillauraHack.java | 2 +- .../java/net/wurstclient/hacks/TreeBotHack.java | 4 ++-- .../net/wurstclient/hacks/TunnellerHack.java | 16 ++++++++-------- .../mixin/ClientPlayerEntityMixin.java | 4 ++-- .../net/wurstclient/mixin/StatsScreenMixin.java | 2 +- .../net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../navigator/NavigatorMainScreen.java | 2 +- .../options/KeybindProfilesScreen.java | 2 +- .../wurstclient/options/WurstOptionsScreen.java | 2 +- .../wurstclient/serverfinder/CleanUpScreen.java | 2 +- 45 files changed, 65 insertions(+), 65 deletions(-) diff --git a/gradle.properties b/gradle.properties index ddf2f4e3..4557fd70 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=1.19.4-pre1 -yarn_mappings=1.19.4-pre1+build.1 -loader_version=0.14.15 +minecraft_version=1.19.4-pre2 +yarn_mappings=1.19.4-pre2+build.1 +loader_version=0.14.17 #Fabric api -fabric_version=0.74.2+1.19.4 +fabric_version=0.75.1+1.19.4 # Mod Properties -mod_version = v7.31-MC1.19.4-pre1 +mod_version = v7.31-MC1.19.4-pre2 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 8db6bd52..8738372f 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.31"; - public static final String MC_VERSION = "1.19.4-pre1"; + public static final String MC_VERSION = "1.19.4-pre2"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/ai/FlyPathProcessor.java b/src/main/java/net/wurstclient/ai/FlyPathProcessor.java index d9aa108d..e19882de 100644 --- a/src/main/java/net/wurstclient/ai/FlyPathProcessor.java +++ b/src/main/java/net/wurstclient/ai/FlyPathProcessor.java @@ -30,7 +30,7 @@ public class FlyPathProcessor extends PathProcessor public void process() { // get positions - BlockPos pos = BlockPos.method_49638(MC.player.getPos()); + BlockPos pos = BlockPos.ofFloored(MC.player.getPos()); Vec3d posVec = MC.player.getPos(); BlockPos nextPos = path.get(index); int posIndex = path.indexOf(pos); diff --git a/src/main/java/net/wurstclient/ai/PathFinder.java b/src/main/java/net/wurstclient/ai/PathFinder.java index 104fbdc3..3619bbad 100644 --- a/src/main/java/net/wurstclient/ai/PathFinder.java +++ b/src/main/java/net/wurstclient/ai/PathFinder.java @@ -64,12 +64,12 @@ public class PathFinder { if(WurstClient.MC.player.isOnGround()) start = - new PathPos(BlockPos.method_49637(WurstClient.MC.player.getX(), + new PathPos(BlockPos.ofFloored(WurstClient.MC.player.getX(), WurstClient.MC.player.getY() + 0.5, WurstClient.MC.player.getZ())); else start = new PathPos( - BlockPos.method_49638(WurstClient.MC.player.getPos())); + BlockPos.ofFloored(WurstClient.MC.player.getPos())); this.goal = goal; costMap.put(start, 0F); diff --git a/src/main/java/net/wurstclient/ai/WalkPathProcessor.java b/src/main/java/net/wurstclient/ai/WalkPathProcessor.java index 71b302de..300e315f 100644 --- a/src/main/java/net/wurstclient/ai/WalkPathProcessor.java +++ b/src/main/java/net/wurstclient/ai/WalkPathProcessor.java @@ -32,11 +32,11 @@ public class WalkPathProcessor extends PathProcessor // get positions BlockPos pos; if(WurstClient.MC.player.isOnGround()) - pos = BlockPos.method_49637(WurstClient.MC.player.getX(), + pos = BlockPos.ofFloored(WurstClient.MC.player.getX(), WurstClient.MC.player.getY() + 0.5, WurstClient.MC.player.getZ()); else - pos = BlockPos.method_49638(WurstClient.MC.player.getPos()); + pos = BlockPos.ofFloored(WurstClient.MC.player.getPos()); PathPos nextPos = path.get(index); int posIndex = path.indexOf(pos); diff --git a/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java b/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java index 3a6d5039..34655bb2 100644 --- a/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java +++ b/src/main/java/net/wurstclient/altmanager/screens/AltManagerScreen.java @@ -527,7 +527,7 @@ public final class AltManagerScreen extends Screen ClickableWidget button = (ClickableWidget)d; - if(!button.isHovered()) + if(!button.isSelected()) continue; if(button != importButton && button != exportButton) diff --git a/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java b/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java index d6af3547..70958b70 100644 --- a/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java +++ b/src/main/java/net/wurstclient/clickgui/screens/SelectFileScreen.java @@ -173,7 +173,7 @@ public final class SelectFileScreen extends Screen super.render(matrixStack, mouseX, mouseY, partialTicks); - if(doneButton.isHovered() && !doneButton.active) + if(doneButton.isSelected() && !doneButton.active) renderTooltip(matrixStack, Arrays.asList(Text.literal("You must first select a file.")), mouseX, mouseY); diff --git a/src/main/java/net/wurstclient/commands/DigCmd.java b/src/main/java/net/wurstclient/commands/DigCmd.java index cbf597ba..04cf758d 100644 --- a/src/main/java/net/wurstclient/commands/DigCmd.java +++ b/src/main/java/net/wurstclient/commands/DigCmd.java @@ -45,7 +45,7 @@ public final class DigCmd extends Command ClientPlayerEntity player = MC.player; Direction direction = player.getHorizontalFacing(); - BlockPos pos1 = BlockPos.method_49638( + BlockPos pos1 = BlockPos.ofFloored( player.getPos().add(0, player.getEyeHeight(player.getPose()), 0)); if(height < 0) diff --git a/src/main/java/net/wurstclient/commands/ExcavateCmd.java b/src/main/java/net/wurstclient/commands/ExcavateCmd.java index c86c1022..36a88507 100644 --- a/src/main/java/net/wurstclient/commands/ExcavateCmd.java +++ b/src/main/java/net/wurstclient/commands/ExcavateCmd.java @@ -35,7 +35,7 @@ public final class ExcavateCmd extends Command private BlockPos argsToXyzPos(String... xyz) throws CmdSyntaxError { - BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); + BlockPos playerPos = BlockPos.ofFloored(MC.player.getPos()); int[] player = {playerPos.getX(), playerPos.getY(), playerPos.getZ()}; int[] pos = new int[3]; diff --git a/src/main/java/net/wurstclient/commands/GetPosCmd.java b/src/main/java/net/wurstclient/commands/GetPosCmd.java index 5413f06d..efbea298 100644 --- a/src/main/java/net/wurstclient/commands/GetPosCmd.java +++ b/src/main/java/net/wurstclient/commands/GetPosCmd.java @@ -24,7 +24,7 @@ public final class GetPosCmd extends Command @Override public void call(String[] args) throws CmdException { - BlockPos pos = BlockPos.method_49638(MC.player.getPos()); + BlockPos pos = BlockPos.ofFloored(MC.player.getPos()); String posString = pos.getX() + " " + pos.getY() + " " + pos.getZ(); switch(String.join(" ", args).toLowerCase()) diff --git a/src/main/java/net/wurstclient/commands/GoToCmd.java b/src/main/java/net/wurstclient/commands/GoToCmd.java index 10942a48..9f75c883 100644 --- a/src/main/java/net/wurstclient/commands/GoToCmd.java +++ b/src/main/java/net/wurstclient/commands/GoToCmd.java @@ -101,12 +101,12 @@ public final class GoToCmd extends Command if(entity == null) throw new CmdError("Entity \"" + name + "\" could not be found."); - return BlockPos.method_49638(entity.getPos()); + return BlockPos.ofFloored(entity.getPos()); } private BlockPos argsToXyzPos(String... xyz) throws CmdSyntaxError { - BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); + BlockPos playerPos = BlockPos.ofFloored(MC.player.getPos()); int[] player = {playerPos.getX(), playerPos.getY(), playerPos.getZ()}; int[] pos = new int[3]; diff --git a/src/main/java/net/wurstclient/commands/PathCmd.java b/src/main/java/net/wurstclient/commands/PathCmd.java index 3856b317..2aa374e0 100644 --- a/src/main/java/net/wurstclient/commands/PathCmd.java +++ b/src/main/java/net/wurstclient/commands/PathCmd.java @@ -141,12 +141,12 @@ public final class PathCmd extends Command if(entity == null) throw new CmdError("Entity \"" + name + "\" could not be found."); - return BlockPos.method_49638(entity.getPos()); + return BlockPos.ofFloored(entity.getPos()); } private BlockPos argsToXyzPos(String... xyz) throws CmdSyntaxError { - BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); + BlockPos playerPos = BlockPos.ofFloored(MC.player.getPos()); int[] player = {playerPos.getX(), playerPos.getY(), playerPos.getZ()}; int[] pos = new int[3]; diff --git a/src/main/java/net/wurstclient/commands/TpCmd.java b/src/main/java/net/wurstclient/commands/TpCmd.java index 40a70581..8f3a40cf 100644 --- a/src/main/java/net/wurstclient/commands/TpCmd.java +++ b/src/main/java/net/wurstclient/commands/TpCmd.java @@ -68,12 +68,12 @@ public final class TpCmd extends Command if(entity == null) throw new CmdError("Entity \"" + name + "\" could not be found."); - return BlockPos.method_49638(entity.getPos()); + return BlockPos.ofFloored(entity.getPos()); } private BlockPos argsToXyzPos(String... xyz) throws CmdSyntaxError { - BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); + BlockPos playerPos = BlockPos.ofFloored(MC.player.getPos()); int[] player = {playerPos.getX(), playerPos.getY(), playerPos.getZ()}; int[] pos = new int[3]; diff --git a/src/main/java/net/wurstclient/hacks/AnchorAuraHack.java b/src/main/java/net/wurstclient/hacks/AnchorAuraHack.java index e80aa5d8..ddb17c48 100644 --- a/src/main/java/net/wurstclient/hacks/AnchorAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/AnchorAuraHack.java @@ -359,7 +359,7 @@ public final class AnchorAuraHack extends Hack implements UpdateListener int rangeI = (int)Math.ceil(rangeD); double rangeSq = Math.pow(rangeD + 0.5, 2); - BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.ofFloored(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/AntiAfkHack.java b/src/main/java/net/wurstclient/hacks/AntiAfkHack.java index e351e241..b57c4579 100644 --- a/src/main/java/net/wurstclient/hacks/AntiAfkHack.java +++ b/src/main/java/net/wurstclient/hacks/AntiAfkHack.java @@ -56,7 +56,7 @@ public final class AntiAfkHack extends Hack @Override public void onEnable() { - start = BlockPos.method_49638(MC.player.getPos()); + start = BlockPos.ofFloored(MC.player.getPos()); nextBlock = null; pathFinder = new RandomPathFinder(start); creativeFlying = MC.player.getAbilities().flying; diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index d17d2f80..df1af7ed 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -117,7 +117,7 @@ public final class AutoFarmHack extends Hack { currentBlock = null; Vec3d eyesVec = RotationUtils.getEyesPos().subtract(0.5, 0.5, 0.5); - BlockPos eyesBlock = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos eyesBlock = BlockPos.ofFloored(RotationUtils.getEyesPos()); double rangeSq = Math.pow(range.getValue(), 2); int blockRange = (int)Math.ceil(range.getValue()); diff --git a/src/main/java/net/wurstclient/hacks/BaseFinderHack.java b/src/main/java/net/wurstclient/hacks/BaseFinderHack.java index 652fc327..218c3cbd 100644 --- a/src/main/java/net/wurstclient/hacks/BaseFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/BaseFinderHack.java @@ -239,7 +239,7 @@ public final class BaseFinderHack extends Hack int endY = startY - stepSize; BlockPos playerPos = - BlockPos.method_49637(MC.player.getX(), 0, MC.player.getZ()); + BlockPos.ofFloored(MC.player.getX(), 0, MC.player.getZ()); // search matching blocks loop: for(int y = startY; y > endY; y--) diff --git a/src/main/java/net/wurstclient/hacks/BonemealAuraHack.java b/src/main/java/net/wurstclient/hacks/BonemealAuraHack.java index eb0e536a..7003b2d9 100644 --- a/src/main/java/net/wurstclient/hacks/BonemealAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/BonemealAuraHack.java @@ -185,7 +185,7 @@ public final class BonemealAuraHack extends Hack implements UpdateListener double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.ofFloored(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/BuildRandomHack.java b/src/main/java/net/wurstclient/hacks/BuildRandomHack.java index 8c8b9b16..d6988d3c 100644 --- a/src/main/java/net/wurstclient/hacks/BuildRandomHack.java +++ b/src/main/java/net/wurstclient/hacks/BuildRandomHack.java @@ -109,7 +109,7 @@ public final class BuildRandomHack extends Hack do { // generate random position - pos = BlockPos.method_49638(MC.player.getPos()).add( + pos = BlockPos.ofFloored(MC.player.getPos()).add( random.nextInt(bound) - range, random.nextInt(bound) - range, random.nextInt(bound) - range); attempts++; diff --git a/src/main/java/net/wurstclient/hacks/CaveFinderHack.java b/src/main/java/net/wurstclient/hacks/CaveFinderHack.java index dbcc1629..418b95d6 100644 --- a/src/main/java/net/wurstclient/hacks/CaveFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/CaveFinderHack.java @@ -182,7 +182,7 @@ public final class CaveFinderHack extends Hack public void onUpdate() { Block currentBlock = BlockUtils.getBlockFromName("minecraft:cave_air"); - BlockPos eyesPos = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos eyesPos = BlockPos.ofFloored(RotationUtils.getEyesPos()); ChunkPos center = getPlayerChunkPos(eyesPos); int range = area.getSelected().chunkRange; diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index 08d67857..86943b18 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -565,7 +565,7 @@ public final class ExcavatorHack extends Hack double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.ofFloored(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/FightBotHack.java b/src/main/java/net/wurstclient/hacks/FightBotHack.java index e91ca013..2ded822e 100644 --- a/src/main/java/net/wurstclient/hacks/FightBotHack.java +++ b/src/main/java/net/wurstclient/hacks/FightBotHack.java @@ -243,7 +243,7 @@ public final class FightBotHack extends Hack public EntityPathFinder(Entity entity) { - super(BlockPos.method_49638(entity.getPos())); + super(BlockPos.ofFloored(entity.getPos())); this.entity = entity; setThinkTime(1); } diff --git a/src/main/java/net/wurstclient/hacks/FollowHack.java b/src/main/java/net/wurstclient/hacks/FollowHack.java index 0e88c44b..cdd799af 100644 --- a/src/main/java/net/wurstclient/hacks/FollowHack.java +++ b/src/main/java/net/wurstclient/hacks/FollowHack.java @@ -258,7 +258,7 @@ public final class FollowHack extends Hack { public EntityPathFinder() { - super(BlockPos.method_49638(entity.getPos())); + super(BlockPos.ofFloored(entity.getPos())); setThinkTime(1); } diff --git a/src/main/java/net/wurstclient/hacks/GlideHack.java b/src/main/java/net/wurstclient/hacks/GlideHack.java index 9e66336d..64f4b55b 100644 --- a/src/main/java/net/wurstclient/hacks/GlideHack.java +++ b/src/main/java/net/wurstclient/hacks/GlideHack.java @@ -79,8 +79,8 @@ public final class GlideHack extends Hack if(!MC.world.isSpaceEmpty(box)) return; - BlockPos min = BlockPos.method_49637(box.minX, box.minY, box.minZ); - BlockPos max = BlockPos.method_49637(box.maxX, box.maxY, box.maxZ); + BlockPos min = BlockPos.ofFloored(box.minX, box.minY, box.minZ); + BlockPos max = BlockPos.ofFloored(box.maxX, box.maxY, box.maxZ); Stream stream = StreamSupport .stream(BlockUtils.getAllInBox(min, max).spliterator(), true); diff --git a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java index 91687d00..8120b387 100644 --- a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java +++ b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java @@ -85,7 +85,7 @@ public final class InstantBunkerHack extends Hack ChatUtils.warning("Not enough blocks. Bunker may be incomplete."); // get start pos and facings - BlockPos startPos = BlockPos.method_49638(MC.player.getPos()); + BlockPos startPos = BlockPos.ofFloored(MC.player.getPos()); Direction facing = MC.player.getHorizontalFacing(); Direction facing2 = facing.rotateYCounterclockwise(); diff --git a/src/main/java/net/wurstclient/hacks/JesusHack.java b/src/main/java/net/wurstclient/hacks/JesusHack.java index 632f6676..573f5b57 100644 --- a/src/main/java/net/wurstclient/hacks/JesusHack.java +++ b/src/main/java/net/wurstclient/hacks/JesusHack.java @@ -165,7 +165,7 @@ public final class JesusHack extends Hack for(Box bb : blockCollisions) { - BlockPos pos = BlockPos.method_49638(bb.getCenter()); + BlockPos pos = BlockPos.ofFloored(bb.getCenter()); Material material = BlockUtils.getState(pos).getMaterial(); if(material == Material.WATER || material == Material.LAVA) diff --git a/src/main/java/net/wurstclient/hacks/KaboomHack.java b/src/main/java/net/wurstclient/hacks/KaboomHack.java index 2a744db8..328625d1 100644 --- a/src/main/java/net/wurstclient/hacks/KaboomHack.java +++ b/src/main/java/net/wurstclient/hacks/KaboomHack.java @@ -77,7 +77,7 @@ public final class KaboomHack extends Hack implements UpdateListener double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.ofFloored(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java b/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java index 362226bd..2c8052f1 100644 --- a/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java +++ b/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java @@ -110,7 +110,7 @@ public final class MobSpawnEspHack extends Hack { ClientWorld world = MC.world; - BlockPos eyesBlock = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos eyesBlock = BlockPos.ofFloored(RotationUtils.getEyesPos()); int chunkX = eyesBlock.getX() >> 4; int chunkZ = eyesBlock.getZ() >> 4; int chunkRange = drawDistance.getSelected().chunkRange; diff --git a/src/main/java/net/wurstclient/hacks/NukerHack.java b/src/main/java/net/wurstclient/hacks/NukerHack.java index 5072c4f8..587d5dec 100644 --- a/src/main/java/net/wurstclient/hacks/NukerHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerHack.java @@ -146,7 +146,7 @@ public final class NukerHack extends Hack currentBlock = null; Vec3d eyesPos = RotationUtils.getEyesPos().subtract(0.5, 0.5, 0.5); - BlockPos eyesBlock = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos eyesBlock = BlockPos.ofFloored(RotationUtils.getEyesPos()); double rangeSq = Math.pow(range.getValue(), 2); int blockRange = (int)Math.ceil(range.getValue()); diff --git a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java index a6ec8eb6..18c8b1a1 100644 --- a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java @@ -188,7 +188,7 @@ public final class NukerLegitHack extends Hack double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.ofFloored(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java index bf16e106..0216fd97 100644 --- a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java @@ -159,13 +159,13 @@ public final class PlayerFinderHack extends Hack // }else if(packet instanceof PlaySoundS2CPacket sound) newPos = - BlockPos.method_49637(sound.getX(), sound.getY(), sound.getZ()); + BlockPos.ofFloored(sound.getX(), sound.getY(), sound.getZ()); if(newPos == null) return; // check distance to player - BlockPos playerPos = BlockPos.method_49638(MC.player.getPos()); + BlockPos playerPos = BlockPos.ofFloored(MC.player.getPos()); if(Math.abs(playerPos.getX() - newPos.getX()) > 256 || Math.abs(playerPos.getZ() - newPos.getZ()) > 256) pos = newPos; diff --git a/src/main/java/net/wurstclient/hacks/ProtectHack.java b/src/main/java/net/wurstclient/hacks/ProtectHack.java index 8b5a85a4..4a52a1fb 100644 --- a/src/main/java/net/wurstclient/hacks/ProtectHack.java +++ b/src/main/java/net/wurstclient/hacks/ProtectHack.java @@ -305,7 +305,7 @@ public final class ProtectHack extends Hack public EntityPathFinder(Entity entity, double distance) { - super(BlockPos.method_49638(entity.getPos())); + super(BlockPos.ofFloored(entity.getPos())); this.entity = entity; distanceSq = distance * distance; setThinkTime(1); diff --git a/src/main/java/net/wurstclient/hacks/ScaffoldWalkHack.java b/src/main/java/net/wurstclient/hacks/ScaffoldWalkHack.java index c1310dd4..a27c88db 100644 --- a/src/main/java/net/wurstclient/hacks/ScaffoldWalkHack.java +++ b/src/main/java/net/wurstclient/hacks/ScaffoldWalkHack.java @@ -53,7 +53,7 @@ public final class ScaffoldWalkHack extends Hack implements UpdateListener @Override public void onUpdate() { - BlockPos belowPlayer = BlockPos.method_49638(MC.player.getPos()).down(); + BlockPos belowPlayer = BlockPos.ofFloored(MC.player.getPos()).down(); // check if block is already placed if(!BlockUtils.getState(belowPlayer).getMaterial().isReplaceable()) diff --git a/src/main/java/net/wurstclient/hacks/SearchHack.java b/src/main/java/net/wurstclient/hacks/SearchHack.java index aeff187f..54b3e359 100644 --- a/src/main/java/net/wurstclient/hacks/SearchHack.java +++ b/src/main/java/net/wurstclient/hacks/SearchHack.java @@ -181,7 +181,7 @@ public final class SearchHack extends Hack public void onUpdate() { Block currentBlock = block.getBlock(); - BlockPos eyesPos = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos eyesPos = BlockPos.ofFloored(RotationUtils.getEyesPos()); ChunkPos center = MC.player.getChunkPos(); int dimensionId = MC.world.getRegistryKey().toString().hashCode(); diff --git a/src/main/java/net/wurstclient/hacks/SpeedNukerHack.java b/src/main/java/net/wurstclient/hacks/SpeedNukerHack.java index 37bb7d15..da1cfcda 100644 --- a/src/main/java/net/wurstclient/hacks/SpeedNukerHack.java +++ b/src/main/java/net/wurstclient/hacks/SpeedNukerHack.java @@ -139,7 +139,7 @@ public final class SpeedNukerHack extends Hack double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.ofFloored(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/TillauraHack.java b/src/main/java/net/wurstclient/hacks/TillauraHack.java index f0f52c0c..a61fe0e6 100644 --- a/src/main/java/net/wurstclient/hacks/TillauraHack.java +++ b/src/main/java/net/wurstclient/hacks/TillauraHack.java @@ -122,7 +122,7 @@ public final class TillauraHack extends Hack implements UpdateListener double rangeSq = Math.pow(range + 0.5, 2); int rangeI = (int)Math.ceil(range); - BlockPos center = BlockPos.method_49638(RotationUtils.getEyesPos()); + BlockPos center = BlockPos.ofFloored(RotationUtils.getEyesPos()); BlockPos min = center.add(-rangeI, -rangeI, -rangeI); BlockPos max = center.add(rangeI, rangeI, rangeI); diff --git a/src/main/java/net/wurstclient/hacks/TreeBotHack.java b/src/main/java/net/wurstclient/hacks/TreeBotHack.java index a86565bf..2498813f 100644 --- a/src/main/java/net/wurstclient/hacks/TreeBotHack.java +++ b/src/main/java/net/wurstclient/hacks/TreeBotHack.java @@ -459,7 +459,7 @@ public final class TreeBotHack extends Hack { public TreeFinder() { - super(BlockPos.method_49638(WurstClient.MC.player.getPos())); + super(BlockPos.ofFloored(WurstClient.MC.player.getPos())); } public TreeFinder(TreeBotPathFinder pathFinder) @@ -538,7 +538,7 @@ public final class TreeBotHack extends Hack { public AngleFinder() { - super(BlockPos.method_49638(WurstClient.MC.player.getPos())); + super(BlockPos.ofFloored(WurstClient.MC.player.getPos())); setThinkSpeed(512); setThinkTime(1); } diff --git a/src/main/java/net/wurstclient/hacks/TunnellerHack.java b/src/main/java/net/wurstclient/hacks/TunnellerHack.java index 2b0bc9e2..73bcc2ad 100644 --- a/src/main/java/net/wurstclient/hacks/TunnellerHack.java +++ b/src/main/java/net/wurstclient/hacks/TunnellerHack.java @@ -130,7 +130,7 @@ public final class TunnellerHack extends Hack EVENTS.add(RenderListener.class, this); ClientPlayerEntity player = MC.player; - start = BlockPos.method_49638(player.getPos()); + start = BlockPos.ofFloored(player.getPos()); direction = player.getHorizontalFacing(); length = 0; lastTorch = null; @@ -364,7 +364,7 @@ public final class TunnellerHack extends Hack @Override public boolean canRun() { - BlockPos player = BlockPos.method_49638(MC.player.getPos()); + BlockPos player = BlockPos.ofFloored(MC.player.getPos()); BlockPos base = start.offset(direction, length); int distance = getDistance(player, base); @@ -379,7 +379,7 @@ public final class TunnellerHack extends Hack @Override public void run() { - BlockPos player = BlockPos.method_49638(MC.player.getPos()); + BlockPos player = BlockPos.ofFloored(MC.player.getPos()); BlockPos base = start.offset(direction, length); BlockPos from = offset(player, size.getSelected().from); BlockPos to = offset(base, size.getSelected().to); @@ -468,7 +468,7 @@ public final class TunnellerHack extends Hack @Override public boolean canRun() { - BlockPos player = BlockPos.method_49638(MC.player.getPos()); + BlockPos player = BlockPos.ofFloored(MC.player.getPos()); BlockPos base = start.offset(direction, length); return getDistance(player, base) > 1; @@ -492,7 +492,7 @@ public final class TunnellerHack extends Hack @Override public boolean canRun() { - BlockPos player = BlockPos.method_49638(MC.player.getPos()); + BlockPos player = BlockPos.ofFloored(MC.player.getPos()); BlockPos from = offsetFloor(player, size.getSelected().from); BlockPos to = offsetFloor(player, size.getSelected().to); @@ -678,7 +678,7 @@ public final class TunnellerHack extends Hack @Override public void run() { - BlockPos player = BlockPos.method_49638(MC.player.getPos()); + BlockPos player = BlockPos.ofFloored(MC.player.getPos()); KeyBinding forward = MC.options.forwardKey; Vec3d diffVec = Vec3d.of(player.subtract(start)); @@ -733,7 +733,7 @@ public final class TunnellerHack extends Hack if(!torches.isChecked()) { lastTorch = null; - nextTorch = BlockPos.method_49638(MC.player.getPos()); + nextTorch = BlockPos.ofFloored(MC.player.getPos()); if(vertexBuffers[4] != null) vertexBuffers[4].close(); return false; @@ -760,7 +760,7 @@ public final class TunnellerHack extends Hack RenderUtils.drawArrow(torchVec, torchVec.add(0, 0.5, 0), vertexBuffers[4]); - BlockPos player = BlockPos.method_49638(MC.player.getPos()); + BlockPos player = BlockPos.ofFloored(MC.player.getPos()); if(getDistance(player, nextTorch) > 4) return false; diff --git a/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java b/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java index 9c03e1bf..4bd6b6f9 100644 --- a/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java @@ -144,10 +144,10 @@ public class ClientPlayerEntityMixin extends AbstractClientPlayerEntity * Overridden to allow for the speed to be modified by hacks. */ @Override - protected float method_49484() + protected float getOffGroundSpeed() { AirStrafingSpeedEvent event = - new AirStrafingSpeedEvent(super.method_49484()); + new AirStrafingSpeedEvent(super.getOffGroundSpeed()); EventManager.fire(event); return event.getSpeed(); } diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 6de5e642..adc735f9 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 6333b6ff..7377a739 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index c1097d02..7ed8ad48 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java b/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java index 760ece66..2dc5e074 100644 --- a/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java +++ b/src/main/java/net/wurstclient/options/KeybindProfilesScreen.java @@ -181,7 +181,7 @@ public final class KeybindProfilesScreen extends Screen super.render(matrixStack, mouseX, mouseY, partialTicks); - if(loadButton.isHovered() && !loadButton.active) + if(loadButton.isSelected() && !loadButton.active) renderTooltip(matrixStack, Arrays.asList(Text.literal("You must first select a file.")), mouseX, mouseY); diff --git a/src/main/java/net/wurstclient/options/WurstOptionsScreen.java b/src/main/java/net/wurstclient/options/WurstOptionsScreen.java index 988a2008..8af4cba2 100644 --- a/src/main/java/net/wurstclient/options/WurstOptionsScreen.java +++ b/src/main/java/net/wurstclient/options/WurstOptionsScreen.java @@ -183,7 +183,7 @@ public class WurstOptionsScreen extends Screen ClickableWidget button = (ClickableWidget)d; - if(!button.isHovered() || !(button instanceof WurstOptionsButton)) + if(!button.isSelected() || !(button instanceof WurstOptionsButton)) continue; WurstOptionsButton woButton = (WurstOptionsButton)button; diff --git a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java index c29826bf..1a1b7ba4 100644 --- a/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java +++ b/src/main/java/net/wurstclient/serverfinder/CleanUpScreen.java @@ -225,7 +225,7 @@ public class CleanUpScreen extends Screen ClickableWidget button = (ClickableWidget)d; - if(!button.isHovered() || !(button instanceof CleanUpButton)) + if(!button.isSelected() || !(button instanceof CleanUpButton)) continue; CleanUpButton cuButton = (CleanUpButton)button; From ea7147bdce7902e257b0573fc9516bd9cce2f083 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 27 Feb 2023 21:01:01 +0100 Subject: [PATCH 022/126] Update to 1.19.4-pre2 --- .../java/net/wurstclient/ai/PathFinder.java | 11 +++++----- .../wurstclient/mixin/StatsScreenMixin.java | 2 +- .../mixin/TerrainRenderContextMixin.java | 20 +++++++++++++------ .../wurstclient/mixin/TitleScreenMixin.java | 2 +- .../wurstclient/mixin/WorldRendererMixin.java | 4 ++-- .../navigator/NavigatorMainScreen.java | 2 +- src/main/resources/fabric.mod.json | 4 ++-- 7 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/main/java/net/wurstclient/ai/PathFinder.java b/src/main/java/net/wurstclient/ai/PathFinder.java index 3619bbad..86faceb7 100644 --- a/src/main/java/net/wurstclient/ai/PathFinder.java +++ b/src/main/java/net/wurstclient/ai/PathFinder.java @@ -63,13 +63,12 @@ public class PathFinder public PathFinder(BlockPos goal) { if(WurstClient.MC.player.isOnGround()) - start = - new PathPos(BlockPos.ofFloored(WurstClient.MC.player.getX(), - WurstClient.MC.player.getY() + 0.5, - WurstClient.MC.player.getZ())); + start = new PathPos(BlockPos.ofFloored(WurstClient.MC.player.getX(), + WurstClient.MC.player.getY() + 0.5, + WurstClient.MC.player.getZ())); else - start = new PathPos( - BlockPos.ofFloored(WurstClient.MC.player.getPos())); + start = + new PathPos(BlockPos.ofFloored(WurstClient.MC.player.getPos())); this.goal = goal; costMap.put(start, 0F); diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index adc735f9..6de5e642 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TerrainRenderContextMixin.java b/src/main/java/net/wurstclient/mixin/TerrainRenderContextMixin.java index 3bc90e28..35d830ef 100644 --- a/src/main/java/net/wurstclient/mixin/TerrainRenderContextMixin.java +++ b/src/main/java/net/wurstclient/mixin/TerrainRenderContextMixin.java @@ -10,7 +10,7 @@ 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 org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.fabricmc.fabric.impl.client.indigo.renderer.render.TerrainRenderContext; import net.minecraft.block.BlockState; @@ -23,18 +23,26 @@ import net.wurstclient.events.TesselateBlockListener.TesselateBlockEvent; @Mixin(TerrainRenderContext.class) public class TerrainRenderContextMixin { - @Inject(at = {@At("HEAD")}, - method = {"tessellateBlock"}, + /** + * This is a part of what allows X-Ray to make blocks invisible. It's + * also the part that keeps breaking whenever Fabric API updates their + * rendering code. + * + *

+ * We could make this optional to stop the game from crashing, but then + * X-Ray would silently stop working and it would be much harder to debug. + */ + @Inject(at = @At("HEAD"), + method = "tessellateBlock", cancellable = true, remap = false) private void tesselateBlock(BlockState blockState, BlockPos blockPos, - final BakedModel model, MatrixStack matrixStack, - CallbackInfoReturnable cir) + final BakedModel model, MatrixStack matrixStack, CallbackInfo ci) { TesselateBlockEvent event = new TesselateBlockEvent(blockState); EventManager.fire(event); if(event.isCancelled()) - cir.cancel(); + ci.cancel(); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 7377a739..6333b6ff 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/mixin/WorldRendererMixin.java b/src/main/java/net/wurstclient/mixin/WorldRendererMixin.java index 59eb33ef..2aa213a4 100644 --- a/src/main/java/net/wurstclient/mixin/WorldRendererMixin.java +++ b/src/main/java/net/wurstclient/mixin/WorldRendererMixin.java @@ -19,8 +19,8 @@ import net.wurstclient.WurstClient; @Mixin(WorldRenderer.class) public class WorldRendererMixin { - @Inject(at = {@At("HEAD")}, - method = {"method_43788(Lnet/minecraft/client/render/Camera;)Z"}, + @Inject(at = @At("HEAD"), + method = "hasBlindnessOrDarkness(Lnet/minecraft/client/render/Camera;)Z", cancellable = true) private void onHasBlindnessOrDarknessEffect(Camera camera, CallbackInfoReturnable ci) diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 7ed8ad48..c1097d02 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index bf639a0f..615be355 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -30,8 +30,8 @@ "depends": { "fabricloader": ">=0.14.10", - "fabric-api": ">=0.74.2", - "minecraft": "~1.19.4-beta.1", + "fabric-api": ">=0.75.1", + "minecraft": "~1.19.4-beta.2", "java": ">=17" }, "suggests": { From 5c6cdd15267255649ed5f5b1ec05106834e7d571 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 1 Mar 2023 22:05:03 +0100 Subject: [PATCH 023/126] [Wurst-Bot] Update to 1.19.4-pre3 --- gradle.properties | 8 ++++---- src/main/java/net/wurstclient/WurstClient.java | 2 +- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index dec89e17..92bfe8fc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=1.19.4-pre2 -yarn_mappings=1.19.4-pre2+build.1 +minecraft_version=1.19.4-pre3 +yarn_mappings=1.19.4-pre3+build.1 loader_version=0.14.17 #Fabric api -fabric_version=0.75.1+1.19.4 +fabric_version=0.75.2+1.19.4 # Mod Properties -mod_version = v7.32-MC1.19.4-pre2 +mod_version = v7.32-MC1.19.4-pre3 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index a12ca20a..9b6baf9c 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.32"; - public static final String MC_VERSION = "1.19.4-pre2"; + public static final String MC_VERSION = "1.19.4-pre3"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 187f0eed..5297484e 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 28488e07..87f22486 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index aec6fd05..0ebbbc4b 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 2ffa3dea6dc6ee22ca92bae8525eae31da569124 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 1 Mar 2023 22:12:50 +0100 Subject: [PATCH 024/126] Update to 1.19.4-pre3 --- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 5297484e..187f0eed 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 87f22486..28488e07 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 0ebbbc4b..aec6fd05 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From d3bce8594b19d924fc84736935d3f040ad53f040 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 8 Mar 2023 16:27:40 +0100 Subject: [PATCH 025/126] [Wurst-Bot] Update to 1.19.4-pre4 --- gradle.properties | 8 ++++---- src/main/java/net/wurstclient/WurstClient.java | 2 +- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index 92bfe8fc..bd7a524b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=1.19.4-pre3 -yarn_mappings=1.19.4-pre3+build.1 +minecraft_version=1.19.4-pre4 +yarn_mappings=1.19.4-pre4+build.1 loader_version=0.14.17 #Fabric api -fabric_version=0.75.2+1.19.4 +fabric_version=0.75.3+1.19.4 # Mod Properties -mod_version = v7.32-MC1.19.4-pre3 +mod_version = v7.32-MC1.19.4-pre4 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 9b6baf9c..bdb47efe 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.32"; - public static final String MC_VERSION = "1.19.4-pre3"; + public static final String MC_VERSION = "1.19.4-pre4"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 187f0eed..5297484e 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 28488e07..87f22486 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index aec6fd05..0ebbbc4b 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From d3c5c468980c6371bc8a9a5a1cad4984dba4da30 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 8 Mar 2023 16:43:07 +0100 Subject: [PATCH 026/126] Update to 1.19.4-pre4 --- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 5297484e..187f0eed 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 87f22486..28488e07 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 0ebbbc4b..aec6fd05 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 8897842fca1537f037525757a94ff4bff5779785 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 9 Mar 2023 19:33:52 +0100 Subject: [PATCH 027/126] [Wurst-Bot] Update to 1.19.4-rc1 --- gradle.properties | 6 +++--- src/main/java/net/wurstclient/WurstClient.java | 2 +- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index bd7a524b..231aca46 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=1.19.4-pre4 -yarn_mappings=1.19.4-pre4+build.1 +minecraft_version=1.19.4-rc1 +yarn_mappings=1.19.4-rc1+build.1 loader_version=0.14.17 #Fabric api fabric_version=0.75.3+1.19.4 # Mod Properties -mod_version = v7.32-MC1.19.4-pre4 +mod_version = v7.32-MC1.19.4-rc1 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index bdb47efe..c1b761a2 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.32"; - public static final String MC_VERSION = "1.19.4-pre4"; + public static final String MC_VERSION = "1.19.4-rc1"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 187f0eed..5297484e 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 28488e07..87f22486 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index aec6fd05..0ebbbc4b 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 0391f6b138bbe02267aa792de7b7ee75ede2ee91 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 9 Mar 2023 19:38:57 +0100 Subject: [PATCH 028/126] Why does the bot keep breaking these 3 lines? --- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 5297484e..187f0eed 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 87f22486..28488e07 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 0ebbbc4b..aec6fd05 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From d497271c890feb11cf5509c82f81d94ae5359674 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 11 Mar 2023 19:28:09 +0100 Subject: [PATCH 029/126] [Wurst-Bot] Update to 1.19.4-rc2 --- gradle.properties | 6 +++--- src/main/java/net/wurstclient/WurstClient.java | 2 +- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index 231aca46..10f07594 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=1.19.4-rc1 -yarn_mappings=1.19.4-rc1+build.1 +minecraft_version=1.19.4-rc2 +yarn_mappings=1.19.4-rc2+build.1 loader_version=0.14.17 #Fabric api fabric_version=0.75.3+1.19.4 # Mod Properties -mod_version = v7.32-MC1.19.4-rc1 +mod_version = v7.32-MC1.19.4-rc2 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index c1b761a2..deb2423d 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.32"; - public static final String MC_VERSION = "1.19.4-rc1"; + public static final String MC_VERSION = "1.19.4-rc2"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 187f0eed..5297484e 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 28488e07..87f22486 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index aec6fd05..0ebbbc4b 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 996b8faffa499dfec3179d616462a1e20c8008c3 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 11 Mar 2023 19:33:08 +0100 Subject: [PATCH 030/126] Why does the bot keep breaking these 3 lines? --- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 5297484e..187f0eed 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 87f22486..28488e07 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 0ebbbc4b..aec6fd05 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 09ac1fb8776304b52f574d6b0d1053a18bd5f838 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 14 Mar 2023 17:16:17 +0100 Subject: [PATCH 031/126] [Wurst-Bot] Update to 1.19.4-rc3 --- gradle.properties | 6 +++--- src/main/java/net/wurstclient/WurstClient.java | 2 +- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index 10f07594..b13ed1c1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=1.19.4-rc2 -yarn_mappings=1.19.4-rc2+build.1 +minecraft_version=1.19.4-rc3 +yarn_mappings=1.19.4-rc3+build.2 loader_version=0.14.17 #Fabric api fabric_version=0.75.3+1.19.4 # Mod Properties -mod_version = v7.32-MC1.19.4-rc2 +mod_version = v7.32-MC1.19.4-rc3 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index deb2423d..e973ba9d 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.32"; - public static final String MC_VERSION = "1.19.4-rc2"; + public static final String MC_VERSION = "1.19.4-rc3"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 187f0eed..5297484e 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 28488e07..87f22486 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index aec6fd05..0ebbbc4b 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 98f5b684f33c66d854ea8901d1d6afae6fe8f3c8 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 14 Mar 2023 17:20:28 +0100 Subject: [PATCH 032/126] Why does the bot keep breaking these 3 lines? --- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 5297484e..187f0eed 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 87f22486..28488e07 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 0ebbbc4b..aec6fd05 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 58e1bf77ff35a87301513165edf4d4c05917ba44 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 14 Mar 2023 17:37:13 +0100 Subject: [PATCH 033/126] [Wurst-Bot] Update to 1.19.4 --- gradle.properties | 6 +++--- src/main/java/net/wurstclient/WurstClient.java | 2 +- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index b13ed1c1..fe99851a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api -minecraft_version=1.19.4-rc3 -yarn_mappings=1.19.4-rc3+build.2 +minecraft_version=1.19.4 +yarn_mappings=1.19.4+build.1 loader_version=0.14.17 #Fabric api fabric_version=0.75.3+1.19.4 # Mod Properties -mod_version = v7.32-MC1.19.4-rc3 +mod_version = v7.32-MC1.19.4 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index e973ba9d..2a718480 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -57,7 +57,7 @@ public enum WurstClient public static IMinecraftClient IMC; public static final String VERSION = "7.32"; - public static final String MC_VERSION = "1.19.4-rc3"; + public static final String MC_VERSION = "1.19.4"; private WurstAnalytics analytics; private EventManager eventManager; diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 187f0eed..5297484e 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.setX(width / 2 + 2); + button.method_46421(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 28488e07..87f22486 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.setY(realmsButton.getY()); + altsButton.method_46419(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index aec6fd05..0ebbbc4b 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.setX(middleX - 100); + searchBar.method_46421(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From 248fa2c890a1376115eba933367c0c5d57a1dd26 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 14 Mar 2023 17:49:24 +0100 Subject: [PATCH 034/126] Why does the bot keep breaking these 3 lines? --- src/main/java/net/wurstclient/mixin/StatsScreenMixin.java | 2 +- src/main/java/net/wurstclient/mixin/TitleScreenMixin.java | 2 +- .../java/net/wurstclient/navigator/NavigatorMainScreen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java index 5297484e..187f0eed 100644 --- a/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/StatsScreenMixin.java @@ -55,7 +55,7 @@ public abstract class StatsScreenMixin extends Screen implements StatsListener .equals(I18n.translate("gui.done"))) continue; - button.method_46421(width / 2 + 2); + button.setX(width / 2 + 2); button.setWidth(150); } } diff --git a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java index 87f22486..28488e07 100644 --- a/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java +++ b/src/main/java/net/wurstclient/mixin/TitleScreenMixin.java @@ -77,7 +77,7 @@ public abstract class TitleScreenMixin extends Screen // adjust AltManager button if Realms button has been moved // happens when ModMenu is installed - altsButton.method_46419(realmsButton.getY()); + altsButton.setY(realmsButton.getY()); } /** diff --git a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java index 0ebbbc4b..aec6fd05 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorMainScreen.java @@ -73,7 +73,7 @@ public final class NavigatorMainScreen extends NavigatorScreen setFocused(searchBar); searchBar.setFocused(true); - searchBar.method_46421(middleX - 100); + searchBar.setX(middleX - 100); setContentHeight(navigatorDisplayList.size() / 3 * 20); } From bcf3055bddb707aca19a7f6dec5314228fcaba7b Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 17 Mar 2023 14:10:22 +0100 Subject: [PATCH 035/126] Clean up AntiSpam code --- .../net/wurstclient/hacks/AntiSpamHack.java | 47 +++---------------- .../java/net/wurstclient/util/ChatUtils.java | 14 ++++++ .../util/JustGiveMeTheStringVisitor.java | 39 +++++++++++++++ 3 files changed, 59 insertions(+), 41 deletions(-) create mode 100644 src/main/java/net/wurstclient/util/JustGiveMeTheStringVisitor.java diff --git a/src/main/java/net/wurstclient/hacks/AntiSpamHack.java b/src/main/java/net/wurstclient/hacks/AntiSpamHack.java index 3b7cab26..5328caa0 100644 --- a/src/main/java/net/wurstclient/hacks/AntiSpamHack.java +++ b/src/main/java/net/wurstclient/hacks/AntiSpamHack.java @@ -12,15 +12,14 @@ import java.util.List; import net.minecraft.client.gui.hud.ChatHud; import net.minecraft.client.gui.hud.ChatHudLine; import net.minecraft.client.util.ChatMessages; -import net.minecraft.text.CharacterVisitor; import net.minecraft.text.MutableText; import net.minecraft.text.OrderedText; -import net.minecraft.text.Style; import net.minecraft.util.math.MathHelper; import net.wurstclient.Category; import net.wurstclient.SearchTags; import net.wurstclient.events.ChatInputListener; import net.wurstclient.hack.Hack; +import net.wurstclient.util.ChatUtils; import net.wurstclient.util.MathUtils; @SearchTags({"NoSpam", "ChatFilter", "anti spam", "no spam", "chat filter"}) @@ -51,33 +50,6 @@ public final class AntiSpamHack extends Hack implements ChatInputListener if(chatLines.isEmpty()) return; - /** - * A {@link CharacterVisitor} to completely bypass Mojang's visitor - * system and just get the damn {@link String} out of a - * {@link ChatHudLine}. - * - *

- * Is this seriously the replacement for getString()? - * What were they thinking?! - */ - class JustGiveMeTheStringVisitor implements CharacterVisitor - { - StringBuilder sb = new StringBuilder(); - - @Override - public boolean accept(int index, Style style, int codePoint) - { - sb.appendCodePoint(codePoint); - return true; - } - - @Override - public String toString() - { - return sb.toString(); - } - } - ChatHud chat = MC.inGameHud.getChatHud(); int maxTextLength = MathHelper.floor(chat.getWidth() / chat.getChatScale()); @@ -89,17 +61,12 @@ public final class AntiSpamHack extends Hack implements ChatInputListener for(int i = chatLines.size() - 1; i >= 0; i--) { - JustGiveMeTheStringVisitor oldLineVS = - new JustGiveMeTheStringVisitor(); - chatLines.get(i).content().accept(oldLineVS); - String oldLine = oldLineVS.toString(); + String oldLine = ChatUtils.getAsString(chatLines.get(i)); if(matchingLines <= newLines.size() - 1) { - JustGiveMeTheStringVisitor newLineVS = - new JustGiveMeTheStringVisitor(); - newLines.get(matchingLines).accept(newLineVS); - String newLine = newLineVS.toString(); + String newLine = + ChatUtils.getAsString(newLines.get(matchingLines)); if(matchingLines < newLines.size() - 1) { @@ -119,10 +86,8 @@ public final class AntiSpamHack extends Hack implements ChatInputListener if(i > 0 && matchingLines == newLines.size() - 1) { - JustGiveMeTheStringVisitor nextOldLineVS = - new JustGiveMeTheStringVisitor(); - chatLines.get(i - 1).content().accept(nextOldLineVS); - String nextOldLine = nextOldLineVS.toString(); + String nextOldLine = + ChatUtils.getAsString(chatLines.get(i - 1)); String twoLines = oldLine + nextOldLine; String addedText = twoLines.substring(newLine.length()); diff --git a/src/main/java/net/wurstclient/util/ChatUtils.java b/src/main/java/net/wurstclient/util/ChatUtils.java index 7cf4845d..63e79b72 100644 --- a/src/main/java/net/wurstclient/util/ChatUtils.java +++ b/src/main/java/net/wurstclient/util/ChatUtils.java @@ -9,7 +9,9 @@ package net.wurstclient.util; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.ChatHud; +import net.minecraft.client.gui.hud.ChatHudLine; import net.minecraft.text.MutableText; +import net.minecraft.text.OrderedText; import net.minecraft.text.Text; import net.wurstclient.WurstClient; @@ -64,4 +66,16 @@ public enum ChatUtils { message(SYNTAX_ERROR_PREFIX + message); } + + public static String getAsString(ChatHudLine.Visible visible) + { + return getAsString(visible.content()); + } + + public static String getAsString(OrderedText text) + { + JustGiveMeTheStringVisitor visitor = new JustGiveMeTheStringVisitor(); + text.accept(visitor); + return visitor.toString(); + } } diff --git a/src/main/java/net/wurstclient/util/JustGiveMeTheStringVisitor.java b/src/main/java/net/wurstclient/util/JustGiveMeTheStringVisitor.java new file mode 100644 index 00000000..e95ed26a --- /dev/null +++ b/src/main/java/net/wurstclient/util/JustGiveMeTheStringVisitor.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.util; + +import net.minecraft.client.gui.hud.ChatHudLine; +import net.minecraft.text.CharacterVisitor; +import net.minecraft.text.Style; + +/** + * A {@link CharacterVisitor} to completely bypass Mojang's visitor + * system and just get the damn {@link String} out of a + * {@link ChatHudLine.Visible}. + * + *

+ * Is this seriously the replacement for getString()? + * What were they thinking?! + */ +public class JustGiveMeTheStringVisitor implements CharacterVisitor +{ + private final StringBuilder sb = new StringBuilder(); + + @Override + public boolean accept(int index, Style style, int codePoint) + { + sb.appendCodePoint(codePoint); + return true; + } + + @Override + public String toString() + { + return sb.toString(); + } +} From cad3a1470f2c59bea0b3ac2cd00d2998231e7929 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 17 Mar 2023 15:06:06 +0100 Subject: [PATCH 036/126] Add AutoComplete (WIP) This is still unfinished, but it's pretty stable and usable at this point. It intentionally has no settings yet, because I might still make changes at this point that would completely change the way it works. Such as: - Adding support for OpenAI's ChatGPT models, which need a completely different prompt - Adding support for other providers like GooseAI, which have a completely different API with different parameters, etc. - Adding support for self-hosted language models like LLaMA-7B, which have very different parameters again We might also need some new setting types for this hack, such as a StringSetting for any custom prompts and an EncryptedStringSetting to store the API key. The current method of storing the API key in an environment variable works, but it's not very user-friendly. --- .../java/net/wurstclient/hack/HackList.java | 1 + .../wurstclient/hacks/AutoCompleteHack.java | 250 ++++++++++++++++++ .../mixin/ChatInputSuggestorMixin.java | 52 ++++ .../net/wurstclient/util/OpenAiUtils.java | 46 ++++ .../resources/assets/wurst/lang/en_us.json | 1 + src/main/resources/wurst.accesswidener | 3 +- src/main/resources/wurst.mixins.json | 1 + 7 files changed, 353 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/wurstclient/hacks/AutoCompleteHack.java create mode 100644 src/main/java/net/wurstclient/mixin/ChatInputSuggestorMixin.java create mode 100644 src/main/java/net/wurstclient/util/OpenAiUtils.java diff --git a/src/main/java/net/wurstclient/hack/HackList.java b/src/main/java/net/wurstclient/hack/HackList.java index d723d9da..a43ce416 100644 --- a/src/main/java/net/wurstclient/hack/HackList.java +++ b/src/main/java/net/wurstclient/hack/HackList.java @@ -42,6 +42,7 @@ public final class HackList implements UpdateListener public final ArrowDmgHack arrowDmgHack = new ArrowDmgHack(); public final AutoArmorHack autoArmorHack = new AutoArmorHack(); public final AutoBuildHack autoBuildHack = new AutoBuildHack(); + public final AutoCompleteHack autoCompleteHack = new AutoCompleteHack(); public final AutoDropHack autoDropHack = new AutoDropHack(); public final AutoLeaveHack autoLeaveHack = new AutoLeaveHack(); public final AutoLibrarianHack autoLibrarianHack = new AutoLibrarianHack(); diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java new file mode 100644 index 00000000..ea077bc2 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -0,0 +1,250 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.function.BiConsumer; + +import com.google.gson.JsonObject; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; + +import net.minecraft.client.gui.hud.ChatHudLine; +import net.minecraft.client.gui.screen.ChatScreen; +import net.wurstclient.Category; +import net.wurstclient.SearchTags; +import net.wurstclient.events.ChatOutputListener; +import net.wurstclient.events.UpdateListener; +import net.wurstclient.hack.Hack; +import net.wurstclient.util.ChatUtils; +import net.wurstclient.util.OpenAiUtils; +import net.wurstclient.util.json.JsonException; +import net.wurstclient.util.json.WsonObject; + +@SearchTags({"auto complete", "Copilot", "ChatGPT", "chat GPT", "GPT-3", "GPT3", + "GPT 3", "OpenAI", "open ai", "ChatAI", "chat AI", "ChatBot", "chat bot"}) +public final class AutoCompleteHack extends Hack + implements ChatOutputListener, UpdateListener +{ + private final ArrayList suggestions = new ArrayList<>(); + private Thread apiCallThread; + private long lastApiCallTime; + private long lastRefreshTime; + private String draftMessage; + private BiConsumer suggestionsUpdater; + + public AutoCompleteHack() + { + super("AutoComplete"); + setCategory(Category.CHAT); + } + + @Override + protected void onEnable() + { + String apiKey = System.getenv("WURST_OPENAI_KEY"); + if(apiKey == null) + { + ChatUtils.error("API key not found. Please set the" + + " WURST_OPENAI_KEY environment variable and reboot."); + setEnabled(false); + return; + } + + EVENTS.add(ChatOutputListener.class, this); + EVENTS.add(UpdateListener.class, this); + } + + @Override + public void onDisable() + { + EVENTS.remove(ChatOutputListener.class, this); + EVENTS.remove(UpdateListener.class, this); + } + + @Override + public void onSentMessage(ChatOutputEvent event) + { + synchronized(suggestions) + { + suggestions.clear(); + } + } + + @Override + public void onUpdate() + { + // check if 300ms have passed since the last refresh + long timeSinceLastRefresh = + System.currentTimeMillis() - lastRefreshTime; + if(timeSinceLastRefresh < 300) + return; + + // check if 3s have passed since the last API call + long timeSinceLastApiCall = + System.currentTimeMillis() - lastApiCallTime; + if(timeSinceLastApiCall < 3000) + return; + + // check if the chat is open + if(!(MC.currentScreen instanceof ChatScreen)) + return; + + // check if we have a draft message and suggestions updater + if(draftMessage == null || suggestionsUpdater == null) + return; + + // don't start a new thread if the old one is still running + if(apiCallThread != null && apiCallThread.isAlive()) + return; + + // check if we already have a suggestion for the current draft message + if(suggestions.stream().anyMatch( + s -> s.toLowerCase().startsWith(draftMessage.toLowerCase()))) + return; + + // copy fields to local variables, in case they change + // while the thread is running + String draftMessage2 = draftMessage; + BiConsumer suggestionsUpdater2 = + suggestionsUpdater; + + // build thread + apiCallThread = new Thread(() -> { + + // get suggestion + String suggestion = completeChatMessage(draftMessage2); + if(suggestion.isEmpty()) + return; + + // apply suggestion + synchronized(suggestions) + { + suggestions.add(draftMessage2 + suggestion); + setSuggestions(draftMessage2, suggestionsUpdater2); + } + }); + apiCallThread.setName("AutoComplete API Call"); + apiCallThread.setPriority(Thread.MIN_PRIORITY); + apiCallThread.setDaemon(true); + + // start thread + lastApiCallTime = System.currentTimeMillis(); + apiCallThread.start(); + } + + public void onRefresh(String draftMessage, + BiConsumer suggestionsUpdater) + { + synchronized(suggestions) + { + setSuggestions(draftMessage, suggestionsUpdater); + } + + this.draftMessage = draftMessage; + this.suggestionsUpdater = suggestionsUpdater; + lastRefreshTime = System.currentTimeMillis(); + } + + private void setSuggestions(String draftMessage, + BiConsumer suggestionsUpdater) + { + SuggestionsBuilder builder = new SuggestionsBuilder(draftMessage, 0); + String inlineSuggestion = null; + + for(String s : suggestions) + if(s.toLowerCase().startsWith(draftMessage.toLowerCase())) + { + builder.suggest(s); + inlineSuggestion = s; + } + + suggestionsUpdater.accept(builder, inlineSuggestion); + } + + private String completeChatMessage(String draftMessage) + { + // get API key and parameters + String apiKey = System.getenv("WURST_OPENAI_KEY"); + String prompt = buildPrompt(draftMessage); + JsonObject params = buildParams(prompt); + System.out.println(params); + + try + { + // send request + WsonObject response = OpenAiUtils.requestCompletion(apiKey, params); + System.out.println(response); + + // read response + return extractCompletion(response); + + }catch(IOException | JsonException e) + { + e.printStackTrace(); + return ""; + } + } + + private String buildPrompt(String draftMessage) + { + String prompt = "=== Minecraft chat log ===\n"; + + List chatHistory = + MC.inGameHud.getChatHud().visibleMessages; + for(int i = chatHistory.size() - 1; i >= 0; i--) + { + // get message + String message = ChatUtils.getAsString(chatHistory.get(i)); + + // filter out Wurst messages so the model won't admit it's hacking + if(message.startsWith(ChatUtils.WURST_PREFIX)) + continue; + + // give non-player messages a sender to avoid confusing the model + if(!message.startsWith("<")) + message = " " + message; + + prompt += message + "\n"; + } + + prompt += "<" + MC.getSession().getUsername() + "> " + draftMessage; + + return prompt; + } + + private JsonObject buildParams(String prompt) + { + JsonObject params = new JsonObject(); + params.addProperty("prompt", prompt); + params.addProperty("stop", "\n<"); + params.addProperty("model", "code-davinci-002"); + params.addProperty("max_tokens", 16); + params.addProperty("temperature", 0.7); + params.addProperty("frequency_penalty", 0.6); + return params; + } + + private String extractCompletion(WsonObject response) throws JsonException + { + // extract completion from response + String completion = + response.getArray("choices").getObject(0).getString("text"); + + // remove newlines + completion = completion.replace("\n", " "); + + // remove leading and trailing whitespace + completion = completion.strip(); + + return completion; + } + + // See ChatInputSuggestorMixin +} diff --git a/src/main/java/net/wurstclient/mixin/ChatInputSuggestorMixin.java b/src/main/java/net/wurstclient/mixin/ChatInputSuggestorMixin.java new file mode 100644 index 00000000..0206a4e1 --- /dev/null +++ b/src/main/java/net/wurstclient/mixin/ChatInputSuggestorMixin.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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 java.util.concurrent.CompletableFuture; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.mojang.brigadier.suggestion.Suggestions; + +import net.minecraft.client.gui.screen.ChatInputSuggestor; +import net.minecraft.client.gui.widget.TextFieldWidget; +import net.wurstclient.WurstClient; +import net.wurstclient.hacks.AutoCompleteHack; + +@Mixin(ChatInputSuggestor.class) +public abstract class ChatInputSuggestorMixin +{ + @Shadow + private TextFieldWidget textField; + @Shadow + private CompletableFuture pendingSuggestions; + + @Inject(at = @At("TAIL"), method = "refresh()V") + private void onRefresh(CallbackInfo ci) + { + AutoCompleteHack autoComplete = + WurstClient.INSTANCE.getHax().autoCompleteHack; + if(!autoComplete.isEnabled()) + return; + + String draftMessage = + textField.getText().substring(0, textField.getCursor()); + autoComplete.onRefresh(draftMessage, (builder, suggestion) -> { + textField.setSuggestion(suggestion); + pendingSuggestions = builder.buildFuture(); + show(false); + }); + } + + @Shadow + public abstract void show(boolean narrateFirstSuggestion); +} diff --git a/src/main/java/net/wurstclient/util/OpenAiUtils.java b/src/main/java/net/wurstclient/util/OpenAiUtils.java new file mode 100644 index 00000000..95abe9e4 --- /dev/null +++ b/src/main/java/net/wurstclient/util/OpenAiUtils.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.util; + +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +import com.google.gson.JsonObject; + +import net.wurstclient.util.json.JsonException; +import net.wurstclient.util.json.JsonUtils; +import net.wurstclient.util.json.WsonObject; + +public enum OpenAiUtils +{ + ; + + public static WsonObject requestCompletion(String apiKey, + JsonObject parameters) throws IOException, JsonException + { + // set up the API request + URL url = new URL("https://api.openai.com/v1/completions"); + HttpURLConnection conn = (HttpURLConnection)url.openConnection(); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Type", "application/json"); + conn.setRequestProperty("Authorization", "Bearer " + apiKey); + + // set the request body + conn.setDoOutput(true); + try(OutputStream os = conn.getOutputStream()) + { + os.write(JsonUtils.GSON.toJson(parameters).getBytes()); + os.flush(); + } + + // parse the response + return JsonUtils.parseConnectionToObject(conn); + } +} diff --git a/src/main/resources/assets/wurst/lang/en_us.json b/src/main/resources/assets/wurst/lang/en_us.json index e47d8ee7..6dec9d16 100644 --- a/src/main/resources/assets/wurst/lang/en_us.json +++ b/src/main/resources/assets/wurst/lang/en_us.json @@ -15,6 +15,7 @@ "description.wurst.setting.arrowdmg.trident_yeet_mode": "When enabled, tridents fly much further. Doesn't seem to affect damage or Riptide.\n\n§c§lWARNING:§r You can easily lose your trident by enabling this option!", "description.wurst.hack.autoarmor": "Manages your armor automatically.", "description.wurst.hack.autobuild": "Builds things automatically.\nPlace a single block to start building.", + "description.wurst.hack.autocomplete": "Auto-completes your chat messages using GPT-3. Requires an OpenAI account with API access.\n\n§c§lPRIVACY WARNING:§r This hack sends your chat history to OpenAI.", "description.wurst.hack.autodrop": "Automatically drops unwanted items.", "description.wurst.hack.autoleave": "Automatically leaves the server when your health is low.", "description.wurst.hack.autolibrarian": "Automatically trains a villager to become a librarian that sells a specific enchanted book. You can set up an entire trading hall in no time by using this hack.", diff --git a/src/main/resources/wurst.accesswidener b/src/main/resources/wurst.accesswidener index 5b503106..d1f5738e 100644 --- a/src/main/resources/wurst.accesswidener +++ b/src/main/resources/wurst.accesswidener @@ -4,4 +4,5 @@ accessible field net/minecraft/client/toast/ToastManager toastQueue Ljava/util/D accessible field net/minecraft/client/network/ClientPlayNetworkHandler session Lnet/minecraft/network/encryption/ClientPlayerSession; accessible field net/minecraft/client/network/ClientPlayNetworkHandler messagePacker Lnet/minecraft/network/message/MessageChain$Packer; accessible field net/minecraft/client/gui/screen/ingame/CreativeInventoryScreen selectedTab Lnet/minecraft/item/ItemGroup; -accessible field net/minecraft/entity/Entity stepHeight F \ No newline at end of file +accessible field net/minecraft/entity/Entity stepHeight F +accessible field net/minecraft/client/gui/hud/ChatHud visibleMessages Ljava/util/List; \ No newline at end of file diff --git a/src/main/resources/wurst.mixins.json b/src/main/resources/wurst.mixins.json index e46d11e3..0bdd327d 100644 --- a/src/main/resources/wurst.mixins.json +++ b/src/main/resources/wurst.mixins.json @@ -16,6 +16,7 @@ "CactusBlockMixin", "CameraMixin", "ChatHudMixin", + "ChatInputSuggestorMixin", "ChatScreenMixin", "ChunkOcclusionGraphBuilderMixin", "ClientConnectionMixin", From 744c8df7047f680ffc743f4bef8a2590ad33f7f8 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 19 Mar 2023 20:10:17 +0100 Subject: [PATCH 037/126] Add Gradle CI workflow --- .github/workflows/gradle.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/gradle.yml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 00000000..3b44597e --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,34 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle + +name: Java CI with Gradle + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + - name: Build with Gradle + uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 + with: + arguments: build From a1765d4f1352678c7a03d98b03d7e546f2db13c6 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 19 Mar 2023 20:13:22 +0100 Subject: [PATCH 038/126] Attempt to fix Gradle CI --- .github/workflows/gradle.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 3b44597e..be48ae63 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -29,6 +29,4 @@ jobs: java-version: '17' distribution: 'temurin' - name: Build with Gradle - uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 - with: - arguments: build + run: ./gradlew build From 41b2a7acf826ddcce00bc56ab205ca0cea2d7628 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 19 Mar 2023 20:15:21 +0100 Subject: [PATCH 039/126] 2nd attempt to fix Gradle CI --- .github/workflows/gradle.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index be48ae63..4b9b463c 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -28,5 +28,7 @@ jobs: with: java-version: '17' distribution: 'temurin' + - name: Grant execute permission for gradlew + run: chmod +x gradlew - name: Build with Gradle run: ./gradlew build From d2c966e97b431eb81e445918064c594a1914ca17 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 19 Mar 2023 20:21:37 +0100 Subject: [PATCH 040/126] Try using gradle-build-action v2 --- .github/workflows/gradle.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 4b9b463c..c393b1fd 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -28,7 +28,7 @@ jobs: with: java-version: '17' distribution: 'temurin' - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: Build with Gradle + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + - name: Execute Gradle build run: ./gradlew build From e7a1f005f8873127927e611ead07332520e81de4 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 19 Mar 2023 20:23:54 +0100 Subject: [PATCH 041/126] Apparently gradle-build-action v2 still needs the permission fix --- .github/workflows/gradle.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index c393b1fd..97e36781 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -28,6 +28,8 @@ jobs: with: java-version: '17' distribution: 'temurin' + - name: Grant execute permission for gradlew + run: chmod +x gradlew - name: Setup Gradle uses: gradle/gradle-build-action@v2 - name: Execute Gradle build From 74ac77fc2642f95f0b1b83f12b531dcb036a3d77 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 21 Mar 2023 02:46:51 +0100 Subject: [PATCH 042/126] Create a separate SuggestionHandler class --- .../wurstclient/hacks/AutoCompleteHack.java | 48 ++++--------- .../hacks/autocomplete/SuggestionHandler.java | 70 +++++++++++++++++++ 2 files changed, 83 insertions(+), 35 deletions(-) create mode 100644 src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java index ea077bc2..1490fad1 100644 --- a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -8,7 +8,6 @@ package net.wurstclient.hacks; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; @@ -22,6 +21,7 @@ import net.wurstclient.SearchTags; import net.wurstclient.events.ChatOutputListener; import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; +import net.wurstclient.hacks.autocomplete.SuggestionHandler; import net.wurstclient.util.ChatUtils; import net.wurstclient.util.OpenAiUtils; import net.wurstclient.util.json.JsonException; @@ -32,12 +32,14 @@ import net.wurstclient.util.json.WsonObject; public final class AutoCompleteHack extends Hack implements ChatOutputListener, UpdateListener { - private final ArrayList suggestions = new ArrayList<>(); + private final SuggestionHandler suggestionHandler = new SuggestionHandler(); + + private String draftMessage; + private BiConsumer suggestionsUpdater; + private Thread apiCallThread; private long lastApiCallTime; private long lastRefreshTime; - private String draftMessage; - private BiConsumer suggestionsUpdater; public AutoCompleteHack() { @@ -66,15 +68,14 @@ public final class AutoCompleteHack extends Hack { EVENTS.remove(ChatOutputListener.class, this); EVENTS.remove(UpdateListener.class, this); + + suggestionHandler.clearSuggestions(); } @Override public void onSentMessage(ChatOutputEvent event) { - synchronized(suggestions) - { - suggestions.clear(); - } + suggestionHandler.clearSuggestions(); } @Override @@ -105,8 +106,7 @@ public final class AutoCompleteHack extends Hack return; // check if we already have a suggestion for the current draft message - if(suggestions.stream().anyMatch( - s -> s.toLowerCase().startsWith(draftMessage.toLowerCase()))) + if(suggestionHandler.hasSuggestionFor(draftMessage)) return; // copy fields to local variables, in case they change @@ -124,11 +124,8 @@ public final class AutoCompleteHack extends Hack return; // apply suggestion - synchronized(suggestions) - { - suggestions.add(draftMessage2 + suggestion); - setSuggestions(draftMessage2, suggestionsUpdater2); - } + suggestionHandler.addSuggestion(suggestion, draftMessage2, + suggestionsUpdater2); }); apiCallThread.setName("AutoComplete API Call"); apiCallThread.setPriority(Thread.MIN_PRIORITY); @@ -142,32 +139,13 @@ public final class AutoCompleteHack extends Hack public void onRefresh(String draftMessage, BiConsumer suggestionsUpdater) { - synchronized(suggestions) - { - setSuggestions(draftMessage, suggestionsUpdater); - } + suggestionHandler.showSuggestions(draftMessage, suggestionsUpdater); this.draftMessage = draftMessage; this.suggestionsUpdater = suggestionsUpdater; lastRefreshTime = System.currentTimeMillis(); } - private void setSuggestions(String draftMessage, - BiConsumer suggestionsUpdater) - { - SuggestionsBuilder builder = new SuggestionsBuilder(draftMessage, 0); - String inlineSuggestion = null; - - for(String s : suggestions) - if(s.toLowerCase().startsWith(draftMessage.toLowerCase())) - { - builder.suggest(s); - inlineSuggestion = s; - } - - suggestionsUpdater.accept(builder, inlineSuggestion); - } - private String completeChatMessage(String draftMessage) { // get API key and parameters diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java b/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java new file mode 100644 index 00000000..a8b2a378 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks.autocomplete; + +import java.util.ArrayList; +import java.util.function.BiConsumer; + +import com.mojang.brigadier.suggestion.SuggestionsBuilder; + +public class SuggestionHandler +{ + private final ArrayList suggestions = new ArrayList<>(); + + public boolean hasSuggestionFor(String draftMessage) + { + synchronized(suggestions) + { + return suggestions.stream().anyMatch( + s -> s.toLowerCase().startsWith(draftMessage.toLowerCase())); + } + } + + public void addSuggestion(String suggestion, String draftMessage, + BiConsumer suggestionsUpdater) + { + synchronized(suggestions) + { + suggestions.add(draftMessage + suggestion); + showSuggestionsImpl(draftMessage, suggestionsUpdater); + } + } + + public void showSuggestions(String draftMessage, + BiConsumer suggestionsUpdater) + { + synchronized(suggestions) + { + showSuggestionsImpl(draftMessage, suggestionsUpdater); + } + } + + private void showSuggestionsImpl(String draftMessage, + BiConsumer suggestionsUpdater) + { + SuggestionsBuilder builder = new SuggestionsBuilder(draftMessage, 0); + String inlineSuggestion = null; + + for(String s : suggestions) + if(s.toLowerCase().startsWith(draftMessage.toLowerCase())) + { + builder.suggest(s); + inlineSuggestion = s; + } + + suggestionsUpdater.accept(builder, inlineSuggestion); + } + + public void clearSuggestions() + { + synchronized(suggestions) + { + suggestions.clear(); + } + } +} From 29df4adabb35a37e9094ec7c8c9577fca0415be7 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 21 Mar 2023 04:15:07 +0100 Subject: [PATCH 043/126] Improve SuggestionHandler - Limit the number of suggestions kept in memory and remove duplicates. - Limit the number of suggestions shown on screen. - Allow it to generate up to 3 suggestions for the same draft. --- .../wurstclient/hacks/AutoCompleteHack.java | 2 +- .../hacks/autocomplete/SuggestionHandler.java | 38 ++++++++++++++----- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java index 1490fad1..e23a3d14 100644 --- a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -106,7 +106,7 @@ public final class AutoCompleteHack extends Hack return; // check if we already have a suggestion for the current draft message - if(suggestionHandler.hasSuggestionFor(draftMessage)) + if(suggestionHandler.hasEnoughSuggestionFor(draftMessage)) return; // copy fields to local variables, in case they change diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java b/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java index a8b2a378..8af6684b 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java @@ -16,12 +16,13 @@ public class SuggestionHandler { private final ArrayList suggestions = new ArrayList<>(); - public boolean hasSuggestionFor(String draftMessage) + public boolean hasEnoughSuggestionFor(String draftMessage) { synchronized(suggestions) { - return suggestions.stream().anyMatch( - s -> s.toLowerCase().startsWith(draftMessage.toLowerCase())); + return suggestions.stream().map(String::toLowerCase) + .filter(s -> s.startsWith(draftMessage.toLowerCase())) + .count() >= 3; } } @@ -30,7 +31,16 @@ public class SuggestionHandler { synchronized(suggestions) { - suggestions.add(draftMessage + suggestion); + String completedMessage = draftMessage + suggestion; + + if(!suggestions.contains(completedMessage)) + { + suggestions.add(completedMessage); + + if(suggestions.size() > 100) + suggestions.remove(0); + } + showSuggestionsImpl(draftMessage, suggestionsUpdater); } } @@ -50,12 +60,20 @@ public class SuggestionHandler SuggestionsBuilder builder = new SuggestionsBuilder(draftMessage, 0); String inlineSuggestion = null; - for(String s : suggestions) - if(s.toLowerCase().startsWith(draftMessage.toLowerCase())) - { - builder.suggest(s); - inlineSuggestion = s; - } + int shownSuggestions = 0; + for(int i = suggestions.size() - 1; i >= 0; i--) + { + String s = suggestions.get(i); + if(!s.toLowerCase().startsWith(draftMessage.toLowerCase())) + continue; + + if(shownSuggestions >= 5) + break; + + builder.suggest(s); + inlineSuggestion = s; + shownSuggestions++; + } suggestionsUpdater.accept(builder, inlineSuggestion); } From bd5e2bd355e8c977098ddeb332eab22417d6a8d9 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 21 Mar 2023 04:44:28 +0100 Subject: [PATCH 044/126] Add SuggestionHandler settings --- .../wurstclient/hacks/AutoCompleteHack.java | 1 + .../hacks/autocomplete/SuggestionHandler.java | 41 +++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java index e23a3d14..f67082f9 100644 --- a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -45,6 +45,7 @@ public final class AutoCompleteHack extends Hack { super("AutoComplete"); setCategory(Category.CHAT); + suggestionHandler.getSettings().forEach(this::addSetting); } @Override diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java b/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java index 8af6684b..f07f9d56 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java @@ -8,21 +8,56 @@ package net.wurstclient.hacks.autocomplete; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.function.BiConsumer; import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import net.wurstclient.settings.Setting; +import net.wurstclient.settings.SliderSetting; +import net.wurstclient.settings.SliderSetting.ValueDisplay; + public class SuggestionHandler { private final ArrayList suggestions = new ArrayList<>(); + private final SliderSetting maxSuggestionPerDraft = new SliderSetting( + "Max suggestions per draft", + "How many suggestions the AI is allowed to generate for the same draft" + + " message.\n\n" + + "\u00a7c\u00a7lWARNING:\u00a7r Higher values can use up a lot of" + + " tokens. Definitely limit this to 1 for expensive models like" + + " GPT-4.", + 3, 1, 10, 1, ValueDisplay.INTEGER); + + private final SliderSetting maxSuggestionsKept = new SliderSetting( + "Max suggestions kept", "Maximum number of suggestions kept in memory.", + 100, 10, 1000, 10, ValueDisplay.INTEGER); + + private final SliderSetting maxSuggestionsShown = new SliderSetting( + "Max suggestions shown", + "How many suggestions can be shown above the chat box.\n\n" + + "If this is set too high, the suggestions will obscure some of" + + " the existing chat messages. How high you can set this depends" + + " on your screen resolution and GUI scale.", + 5, 1, 10, 1, ValueDisplay.INTEGER); + + private final List settings = Arrays.asList(maxSuggestionPerDraft, + maxSuggestionsKept, maxSuggestionsShown); + + public List getSettings() + { + return settings; + } + public boolean hasEnoughSuggestionFor(String draftMessage) { synchronized(suggestions) { return suggestions.stream().map(String::toLowerCase) .filter(s -> s.startsWith(draftMessage.toLowerCase())) - .count() >= 3; + .count() >= maxSuggestionPerDraft.getValue(); } } @@ -37,7 +72,7 @@ public class SuggestionHandler { suggestions.add(completedMessage); - if(suggestions.size() > 100) + if(suggestions.size() > maxSuggestionsKept.getValue()) suggestions.remove(0); } @@ -67,7 +102,7 @@ public class SuggestionHandler if(!s.toLowerCase().startsWith(draftMessage.toLowerCase())) continue; - if(shownSuggestions >= 5) + if(shownSuggestions >= maxSuggestionsShown.getValue()) break; builder.suggest(s); From 183ed966da8328ea2cb020dacd07dfb5a8f86fcd Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 21 Mar 2023 18:15:49 +0100 Subject: [PATCH 045/126] Add a dummy system message to improve prediction quality --- src/main/java/net/wurstclient/hacks/AutoCompleteHack.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java index f67082f9..df2b0690 100644 --- a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -173,8 +173,10 @@ public final class AutoCompleteHack extends Hack private String buildPrompt(String draftMessage) { + // tell the model that it's talking in a Minecraft chat String prompt = "=== Minecraft chat log ===\n"; + // add chat history List chatHistory = MC.inGameHud.getChatHud().visibleMessages; for(int i = chatHistory.size() - 1; i >= 0; i--) @@ -193,6 +195,12 @@ public final class AutoCompleteHack extends Hack prompt += message + "\n"; } + // if the chat history is empty, add a dummy system message + if(chatHistory.isEmpty()) + prompt += " " + MC.getSession().getUsername() + + " joined the game.\n"; + + // add draft message prompt += "<" + MC.getSession().getUsername() + "> " + draftMessage; return prompt; From 37cb0d90b6ebb63f6a17c7d7ae2d41837e1c8917 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 21 Mar 2023 18:21:26 +0100 Subject: [PATCH 046/126] Stop removing leading and trailing whitespace from the output This caused more issues than it fixed. If you type, for example: "How are", the model might respond with " you doing today?". But removing the whitespace would turn that into "How areyou doing today?". --- src/main/java/net/wurstclient/hacks/AutoCompleteHack.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java index df2b0690..23ab7bb1 100644 --- a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -227,9 +227,6 @@ public final class AutoCompleteHack extends Hack // remove newlines completion = completion.replace("\n", " "); - // remove leading and trailing whitespace - completion = completion.strip(); - return completion; } From 9d40c7f603bc5ed6e9386bae30df3cc9c0e06b22 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 22 Mar 2023 18:07:17 +0100 Subject: [PATCH 047/126] Add code style config files --- codestyle/cleanup.xml | 144 ++++++++++++++ codestyle/codetemplates.xml | 12 ++ codestyle/formatter.xml | 365 ++++++++++++++++++++++++++++++++++++ 3 files changed, 521 insertions(+) create mode 100644 codestyle/cleanup.xml create mode 100644 codestyle/codetemplates.xml create mode 100644 codestyle/formatter.xml diff --git a/codestyle/cleanup.xml b/codestyle/cleanup.xml new file mode 100644 index 00000000..70a36773 --- /dev/null +++ b/codestyle/cleanup.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/codestyle/codetemplates.xml b/codestyle/codetemplates.xml new file mode 100644 index 00000000..c5c51512 --- /dev/null +++ b/codestyle/codetemplates.xml @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/codestyle/formatter.xml b/codestyle/formatter.xml new file mode 100644 index 00000000..cec91d99 --- /dev/null +++ b/codestyle/formatter.xml @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 38ce5660f277094ee7ecc8b101499b273862ae91 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 22 Mar 2023 18:10:09 +0100 Subject: [PATCH 048/126] Don't run gradle if no code files have changed --- .github/workflows/gradle.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 97e36781..040e51c3 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -10,8 +10,12 @@ name: Java CI with Gradle on: push: branches: [ "master" ] + paths: + - '**.java' pull_request: branches: [ "master" ] + paths: + - '**.java' permissions: contents: read From 707a3c825178d40ea59265e11ca4b844e81a72ff Mon Sep 17 00:00:00 2001 From: Hassinator00 <109218095+Hassinator00@users.noreply.github.com> Date: Thu, 23 Mar 2023 00:40:49 +0100 Subject: [PATCH 049/126] Merge #806 (Sneak option to turn off when flying) * SneakHack fly detection Added the possibility to fly while Sneak is active * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java * Update SneakHack.java thank you for your reviews, i've removed the useless code and added a setting to enable this feature * Clean up --------- Co-authored-by: Alexander01998 --- .../java/net/wurstclient/hacks/SneakHack.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/wurstclient/hacks/SneakHack.java b/src/main/java/net/wurstclient/hacks/SneakHack.java index cd035a6b..89113747 100644 --- a/src/main/java/net/wurstclient/hacks/SneakHack.java +++ b/src/main/java/net/wurstclient/hacks/SneakHack.java @@ -17,6 +17,7 @@ import net.wurstclient.events.PostMotionListener; import net.wurstclient.events.PreMotionListener; import net.wurstclient.hack.Hack; import net.wurstclient.mixinterface.IKeyBinding; +import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.EnumSetting; @SearchTags({"AutoSneaking"}) @@ -28,11 +29,20 @@ public final class SneakHack extends Hack + "\u00a7lLegit\u00a7r mode actually makes you sneak.", SneakMode.values(), SneakMode.LEGIT); + private final CheckboxSetting offWhileFlying = + new CheckboxSetting("Turn off while flying", + "Automatically disables Legit Sneak while you are flying or using" + + " Freecam, so that it doesn't force you to fly down.\n\n" + + "Keep in mind that this also means you won't be hidden from" + + " other players while doing these things.", + false); + public SneakHack() { super("Sneak"); setCategory(Category.MOVEMENT); addSetting(mode); + addSetting(offWhileFlying); } @Override @@ -75,7 +85,10 @@ public final class SneakHack extends Hack switch(mode.getSelected()) { case LEGIT: - sneakKey.setPressed(true); + if(offWhileFlying.isChecked() && isFlying()) + ((IKeyBinding)sneakKey).resetPressedState(); + else + sneakKey.setPressed(true); break; case PACKET: @@ -96,6 +109,20 @@ public final class SneakHack extends Hack sendSneakPacket(Mode.PRESS_SHIFT_KEY); } + private boolean isFlying() + { + if(MC.player.getAbilities().flying) + return true; + + if(WURST.getHax().flightHack.isEnabled()) + return true; + + if(WURST.getHax().freecamHack.isEnabled()) + return true; + + return false; + } + private void sendSneakPacket(Mode mode) { ClientPlayerEntity player = MC.player; From 31584c63adf8862d2b2b8e88286d01404cd32423 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 23 Mar 2023 18:07:48 +0100 Subject: [PATCH 050/126] Ensure that Tunneller's buffers are never closed twice Probably fixes #807 --- .../java/net/wurstclient/hacks/TunnellerHack.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/TunnellerHack.java b/src/main/java/net/wurstclient/hacks/TunnellerHack.java index 1889edb9..e87c57a6 100644 --- a/src/main/java/net/wurstclient/hacks/TunnellerHack.java +++ b/src/main/java/net/wurstclient/hacks/TunnellerHack.java @@ -157,9 +157,14 @@ public final class TunnellerHack extends Hack currentBlock = null; } - for(VertexBuffer buffer : vertexBuffers) - if(buffer != null) - buffer.close(); + for(int i = 0; i < vertexBuffers.length; i++) + { + if(vertexBuffers[i] == null) + continue; + + vertexBuffers[i].close(); + vertexBuffers[i] = null; + } } @Override @@ -734,7 +739,10 @@ public final class TunnellerHack extends Hack lastTorch = null; nextTorch = BlockPos.ofFloored(MC.player.getPos()); if(vertexBuffers[4] != null) + { vertexBuffers[4].close(); + vertexBuffers[4] = null; + } return false; } From 41d635f07a3a546d4f967ade97e0611ac695554e Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 24 Mar 2023 19:56:57 +0100 Subject: [PATCH 051/126] Clean up --- .../settings/filterlists/AnchorAuraFilterList.java | 7 +++---- .../settings/filterlists/CrystalAuraFilterList.java | 7 +++---- .../wurstclient/settings/filterlists/FollowFilterList.java | 5 ++--- .../settings/filterlists/RemoteViewFilterList.java | 5 ++--- .../wurstclient/settings/filters/FilterAllaysSetting.java | 5 ++--- 5 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/wurstclient/settings/filterlists/AnchorAuraFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/AnchorAuraFilterList.java index 87cd85ad..71a02391 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/AnchorAuraFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/AnchorAuraFilterList.java @@ -51,10 +51,9 @@ public final class AnchorAuraFilterList extends EntityFilterList true)); builder.add(new FilterAllaysSetting( - "Won't target allays when auto-placing anchors." - + damageWarning, - true)); - + "Won't target allays when auto-placing anchors." + damageWarning, + true)); + builder.add(new FilterInvisibleSetting( "Won't target invisible entities when auto-placing anchors." + damageWarning, diff --git a/src/main/java/net/wurstclient/settings/filterlists/CrystalAuraFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/CrystalAuraFilterList.java index 72b05618..754f8d59 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/CrystalAuraFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/CrystalAuraFilterList.java @@ -51,10 +51,9 @@ public final class CrystalAuraFilterList extends EntityFilterList true)); builder.add(new FilterAllaysSetting( - "Won't target allays when auto-placing crystals." - + damageWarning, - true)); - + "Won't target allays when auto-placing crystals." + damageWarning, + true)); + builder.add(new FilterInvisibleSetting( "Won't target invisible entities when auto-placing crystals." + damageWarning, diff --git a/src/main/java/net/wurstclient/settings/filterlists/FollowFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/FollowFilterList.java index 1b3cb599..e6feb129 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/FollowFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/FollowFilterList.java @@ -56,9 +56,8 @@ public final class FollowFilterList extends EntityFilterList builder.add(new FilterGolemsSetting( "Won't follow iron golems, snow golems and shulkers.", true)); - builder.add(new FilterAllaysSetting( - "Won't follow allays.", true)); - + builder.add(new FilterAllaysSetting("Won't follow allays.", true)); + builder.add(new FilterInvisibleSetting( "Won't follow invisible entities.", false)); diff --git a/src/main/java/net/wurstclient/settings/filterlists/RemoteViewFilterList.java b/src/main/java/net/wurstclient/settings/filterlists/RemoteViewFilterList.java index 22a9aeb4..88292145 100644 --- a/src/main/java/net/wurstclient/settings/filterlists/RemoteViewFilterList.java +++ b/src/main/java/net/wurstclient/settings/filterlists/RemoteViewFilterList.java @@ -55,9 +55,8 @@ public final class RemoteViewFilterList extends EntityFilterList builder.add(new FilterGolemsSetting( "Won't view iron golems, snow golems and shulkers.", true)); - builder.add(new FilterAllaysSetting( - "Won't view allays.", true)); - + builder.add(new FilterAllaysSetting("Won't view allays.", true)); + builder.add(new FilterInvisibleSetting("Won't view invisible entities.", false)); diff --git a/src/main/java/net/wurstclient/settings/filters/FilterAllaysSetting.java b/src/main/java/net/wurstclient/settings/filters/FilterAllaysSetting.java index 04053dea..0627467f 100644 --- a/src/main/java/net/wurstclient/settings/filters/FilterAllaysSetting.java +++ b/src/main/java/net/wurstclient/settings/filters/FilterAllaysSetting.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2022 Wurst-Imperium and contributors. + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. * * 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 @@ -25,7 +25,6 @@ public final class FilterAllaysSetting extends EntityFilterCheckbox public static FilterAllaysSetting genericCombat(boolean checked) { - return new FilterAllaysSetting( - "Won't attack allays.", checked); + return new FilterAllaysSetting("Won't attack allays.", checked); } } From 4ea6c3cdf6ce0f97ec2fe38fcbd1d697ffc41a44 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 25 Mar 2023 17:25:35 +0100 Subject: [PATCH 052/126] Run CI on gradle changes --- .github/workflows/gradle.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 040e51c3..4286e229 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -12,10 +12,14 @@ on: branches: [ "master" ] paths: - '**.java' + - 'gradle**' + - 'build.gradle' pull_request: branches: [ "master" ] paths: - '**.java' + - 'gradle**' + - 'build.gradle' permissions: contents: read From 7a55a3a51fdaa3193d3425729bd6edbe683d6505 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 25 Mar 2023 17:26:43 +0100 Subject: [PATCH 053/126] Update Fabric stuff --- build.gradle | 2 +- gradle.properties | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index b8defa59..1c8e16ef 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { } plugins { - id 'fabric-loom' version '1.0-SNAPSHOT' + id 'fabric-loom' version '1.1-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index 762d5bc9..d3201956 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,10 +6,10 @@ org.gradle.jvmargs=-Xmx1G # https://www.curseforge.com/minecraft/mc-mods/fabric-api minecraft_version=1.19.4 yarn_mappings=1.19.4+build.1 -loader_version=0.14.17 +loader_version=0.14.18 #Fabric api -fabric_version=0.75.3+1.19.4 +fabric_version=0.76.0+1.19.4 # Mod Properties mod_version = v7.33-MC1.19.4 From b65b2b0e228770630f1300f7de47a8ab041a5c33 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 26 Mar 2023 16:47:23 +0200 Subject: [PATCH 054/126] Fix some descriptions saying "Format Error: " --- src/main/java/net/wurstclient/WurstClient.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index a4fb577e..2015ea67 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -180,6 +180,12 @@ public enum WurstClient { if(otfs.translationsOtf.getForceEnglish().isChecked()) return IMC.getLanguageManager().getEnglish().get(key); + + // This extra check is necessary because I18n.translate() doesn't + // always return the key when the translation is missing. If the key + // contains a '%', it will return "Format Error: key" instead. + if(!I18n.hasTranslation(key)) + return key; return I18n.translate(key); } From 036e08354c4bcf3cce6bddff7ccee02b16081e9f Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 26 Mar 2023 20:26:09 +0200 Subject: [PATCH 055/126] Improve AutoComplete - Added support for locally hosted models via oobabooga/text-generation-webui - Added some more settings (but many are still missing) - Didn't fix OpenAI mode. It's still hardcoded to the now-deleted code-davinci-002 model. --- .../wurstclient/hacks/AutoCompleteHack.java | 155 +++++++----------- .../hacks/autocomplete/MessageCompleter.java | 145 ++++++++++++++++ .../hacks/autocomplete/ModelSettings.java | 70 ++++++++ .../OobaboogaMessageCompleter.java | 81 +++++++++ .../autocomplete/OpenAiMessageCompleter.java | 16 ++ .../hacks/autocomplete/SuggestionHandler.java | 2 +- .../net/wurstclient/util/OpenAiUtils.java | 46 ------ .../resources/assets/wurst/lang/en_us.json | 2 +- 8 files changed, 372 insertions(+), 145 deletions(-) create mode 100644 src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java create mode 100644 src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java create mode 100644 src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java create mode 100644 src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java delete mode 100644 src/main/java/net/wurstclient/util/OpenAiUtils.java diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java index 23ab7bb1..c09e616c 100644 --- a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -7,33 +7,64 @@ */ package net.wurstclient.hacks; -import java.io.IOException; -import java.util.List; import java.util.function.BiConsumer; -import com.google.gson.JsonObject; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import net.minecraft.client.gui.hud.ChatHudLine; import net.minecraft.client.gui.screen.ChatScreen; import net.wurstclient.Category; import net.wurstclient.SearchTags; import net.wurstclient.events.ChatOutputListener; import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; +import net.wurstclient.hacks.autocomplete.MessageCompleter; +import net.wurstclient.hacks.autocomplete.ModelSettings; +import net.wurstclient.hacks.autocomplete.OobaboogaMessageCompleter; +import net.wurstclient.hacks.autocomplete.OpenAiMessageCompleter; import net.wurstclient.hacks.autocomplete.SuggestionHandler; +import net.wurstclient.settings.EnumSetting; import net.wurstclient.util.ChatUtils; -import net.wurstclient.util.OpenAiUtils; -import net.wurstclient.util.json.JsonException; -import net.wurstclient.util.json.WsonObject; @SearchTags({"auto complete", "Copilot", "ChatGPT", "chat GPT", "GPT-3", "GPT3", "GPT 3", "OpenAI", "open ai", "ChatAI", "chat AI", "ChatBot", "chat bot"}) public final class AutoCompleteHack extends Hack implements ChatOutputListener, UpdateListener { + private final ModelSettings modelSettings = new ModelSettings(); private final SuggestionHandler suggestionHandler = new SuggestionHandler(); + private final EnumSetting apiProvider = new EnumSetting<>( + "API provider", + "\u00a7lOpenAI\u00a7r lets you use models like GPT-3, but requires an" + + " account with API access, costs money to use and sends your chat" + + " history to their servers. The name is a lie - it's closed" + + " source.\n\n" + + "\u00a7loobabooga\u00a7r lets you use models like LLaMA and many" + + " others. It's a true open source alternative to OpenAI that you" + + " can run locally on your own computer. It's free to use and does" + + " not send your chat history to any servers.", + ApiProvider.values(), ApiProvider.OOBABOOGA); + + private enum ApiProvider + { + OPENAI("OpenAI"), + OOBABOOGA("oobabooga"); + + private final String name; + + private ApiProvider(String name) + { + this.name = name; + } + + @Override + public String toString() + { + return name; + } + } + + private MessageCompleter completer; private String draftMessage; private BiConsumer suggestionsUpdater; @@ -45,19 +76,32 @@ public final class AutoCompleteHack extends Hack { super("AutoComplete"); setCategory(Category.CHAT); + + addSetting(apiProvider); + modelSettings.forEach(this::addSetting); suggestionHandler.getSettings().forEach(this::addSetting); } @Override protected void onEnable() { - String apiKey = System.getenv("WURST_OPENAI_KEY"); - if(apiKey == null) + switch(apiProvider.getSelected()) { - ChatUtils.error("API key not found. Please set the" - + " WURST_OPENAI_KEY environment variable and reboot."); - setEnabled(false); - return; + case OPENAI: + String apiKey = System.getenv("WURST_OPENAI_KEY"); + if(apiKey == null) + { + ChatUtils.error("API key not found. Please set the" + + " WURST_OPENAI_KEY environment variable and reboot."); + setEnabled(false); + return; + } + completer = new OpenAiMessageCompleter(modelSettings); + break; + + case OOBABOOGA: + completer = new OobaboogaMessageCompleter(modelSettings); + break; } EVENTS.add(ChatOutputListener.class, this); @@ -120,7 +164,7 @@ public final class AutoCompleteHack extends Hack apiCallThread = new Thread(() -> { // get suggestion - String suggestion = completeChatMessage(draftMessage2); + String suggestion = completer.completeChatMessage(draftMessage2); if(suggestion.isEmpty()) return; @@ -147,88 +191,5 @@ public final class AutoCompleteHack extends Hack lastRefreshTime = System.currentTimeMillis(); } - private String completeChatMessage(String draftMessage) - { - // get API key and parameters - String apiKey = System.getenv("WURST_OPENAI_KEY"); - String prompt = buildPrompt(draftMessage); - JsonObject params = buildParams(prompt); - System.out.println(params); - - try - { - // send request - WsonObject response = OpenAiUtils.requestCompletion(apiKey, params); - System.out.println(response); - - // read response - return extractCompletion(response); - - }catch(IOException | JsonException e) - { - e.printStackTrace(); - return ""; - } - } - - private String buildPrompt(String draftMessage) - { - // tell the model that it's talking in a Minecraft chat - String prompt = "=== Minecraft chat log ===\n"; - - // add chat history - List chatHistory = - MC.inGameHud.getChatHud().visibleMessages; - for(int i = chatHistory.size() - 1; i >= 0; i--) - { - // get message - String message = ChatUtils.getAsString(chatHistory.get(i)); - - // filter out Wurst messages so the model won't admit it's hacking - if(message.startsWith(ChatUtils.WURST_PREFIX)) - continue; - - // give non-player messages a sender to avoid confusing the model - if(!message.startsWith("<")) - message = " " + message; - - prompt += message + "\n"; - } - - // if the chat history is empty, add a dummy system message - if(chatHistory.isEmpty()) - prompt += " " + MC.getSession().getUsername() - + " joined the game.\n"; - - // add draft message - prompt += "<" + MC.getSession().getUsername() + "> " + draftMessage; - - return prompt; - } - - private JsonObject buildParams(String prompt) - { - JsonObject params = new JsonObject(); - params.addProperty("prompt", prompt); - params.addProperty("stop", "\n<"); - params.addProperty("model", "code-davinci-002"); - params.addProperty("max_tokens", 16); - params.addProperty("temperature", 0.7); - params.addProperty("frequency_penalty", 0.6); - return params; - } - - private String extractCompletion(WsonObject response) throws JsonException - { - // extract completion from response - String completion = - response.getArray("choices").getObject(0).getString("text"); - - // remove newlines - completion = completion.replace("\n", " "); - - return completion; - } - // See ChatInputSuggestorMixin } diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java new file mode 100644 index 00000000..d0820427 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks.autocomplete; + +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.List; + +import com.google.gson.JsonObject; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.hud.ChatHudLine; +import net.wurstclient.WurstClient; +import net.wurstclient.util.ChatUtils; +import net.wurstclient.util.json.JsonException; +import net.wurstclient.util.json.JsonUtils; +import net.wurstclient.util.json.WsonObject; + +public abstract class MessageCompleter +{ + protected static final MinecraftClient MC = WurstClient.MC; + + protected final ModelSettings modelSettings; + + public MessageCompleter(ModelSettings modelSettings) + { + this.modelSettings = modelSettings; + } + + public final String completeChatMessage(String draftMessage) + { + // build prompt and parameters + String prompt = buildPrompt(draftMessage); + JsonObject params = buildParams(prompt); + System.out.println(params); + + try + { + // send request + WsonObject response = requestCompletion(params); + System.out.println(response); + + // read response + return extractCompletion(response); + + }catch(IOException | JsonException e) + { + e.printStackTrace(); + return ""; + } + } + + protected String buildPrompt(String draftMessage) + { + // tell the model that it's talking in a Minecraft chat + String prompt = "=== Minecraft chat log ===\n"; + + // add chat history + List chatHistory = + MC.inGameHud.getChatHud().visibleMessages; + for(int i = chatHistory.size() - 1; i >= 0; i--) + { + // get message + String message = ChatUtils.getAsString(chatHistory.get(i)); + + // filter out Wurst messages so the model won't admit it's hacking + if(message.startsWith(ChatUtils.WURST_PREFIX)) + continue; + + // give non-player messages a sender to avoid confusing the model + if(!message.startsWith("<")) + message = " " + message; + + prompt += message + "\n"; + } + + // if the chat history is empty, add a dummy system message + if(chatHistory.isEmpty()) + prompt += " " + MC.getSession().getUsername() + + " joined the game.\n"; + + // add draft message + prompt += "<" + MC.getSession().getUsername() + "> " + draftMessage; + + return prompt; + } + + protected JsonObject buildParams(String prompt) + { + JsonObject params = new JsonObject(); + params.addProperty("prompt", prompt); + params.addProperty("stop", "\n<"); + params.addProperty("model", "code-davinci-002"); + params.addProperty("max_tokens", modelSettings.maxTokens.getValueI()); + params.addProperty("temperature", modelSettings.temperature.getValue()); + params.addProperty("top_p", modelSettings.topP.getValue()); + params.addProperty("presence_penalty", + modelSettings.presencePenalty.getValue()); + params.addProperty("frequency_penalty", + modelSettings.frequencyPenalty.getValue()); + return params; + } + + protected WsonObject requestCompletion(JsonObject parameters) + throws IOException, JsonException + { + // set up the API request + URL url = new URL("https://api.openai.com/v1/completions"); + HttpURLConnection conn = (HttpURLConnection)url.openConnection(); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Type", "application/json"); + conn.setRequestProperty("Authorization", + "Bearer " + System.getenv("WURST_OPENAI_KEY")); + + // set the request body + conn.setDoOutput(true); + try(OutputStream os = conn.getOutputStream()) + { + os.write(JsonUtils.GSON.toJson(parameters).getBytes()); + os.flush(); + } + + // parse the response + return JsonUtils.parseConnectionToObject(conn); + } + + protected String extractCompletion(WsonObject response) throws JsonException + { + // extract completion from response + String completion = + response.getArray("choices").getObject(0).getString("text"); + + // remove newlines + completion = completion.replace("\n", " "); + + return completion; + } +} diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java new file mode 100644 index 00000000..897a5050 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks.autocomplete; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.function.Consumer; + +import net.wurstclient.settings.Setting; +import net.wurstclient.settings.SliderSetting; +import net.wurstclient.settings.SliderSetting.ValueDisplay; + +public final class ModelSettings +{ + public final SliderSetting maxTokens = new SliderSetting("Max tokens", + "The maximum number of tokens that the model can generate.\n\n" + + "Higher values allow the model to predict longer chat messages," + + " but also increase the time it takes to generate predictions.\n\n" + + "The default value of 16 is fine for most use cases.\n\n" + + "When using an API that doesn't support stop sequences (like the" + + " oobabooga web UI), higher values will result in a lot of wasted" + + " time and tokens.", + 16, 1, 100, 1, ValueDisplay.INTEGER); + + public final SliderSetting temperature = new SliderSetting("Temperature", + "Controls the model's creativity and randomness. A higher value will" + + " result in more creative and sometimes nonsensical completions," + + " while a lower value will result in more boring completions.", + 0.7, 0, 2, 0.01, ValueDisplay.DECIMAL); + + public final SliderSetting topP = new SliderSetting("Top P", + "An alternative to temperature. Makes the model less random by only" + + " letting it choose from the most likely tokens.\n\n" + + "A value of 100% disables this feature by letting the model" + + " choose from all tokens.", + 1, 0, 1, 0.01, ValueDisplay.PERCENTAGE); + + public final SliderSetting presencePenalty = + new SliderSetting("Presence penalty", + "Penalty for choosing tokens that already appear in the chat" + + " history.\n\n" + + "Positive values encourage the model to use synonyms and" + + " talk about different topics. Negative values encourage the" + + " model to repeat the same word over and over again.", + 0, -2, 2, 0.01, ValueDisplay.DECIMAL); + + public final SliderSetting frequencyPenalty = + new SliderSetting("Frequency penalty", + "Similar to presence penalty, but based on how often the token" + + " appears in the chat history.\n\n" + + "Positive values encourage the model to use synonyms and" + + " talk about different topics. Negative values encourage the" + + " model to repeat existing chat messages.", + 0.6, -2, 2, 0.01, ValueDisplay.DECIMAL); + + private final List settings = + Collections.unmodifiableList(Arrays.asList(maxTokens, temperature, topP, + presencePenalty, frequencyPenalty)); + + public void forEach(Consumer action) + { + settings.forEach(action); + } +} diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java new file mode 100644 index 00000000..03e7d4b5 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks.autocomplete; + +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +import com.google.gson.JsonObject; + +import net.wurstclient.util.json.JsonException; +import net.wurstclient.util.json.JsonUtils; +import net.wurstclient.util.json.WsonObject; + +public final class OobaboogaMessageCompleter extends MessageCompleter +{ + public OobaboogaMessageCompleter(ModelSettings modelSettings) + { + super(modelSettings); + } + + @Override + protected JsonObject buildParams(String prompt) + { + JsonObject params = new JsonObject(); + params.addProperty("prompt", prompt); + params.addProperty("max_length", modelSettings.maxTokens.getValueI()); + params.addProperty("temperature", modelSettings.temperature.getValue()); + params.addProperty("top_p", modelSettings.topP.getValue()); + return params; + } + + @Override + protected WsonObject requestCompletion(JsonObject parameters) + throws IOException, JsonException + { + // set up the API request + URL url = new URL("http://127.0.0.1:5000/api/v1/generate"); + HttpURLConnection conn = (HttpURLConnection)url.openConnection(); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Type", "application/json"); + + // set the request body + conn.setDoOutput(true); + try(OutputStream os = conn.getOutputStream()) + { + os.write(JsonUtils.GSON.toJson(parameters).getBytes()); + os.flush(); + } + + // parse the response + return JsonUtils.parseConnectionToObject(conn); + } + + @Override + protected String extractCompletion(WsonObject response) throws JsonException + { + // extract completion from response + String completion = + response.getArray("results").getObject(0).getString("text"); + + // remove the extra character at the start + if(!completion.isEmpty()) + completion = completion.substring(1); + + // remove the next message + if(completion.contains("\n<")) + completion = completion.substring(0, completion.indexOf("\n<")); + + // remove newlines + completion = completion.replace("\n", " "); + + return completion; + } +} diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java new file mode 100644 index 00000000..4c670d9d --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks.autocomplete; + +public final class OpenAiMessageCompleter extends MessageCompleter +{ + public OpenAiMessageCompleter(ModelSettings modelSettings) + { + super(modelSettings); + } +} diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java b/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java index f07f9d56..66bed401 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/SuggestionHandler.java @@ -18,7 +18,7 @@ import net.wurstclient.settings.Setting; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; -public class SuggestionHandler +public final class SuggestionHandler { private final ArrayList suggestions = new ArrayList<>(); diff --git a/src/main/java/net/wurstclient/util/OpenAiUtils.java b/src/main/java/net/wurstclient/util/OpenAiUtils.java deleted file mode 100644 index 95abe9e4..00000000 --- a/src/main/java/net/wurstclient/util/OpenAiUtils.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2014-2023 Wurst-Imperium and contributors. - * - * 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.util; - -import java.io.IOException; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; - -import com.google.gson.JsonObject; - -import net.wurstclient.util.json.JsonException; -import net.wurstclient.util.json.JsonUtils; -import net.wurstclient.util.json.WsonObject; - -public enum OpenAiUtils -{ - ; - - public static WsonObject requestCompletion(String apiKey, - JsonObject parameters) throws IOException, JsonException - { - // set up the API request - URL url = new URL("https://api.openai.com/v1/completions"); - HttpURLConnection conn = (HttpURLConnection)url.openConnection(); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-Type", "application/json"); - conn.setRequestProperty("Authorization", "Bearer " + apiKey); - - // set the request body - conn.setDoOutput(true); - try(OutputStream os = conn.getOutputStream()) - { - os.write(JsonUtils.GSON.toJson(parameters).getBytes()); - os.flush(); - } - - // parse the response - return JsonUtils.parseConnectionToObject(conn); - } -} diff --git a/src/main/resources/assets/wurst/lang/en_us.json b/src/main/resources/assets/wurst/lang/en_us.json index 6dec9d16..3a7c630d 100644 --- a/src/main/resources/assets/wurst/lang/en_us.json +++ b/src/main/resources/assets/wurst/lang/en_us.json @@ -15,7 +15,7 @@ "description.wurst.setting.arrowdmg.trident_yeet_mode": "When enabled, tridents fly much further. Doesn't seem to affect damage or Riptide.\n\n§c§lWARNING:§r You can easily lose your trident by enabling this option!", "description.wurst.hack.autoarmor": "Manages your armor automatically.", "description.wurst.hack.autobuild": "Builds things automatically.\nPlace a single block to start building.", - "description.wurst.hack.autocomplete": "Auto-completes your chat messages using GPT-3. Requires an OpenAI account with API access.\n\n§c§lPRIVACY WARNING:§r This hack sends your chat history to OpenAI.", + "description.wurst.hack.autocomplete": "Auto-completes your chat messages using large language models. Requires either an OpenAI account with API access or a locally installed language model with the oobabooga web UI.", "description.wurst.hack.autodrop": "Automatically drops unwanted items.", "description.wurst.hack.autoleave": "Automatically leaves the server when your health is low.", "description.wurst.hack.autolibrarian": "Automatically trains a villager to become a librarian that sells a specific enchanted book. You can set up an entire trading hall in no time by using this hack.", From 5e571aaa2db9d0ce6092876450fb10070425de96 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 2 Apr 2023 19:47:42 +0200 Subject: [PATCH 056/126] Refactor AutoComplate.onEnable() --- .../wurstclient/hacks/AutoCompleteHack.java | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java index c09e616c..6a6000a5 100644 --- a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -85,23 +85,19 @@ public final class AutoCompleteHack extends Hack @Override protected void onEnable() { - switch(apiProvider.getSelected()) + completer = switch(apiProvider.getSelected()) { - case OPENAI: - String apiKey = System.getenv("WURST_OPENAI_KEY"); - if(apiKey == null) - { - ChatUtils.error("API key not found. Please set the" - + " WURST_OPENAI_KEY environment variable and reboot."); - setEnabled(false); - return; - } - completer = new OpenAiMessageCompleter(modelSettings); - break; - - case OOBABOOGA: - completer = new OobaboogaMessageCompleter(modelSettings); - break; + case OPENAI -> new OpenAiMessageCompleter(modelSettings); + case OOBABOOGA -> new OobaboogaMessageCompleter(modelSettings); + }; + + if(completer instanceof OpenAiMessageCompleter + && System.getenv("WURST_OPENAI_KEY") == null) + { + ChatUtils.error("API key not found. Please set the" + + " WURST_OPENAI_KEY environment variable and reboot."); + setEnabled(false); + return; } EVENTS.add(ChatOutputListener.class, this); From f379c602a921a9d0a36cb39cd765eac7ac5f4dd9 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 2 Apr 2023 20:27:51 +0200 Subject: [PATCH 057/126] Move API provider setting to a separate class --- .../wurstclient/hacks/AutoCompleteHack.java | 34 +------------- .../autocomplete/ApiProviderSetting.java | 47 +++++++++++++++++++ 2 files changed, 49 insertions(+), 32 deletions(-) create mode 100644 src/main/java/net/wurstclient/hacks/autocomplete/ApiProviderSetting.java diff --git a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java index 6a6000a5..32e7b309 100644 --- a/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoCompleteHack.java @@ -17,12 +17,12 @@ import net.wurstclient.SearchTags; import net.wurstclient.events.ChatOutputListener; import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; +import net.wurstclient.hacks.autocomplete.ApiProviderSetting; import net.wurstclient.hacks.autocomplete.MessageCompleter; import net.wurstclient.hacks.autocomplete.ModelSettings; import net.wurstclient.hacks.autocomplete.OobaboogaMessageCompleter; import net.wurstclient.hacks.autocomplete.OpenAiMessageCompleter; import net.wurstclient.hacks.autocomplete.SuggestionHandler; -import net.wurstclient.settings.EnumSetting; import net.wurstclient.util.ChatUtils; @SearchTags({"auto complete", "Copilot", "ChatGPT", "chat GPT", "GPT-3", "GPT3", @@ -32,37 +32,7 @@ public final class AutoCompleteHack extends Hack { private final ModelSettings modelSettings = new ModelSettings(); private final SuggestionHandler suggestionHandler = new SuggestionHandler(); - - private final EnumSetting apiProvider = new EnumSetting<>( - "API provider", - "\u00a7lOpenAI\u00a7r lets you use models like GPT-3, but requires an" - + " account with API access, costs money to use and sends your chat" - + " history to their servers. The name is a lie - it's closed" - + " source.\n\n" - + "\u00a7loobabooga\u00a7r lets you use models like LLaMA and many" - + " others. It's a true open source alternative to OpenAI that you" - + " can run locally on your own computer. It's free to use and does" - + " not send your chat history to any servers.", - ApiProvider.values(), ApiProvider.OOBABOOGA); - - private enum ApiProvider - { - OPENAI("OpenAI"), - OOBABOOGA("oobabooga"); - - private final String name; - - private ApiProvider(String name) - { - this.name = name; - } - - @Override - public String toString() - { - return name; - } - } + private final ApiProviderSetting apiProvider = new ApiProviderSetting(); private MessageCompleter completer; private String draftMessage; diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ApiProviderSetting.java b/src/main/java/net/wurstclient/hacks/autocomplete/ApiProviderSetting.java new file mode 100644 index 00000000..940629a2 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ApiProviderSetting.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks.autocomplete; + +import net.wurstclient.settings.EnumSetting; + +public final class ApiProviderSetting + extends EnumSetting +{ + public ApiProviderSetting() + { + super("API provider", + "\u00a7lOpenAI\u00a7r lets you use models like GPT-3, but requires an" + + " account with API access, costs money to use and sends your chat" + + " history to their servers. The name is a lie - it's closed" + + " source.\n\n" + + "\u00a7loobabooga\u00a7r lets you use models like LLaMA and many" + + " others. It's a true open source alternative to OpenAI that you" + + " can run locally on your own computer. It's free to use and does" + + " not send your chat history to any servers.", + ApiProvider.values(), ApiProvider.OOBABOOGA); + } + + public enum ApiProvider + { + OPENAI("OpenAI"), + OOBABOOGA("oobabooga"); + + private final String name; + + private ApiProvider(String name) + { + this.name = name; + } + + @Override + public String toString() + { + return name; + } + } +} From 8fa57054207a38d042f18c51bd50b08b95632c1f Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 3 Apr 2023 21:28:21 +0200 Subject: [PATCH 058/126] Fix gray text on some Navigator screens --- .../java/net/wurstclient/navigator/NavigatorFeatureScreen.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java b/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java index a6f9a6bf..013c169e 100644 --- a/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java +++ b/src/main/java/net/wurstclient/navigator/NavigatorFeatureScreen.java @@ -471,6 +471,7 @@ public final class NavigatorFeatureScreen extends NavigatorScreen } // text + RenderSystem.setShaderColor(1, 1, 1, 1); int textY = bgy1 + scroll + 2; for(String line : text.split("\n")) { From 5f4645f9a7787d0be3fe751a5432abede3a007b9 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 3 Apr 2023 22:36:45 +0200 Subject: [PATCH 059/126] Add improved Freecam teleporting Inspired by https://www.reddit.com/r/WurstClient/comments/128ubvx/how_to_use_tp_more_effectively/ --- .../java/net/wurstclient/commands/TpCmd.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/commands/TpCmd.java b/src/main/java/net/wurstclient/commands/TpCmd.java index f84f31a8..a99e7a72 100644 --- a/src/main/java/net/wurstclient/commands/TpCmd.java +++ b/src/main/java/net/wurstclient/commands/TpCmd.java @@ -10,22 +10,31 @@ package net.wurstclient.commands; import java.util.Comparator; import java.util.stream.StreamSupport; -import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.util.math.BlockPos; import net.wurstclient.command.CmdError; import net.wurstclient.command.CmdException; import net.wurstclient.command.CmdSyntaxError; import net.wurstclient.command.Command; +import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.util.FakePlayerEntity; import net.wurstclient.util.MathUtils; public final class TpCmd extends Command { + private final CheckboxSetting disableFreecam = + new CheckboxSetting("Disable Freecam", + "Disables Freecam just before teleporting.\n\n" + + "This allows you to teleport your actual character to your" + + " Freecam position by typing \".tp ~ ~ ~\" while Freecam is" + + " enabled.", + true); + public TpCmd() { super("tp", "Teleports you up to 10 blocks away.", ".tp ", ".tp "); + addSetting(disableFreecam); } @Override @@ -33,8 +42,10 @@ public final class TpCmd extends Command { BlockPos pos = argsToPos(args); - ClientPlayerEntity player = MC.player; - player.setPosition(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5); + if(disableFreecam.isChecked() && WURST.getHax().freecamHack.isEnabled()) + WURST.getHax().freecamHack.setEnabled(false); + + MC.player.setPosition(pos.getX() + 0.5, pos.getY(), pos.getZ() + 0.5); } private BlockPos argsToPos(String... args) throws CmdException From f09d6e093426364899fa81ce773eea7c75cd0163 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 4 Apr 2023 18:12:47 +0200 Subject: [PATCH 060/126] Fix BlockComponents not rendering correctly --- .../wurstclient/clickgui/components/BlockComponent.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/main/java/net/wurstclient/clickgui/components/BlockComponent.java b/src/main/java/net/wurstclient/clickgui/components/BlockComponent.java index 65432bbb..60b20f45 100644 --- a/src/main/java/net/wurstclient/clickgui/components/BlockComponent.java +++ b/src/main/java/net/wurstclient/clickgui/components/BlockComponent.java @@ -25,7 +25,6 @@ import net.minecraft.item.ItemStack; import net.wurstclient.WurstClient; import net.wurstclient.clickgui.ClickGui; import net.wurstclient.clickgui.Component; -import net.wurstclient.clickgui.Window; import net.wurstclient.clickgui.screens.EditBlockScreen; import net.wurstclient.settings.BlockSetting; import net.wurstclient.util.RenderUtils; @@ -121,14 +120,7 @@ public final class BlockComponent extends Component String text = setting.getName() + ":"; fr.draw(matrixStack, text, x1, y1 + 2, txtColor); - MatrixStack modelViewStack = RenderSystem.getModelViewStack(); - modelViewStack.push(); - Window parent = getParent(); - modelViewStack.translate(parent.getX(), - parent.getY() + 13 + parent.getScrollOffset(), 0); RenderUtils.drawItem(matrixStack, stack, x3, y1, true); - modelViewStack.pop(); - RenderSystem.applyModelViewMatrix(); GL11.glEnable(GL11.GL_BLEND); } From c27fb79d258f7801ca3a7e100e994b55b6bb6445 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 4 Apr 2023 20:40:41 +0200 Subject: [PATCH 061/126] Move OpenAI-specific methods to OpenAiMessageCompleter --- .../hacks/autocomplete/MessageCompleter.java | 57 ++-------------- .../autocomplete/OpenAiMessageCompleter.java | 65 +++++++++++++++++++ 2 files changed, 70 insertions(+), 52 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java index d0820427..9da3a433 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java @@ -8,9 +8,6 @@ package net.wurstclient.hacks.autocomplete; import java.io.IOException; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; import java.util.List; import com.google.gson.JsonObject; @@ -20,7 +17,6 @@ import net.minecraft.client.gui.hud.ChatHudLine; import net.wurstclient.WurstClient; import net.wurstclient.util.ChatUtils; import net.wurstclient.util.json.JsonException; -import net.wurstclient.util.json.JsonUtils; import net.wurstclient.util.json.WsonObject; public abstract class MessageCompleter @@ -92,54 +88,11 @@ public abstract class MessageCompleter return prompt; } - protected JsonObject buildParams(String prompt) - { - JsonObject params = new JsonObject(); - params.addProperty("prompt", prompt); - params.addProperty("stop", "\n<"); - params.addProperty("model", "code-davinci-002"); - params.addProperty("max_tokens", modelSettings.maxTokens.getValueI()); - params.addProperty("temperature", modelSettings.temperature.getValue()); - params.addProperty("top_p", modelSettings.topP.getValue()); - params.addProperty("presence_penalty", - modelSettings.presencePenalty.getValue()); - params.addProperty("frequency_penalty", - modelSettings.frequencyPenalty.getValue()); - return params; - } + protected abstract JsonObject buildParams(String prompt); - protected WsonObject requestCompletion(JsonObject parameters) - throws IOException, JsonException - { - // set up the API request - URL url = new URL("https://api.openai.com/v1/completions"); - HttpURLConnection conn = (HttpURLConnection)url.openConnection(); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-Type", "application/json"); - conn.setRequestProperty("Authorization", - "Bearer " + System.getenv("WURST_OPENAI_KEY")); - - // set the request body - conn.setDoOutput(true); - try(OutputStream os = conn.getOutputStream()) - { - os.write(JsonUtils.GSON.toJson(parameters).getBytes()); - os.flush(); - } - - // parse the response - return JsonUtils.parseConnectionToObject(conn); - } + protected abstract WsonObject requestCompletion(JsonObject parameters) + throws IOException, JsonException; - protected String extractCompletion(WsonObject response) throws JsonException - { - // extract completion from response - String completion = - response.getArray("choices").getObject(0).getString("text"); - - // remove newlines - completion = completion.replace("\n", " "); - - return completion; - } + protected abstract String extractCompletion(WsonObject response) + throws JsonException; } diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java index 4c670d9d..81178ca1 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java @@ -7,10 +7,75 @@ */ package net.wurstclient.hacks.autocomplete; +import java.io.IOException; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +import com.google.gson.JsonObject; + +import net.wurstclient.util.json.JsonException; +import net.wurstclient.util.json.JsonUtils; +import net.wurstclient.util.json.WsonObject; + public final class OpenAiMessageCompleter extends MessageCompleter { public OpenAiMessageCompleter(ModelSettings modelSettings) { super(modelSettings); } + + @Override + protected JsonObject buildParams(String prompt) + { + JsonObject params = new JsonObject(); + params.addProperty("prompt", prompt); + params.addProperty("stop", "\n<"); + params.addProperty("model", "code-davinci-002"); + params.addProperty("max_tokens", modelSettings.maxTokens.getValueI()); + params.addProperty("temperature", modelSettings.temperature.getValue()); + params.addProperty("top_p", modelSettings.topP.getValue()); + params.addProperty("presence_penalty", + modelSettings.presencePenalty.getValue()); + params.addProperty("frequency_penalty", + modelSettings.frequencyPenalty.getValue()); + return params; + } + + @Override + protected WsonObject requestCompletion(JsonObject parameters) + throws IOException, JsonException + { + // set up the API request + URL url = new URL("https://api.openai.com/v1/completions"); + HttpURLConnection conn = (HttpURLConnection)url.openConnection(); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Type", "application/json"); + conn.setRequestProperty("Authorization", + "Bearer " + System.getenv("WURST_OPENAI_KEY")); + + // set the request body + conn.setDoOutput(true); + try(OutputStream os = conn.getOutputStream()) + { + os.write(JsonUtils.GSON.toJson(parameters).getBytes()); + os.flush(); + } + + // parse the response + return JsonUtils.parseConnectionToObject(conn); + } + + @Override + protected String extractCompletion(WsonObject response) throws JsonException + { + // extract completion from response + String completion = + response.getArray("choices").getObject(0).getString("text"); + + // remove newlines + completion = completion.replace("\n", " "); + + return completion; + } } From 0478aa4578a613fb912c1f463795d6d08e90d7c9 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 11 Apr 2023 18:15:15 +0200 Subject: [PATCH 062/126] Add oobabooga's repetition penalties --- .../hacks/autocomplete/ModelSettings.java | 28 +++++++++++++++---- .../OobaboogaMessageCompleter.java | 4 +++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java index 897a5050..39a5200c 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java @@ -47,7 +47,8 @@ public final class ModelSettings + " history.\n\n" + "Positive values encourage the model to use synonyms and" + " talk about different topics. Negative values encourage the" - + " model to repeat the same word over and over again.", + + " model to repeat the same word over and over again.\n\n" + + "Only works with OpenAI models.", 0, -2, 2, 0.01, ValueDisplay.DECIMAL); public final SliderSetting frequencyPenalty = @@ -56,12 +57,29 @@ public final class ModelSettings + " appears in the chat history.\n\n" + "Positive values encourage the model to use synonyms and" + " talk about different topics. Negative values encourage the" - + " model to repeat existing chat messages.", + + " model to repeat existing chat messages.\n\n" + + "Only works with OpenAI models.", 0.6, -2, 2, 0.01, ValueDisplay.DECIMAL); - private final List settings = - Collections.unmodifiableList(Arrays.asList(maxTokens, temperature, topP, - presencePenalty, frequencyPenalty)); + public final SliderSetting repetitionPenalty = + new SliderSetting("Repetition penalty", + "Similar to presence penalty, but uses a different algorithm.\n\n" + + "1.0 means no penalty, negative values are not possible and" + + " 1.5 is the maximum value.\n\n" + + "Only works with the oobabooga web UI.", + 1, 1, 1.5, 0.01, ValueDisplay.DECIMAL); + + public final SliderSetting encoderRepetitionPenalty = + new SliderSetting("Encoder repetition penalty", + "Similar to frequency penalty, but uses a different algorithm.\n\n" + + "1.0 means no penalty, 0.8 behaves like a negative value and" + + " 1.5 is the maximum value.\n\n" + + "Only works with the oobabooga web UI.", + 1, 0.8, 1.5, 0.01, ValueDisplay.DECIMAL); + + private final List settings = Collections.unmodifiableList( + Arrays.asList(maxTokens, temperature, topP, presencePenalty, + frequencyPenalty, repetitionPenalty, encoderRepetitionPenalty)); public void forEach(Consumer action) { diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java index 03e7d4b5..1608cc9f 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java @@ -33,6 +33,10 @@ public final class OobaboogaMessageCompleter extends MessageCompleter params.addProperty("max_length", modelSettings.maxTokens.getValueI()); params.addProperty("temperature", modelSettings.temperature.getValue()); params.addProperty("top_p", modelSettings.topP.getValue()); + params.addProperty("repetition_penalty", + modelSettings.repetitionPenalty.getValue()); + params.addProperty("encoder_repetition_penalty", + modelSettings.encoderRepetitionPenalty.getValue()); return params; } From 8d23f6c6b11b5f17d524d7f08983d7424d3ae264 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 11 Apr 2023 21:36:00 +0200 Subject: [PATCH 063/126] Add a setting to choose different OpenAI models --- .../hacks/autocomplete/ModelSettings.java | 50 +++++++++++++++++-- .../autocomplete/OpenAiMessageCompleter.java | 35 +++++++++++-- 2 files changed, 77 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java index 39a5200c..f79ce64b 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java @@ -12,12 +12,55 @@ import java.util.Collections; import java.util.List; import java.util.function.Consumer; +import net.wurstclient.settings.EnumSetting; import net.wurstclient.settings.Setting; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; public final class ModelSettings { + public final EnumSetting openAiModel = new EnumSetting<>( + "OpenAI model", + "The model to use for OpenAI API calls.\n\n" + + "\u00a7lText-Davinci-003\u00a7r (better known as GPT-3) is an" + + " older model that's less censored than ChatGPT, but it's also" + + " 10x more expensive to use.\n\n" + + "\u00a7lGPT-3.5-Turbo\u00a7r (better known as ChatGPT) is" + + " recommended for most use cases, as it's relatively cheap and" + + " powerful.\n\n" + + "\u00a7lGPT-4\u00a7r is more powerful, but only works if OpenAI" + + " has chosen you to be a beta tester. It can be anywhere from" + + " 15x to 60x more expensive than ChatGPT. Probably not worth it.", + OpenAiModel.values(), OpenAiModel.GPT_3_5_TURBO); + + public enum OpenAiModel + { + TEXT_DAVINCI_003("text-davinci-003", false), + GPT_3_5_TURBO("gpt-3.5-turbo", true), + GPT_4("gpt-4", true), + GPT_4_32K("gpt-4-32k", true); + + private final String name; + private final boolean chat; + + private OpenAiModel(String name, boolean chat) + { + this.name = name; + this.chat = chat; + } + + @Override + public String toString() + { + return name; + } + + public boolean isChatModel() + { + return chat; + } + } + public final SliderSetting maxTokens = new SliderSetting("Max tokens", "The maximum number of tokens that the model can generate.\n\n" + "Higher values allow the model to predict longer chat messages," @@ -77,9 +120,10 @@ public final class ModelSettings + "Only works with the oobabooga web UI.", 1, 0.8, 1.5, 0.01, ValueDisplay.DECIMAL); - private final List settings = Collections.unmodifiableList( - Arrays.asList(maxTokens, temperature, topP, presencePenalty, - frequencyPenalty, repetitionPenalty, encoderRepetitionPenalty)); + private final List settings = + Collections.unmodifiableList(Arrays.asList(openAiModel, maxTokens, + temperature, topP, presencePenalty, frequencyPenalty, + repetitionPenalty, encoderRepetitionPenalty)); public void forEach(Consumer action) { diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java index 81178ca1..28f1dec2 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java @@ -12,6 +12,7 @@ import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; +import com.google.gson.JsonArray; import com.google.gson.JsonObject; import net.wurstclient.util.json.JsonException; @@ -28,10 +29,11 @@ public final class OpenAiMessageCompleter extends MessageCompleter @Override protected JsonObject buildParams(String prompt) { + // build the request parameters JsonObject params = new JsonObject(); - params.addProperty("prompt", prompt); params.addProperty("stop", "\n<"); - params.addProperty("model", "code-davinci-002"); + params.addProperty("model", + "" + modelSettings.openAiModel.getSelected()); params.addProperty("max_tokens", modelSettings.maxTokens.getValueI()); params.addProperty("temperature", modelSettings.temperature.getValue()); params.addProperty("top_p", modelSettings.topP.getValue()); @@ -39,6 +41,20 @@ public final class OpenAiMessageCompleter extends MessageCompleter modelSettings.presencePenalty.getValue()); params.addProperty("frequency_penalty", modelSettings.frequencyPenalty.getValue()); + + // add the prompt, depending on the model + if(modelSettings.openAiModel.getSelected().isChatModel()) + { + JsonArray messages = new JsonArray(); + JsonObject promptMessage = new JsonObject(); + promptMessage.addProperty("role", "user"); + promptMessage.addProperty("content", prompt); + messages.add(promptMessage); + params.add("messages", messages); + + }else + params.addProperty("prompt", prompt); + return params; } @@ -46,8 +62,12 @@ public final class OpenAiMessageCompleter extends MessageCompleter protected WsonObject requestCompletion(JsonObject parameters) throws IOException, JsonException { + // get the API URL + URL url = modelSettings.openAiModel.getSelected().isChatModel() + ? new URL("https://api.openai.com/v1/chat/completions") + : new URL("https://api.openai.com/v1/completions"); + // set up the API request - URL url = new URL("https://api.openai.com/v1/completions"); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); @@ -70,8 +90,13 @@ public final class OpenAiMessageCompleter extends MessageCompleter protected String extractCompletion(WsonObject response) throws JsonException { // extract completion from response - String completion = - response.getArray("choices").getObject(0).getString("text"); + String completion; + if(modelSettings.openAiModel.getSelected().isChatModel()) + completion = response.getArray("choices").getObject(0) + .getObject("message").getString("content"); + else + completion = + response.getArray("choices").getObject(0).getString("text"); // remove newlines completion = completion.replace("\n", " "); From 3822722d8e8ae6d8df65fae4f3b97685b178d991 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 12 Apr 2023 01:26:00 +0200 Subject: [PATCH 064/126] Change default stop sequence to line break & add an option to change it back --- .../hacks/autocomplete/ModelSettings.java | 42 ++++++++++++++++++- .../OobaboogaMessageCompleter.java | 7 +++- .../autocomplete/OpenAiMessageCompleter.java | 3 +- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java index f79ce64b..a02fe604 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java @@ -120,10 +120,50 @@ public final class ModelSettings + "Only works with the oobabooga web UI.", 1, 0.8, 1.5, 0.01, ValueDisplay.DECIMAL); + public final EnumSetting stopSequence = new EnumSetting<>( + "Stop sequence", + "Controls how AutoComplete detects the end of a chat message.\n\n" + + "\u00a7lLine Break\u00a7r is the default value and is recommended" + + " for most language models.\n\n" + + "\u00a7lNext Message\u00a7r works better with certain" + + " code-optimized language models, which have a tendency to insert" + + " line breaks in the middle of a chat message.\n\n" + + "\u00a7lNOTE:\u00a7r Due to a limitation in the oobabooga API, the" + + " stop sequence doesn't properly stop locally installed models." + + " Instead, it waits for the model to finish and then cuts off" + + " the rest of the text.", + StopSequence.values(), StopSequence.LINE_BREAK); + + public enum StopSequence + { + LINE_BREAK("Line Break", "\n"), + NEXT_MESSAGE("Next Message", "\n<"); + + private final String name; + private final String sequence; + + private StopSequence(String name, String sequence) + { + this.name = name; + this.sequence = sequence; + } + + public String getSequence() + { + return sequence; + } + + @Override + public String toString() + { + return name; + } + } + private final List settings = Collections.unmodifiableList(Arrays.asList(openAiModel, maxTokens, temperature, topP, presencePenalty, frequencyPenalty, - repetitionPenalty, encoderRepetitionPenalty)); + repetitionPenalty, encoderRepetitionPenalty, stopSequence)); public void forEach(Consumer action) { diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java index 1608cc9f..e871a73c 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java @@ -74,8 +74,11 @@ public final class OobaboogaMessageCompleter extends MessageCompleter completion = completion.substring(1); // remove the next message - if(completion.contains("\n<")) - completion = completion.substring(0, completion.indexOf("\n<")); + String stopSequence = + modelSettings.stopSequence.getSelected().getSequence(); + if(completion.contains(stopSequence)) + completion = + completion.substring(0, completion.indexOf(stopSequence)); // remove newlines completion = completion.replace("\n", " "); diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java index 28f1dec2..30aadd87 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OpenAiMessageCompleter.java @@ -31,7 +31,8 @@ public final class OpenAiMessageCompleter extends MessageCompleter { // build the request parameters JsonObject params = new JsonObject(); - params.addProperty("stop", "\n<"); + params.addProperty("stop", + modelSettings.stopSequence.getSelected().getSequence()); params.addProperty("model", "" + modelSettings.openAiModel.getSelected()); params.addProperty("max_tokens", modelSettings.maxTokens.getValueI()); From 12ce7086eda817990c1f0d4a885b0997524111a7 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 15 Apr 2023 02:14:00 +0200 Subject: [PATCH 065/126] Prevent windows from going completely out of bounds This change doesn't prevent you from moving windows slightly out of bounds, as long as at least one pixel of the title bar is still on the screen. That way, you can always grab the title bar and use it to drag the window somewhere else. Also, I've made sure that temporarily resizing the window or changing the GUI scale doesn't ruin your ClickGUI layout. The windows only move permanently to their new position if you drag them around, otherwise they move back to their original position once the window is big enough again. --- .../net/wurstclient/clickgui/ClickGui.java | 4 +- .../java/net/wurstclient/clickgui/Window.java | 48 ++++++++++++++++++- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/clickgui/ClickGui.java b/src/main/java/net/wurstclient/clickgui/ClickGui.java index 0b8dff24..ca5c82bc 100644 --- a/src/main/java/net/wurstclient/clickgui/ClickGui.java +++ b/src/main/java/net/wurstclient/clickgui/ClickGui.java @@ -179,8 +179,8 @@ public final class ClickGui continue; JsonObject jsonWindow = new JsonObject(); - jsonWindow.addProperty("x", window.getX()); - jsonWindow.addProperty("y", window.getY()); + jsonWindow.addProperty("x", window.getActualX()); + jsonWindow.addProperty("y", window.getActualY()); jsonWindow.addProperty("minimized", window.isMinimized()); jsonWindow.addProperty("pinned", window.isPinned()); json.add(window.getTitle(), jsonWindow); diff --git a/src/main/java/net/wurstclient/clickgui/Window.java b/src/main/java/net/wurstclient/clickgui/Window.java index b05d0a36..99f499ee 100644 --- a/src/main/java/net/wurstclient/clickgui/Window.java +++ b/src/main/java/net/wurstclient/clickgui/Window.java @@ -62,7 +62,29 @@ public class Window this.title = title; } + /** + * Returns the X position of the window, adjusted to fit inside the screen. + */ public final int getX() + { + // prevent window from going off the right side of the screen + net.minecraft.client.util.Window mcWindow = WurstClient.MC.getWindow(); + if(x > mcWindow.getScaledWidth() - 1) + return mcWindow.getScaledWidth() - 1; + + // prevent window from going off the left side of the screen + if(x <= -width) + return -width + 1; + + return x; + } + + /** + * Returns the actual X position of the window, without any adjustments. + * This should only be used for saving the window's position to the config + * file. + */ + public final int getActualX() { return x; } @@ -72,7 +94,29 @@ public class Window this.x = x; } + /** + * Returns the Y position of the window, adjusted to fit inside the screen. + */ public final int getY() + { + // prevent window from going off the bottom of the screen + net.minecraft.client.util.Window mcWindow = WurstClient.MC.getWindow(); + if(y > mcWindow.getScaledHeight() - 1) + return mcWindow.getScaledHeight() - 1; + + // prevent window from going off the top of the screen + if(y <= -12) + return -12; + + return y; + } + + /** + * Returns the actual Y position of the window, without any adjustments. + * This should only be used for saving the window's position to the config + * file. + */ + public final int getActualY() { return y; } @@ -226,8 +270,8 @@ public class Window public final void startDragging(int mouseX, int mouseY) { dragging = true; - dragOffsetX = x - mouseX; - dragOffsetY = y - mouseY; + dragOffsetX = getX() - mouseX; + dragOffsetY = getY() - mouseY; } public final void dragTo(int mouseX, int mouseY) From 6e9b5f1e3b4490536ba2e0030570a5f5ccfe52aa Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 23 Apr 2023 19:22:43 +0200 Subject: [PATCH 066/126] Reset colors after rendering Excavator Fixes #812 --- src/main/java/net/wurstclient/hacks/ExcavatorHack.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index 973d7a95..18bdeb03 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -321,6 +321,7 @@ public final class ExcavatorHack extends Hack GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_LINE_SMOOTH); + RenderSystem.setShaderColor(1, 1, 1, 1); } @Override @@ -370,6 +371,7 @@ public final class ExcavatorHack extends Hack // GL resets GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_BLEND); + RenderSystem.setShaderColor(1, 1, 1, 1); } public void enableWithArea(BlockPos pos1, BlockPos pos2) From 46b19a47a282d13283cd80118b6d8b11575b42e9 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 24 Apr 2023 11:00:11 +0200 Subject: [PATCH 067/126] Make BowAimbot & Excavator disable each other --- src/main/java/net/wurstclient/hacks/BowAimbotHack.java | 4 ++++ src/main/java/net/wurstclient/hacks/ExcavatorHack.java | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java index 55b76bbb..58c27c3a 100644 --- a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java +++ b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java @@ -93,6 +93,10 @@ public final class BowAimbotHack extends Hack @Override public void onEnable() { + // disable conflicting hacks + WURST.getHax().excavatorHack.setEnabled(false); + + // register event listeners EVENTS.add(GUIRenderListener.class, this); EVENTS.add(RenderListener.class, this); EVENTS.add(UpdateListener.class, this); diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index 18bdeb03..7ef01d58 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -92,13 +92,12 @@ public final class ExcavatorHack extends Hack public void onEnable() { // disable conflicting hacks - // TODO: - // WURST.getHax().bowAimbotMod.setEnabled(false); - // WURST.getHax().templateToolMod.setEnabled(false); WURST.getHax().autoMineHack.setEnabled(false); + WURST.getHax().bowAimbotHack.setEnabled(false); WURST.getHax().nukerHack.setEnabled(false); WURST.getHax().nukerLegitHack.setEnabled(false); WURST.getHax().speedNukerHack.setEnabled(false); + // WURST.getHax().templateToolHack.setEnabled(false); WURST.getHax().tunnellerHack.setEnabled(false); step = Step.START_POS; From 0c57710cf37774982824a607dc0d305497f67d46 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 24 Apr 2023 11:00:50 +0200 Subject: [PATCH 068/126] Fix Excavator text rendering in the wrong color --- src/main/java/net/wurstclient/hacks/ExcavatorHack.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index 7ef01d58..dca19bbb 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -363,6 +363,7 @@ public final class ExcavatorHack extends Hack tessellator.draw(); // text + RenderSystem.setShaderColor(1, 1, 1, 1); tr.draw(matrixStack, message, 2, 1, 0xffffffff); matrixStack.pop(); From 2c6d1efd2c4ae9a8f6de9e51c6c8c527c61d92cb Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 24 Apr 2023 11:11:41 +0200 Subject: [PATCH 069/126] Fix BowAimbot not rendering correctly --- src/main/java/net/wurstclient/hacks/BowAimbotHack.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java index 58c27c3a..c6460caf 100644 --- a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java +++ b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java @@ -18,6 +18,7 @@ import org.lwjgl.opengl.GL11; import com.mojang.blaze3d.systems.RenderSystem; +import net.minecraft.client.font.TextRenderer; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.render.BufferBuilder; import net.minecraft.client.render.GameRenderer; @@ -243,6 +244,7 @@ public final class BowAimbotHack extends Hack GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_LINE_SMOOTH); + RenderSystem.setShaderColor(1, 1, 1, 1); } @Override @@ -268,9 +270,11 @@ public final class BowAimbotHack extends Hack else message = "Target Locked"; + TextRenderer tr = MC.textRenderer; + // translate to center Window sr = MC.getWindow(); - int msgWidth = MC.textRenderer.getWidth(message); + int msgWidth = tr.getWidth(message); matrixStack.translate(sr.getScaledWidth() / 2 - msgWidth / 2, sr.getScaledHeight() / 2 + 1, 0); @@ -279,12 +283,14 @@ public final class BowAimbotHack extends Hack RenderSystem.setShaderColor(0, 0, 0, 0.5F); bufferBuilder.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION); + bufferBuilder.vertex(matrix, 0, 0, 0).next(); bufferBuilder.vertex(matrix, msgWidth + 3, 0, 0).next(); bufferBuilder.vertex(matrix, msgWidth + 3, 10, 0).next(); bufferBuilder.vertex(matrix, 0, 10, 0).next(); tessellator.draw(); // text + RenderSystem.setShaderColor(1, 1, 1, 1); MC.textRenderer.draw(matrixStack, message, 2, 1, 0xffffffff); matrixStack.pop(); @@ -292,6 +298,7 @@ public final class BowAimbotHack extends Hack // GL resets GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_BLEND); + RenderSystem.setShaderColor(1, 1, 1, 1); } private enum Priority From 7671c9cbec340d363390adbd5db68146f6d76b9a Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 24 Apr 2023 11:27:22 +0200 Subject: [PATCH 070/126] Fix Trajectories not raytracing correctly --- src/main/java/net/wurstclient/hacks/TrajectoriesHack.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java index 24a98e4f..581bafb4 100644 --- a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java +++ b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java @@ -222,7 +222,9 @@ public final class TrajectoriesHack extends Hack implements RenderListener arrowMotionY -= gravity * 0.1; // check for collision - RaycastContext context = new RaycastContext(eyesPos, arrowPos, + Vec3d lastPos = + path.size() > 1 ? path.get(path.size() - 2) : eyesPos; + RaycastContext context = new RaycastContext(lastPos, arrowPos, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, MC.player); if(MC.world.raycast(context).getType() != HitResult.Type.MISS) From 5e6642ade22214a4dcdfd6335c1fb55ca5420203 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 24 Apr 2023 11:47:32 +0200 Subject: [PATCH 071/126] Add entity collision detection to Trajectories --- .../net/wurstclient/hacks/TrajectoriesHack.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java index 581bafb4..ba0b0d65 100644 --- a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java +++ b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java @@ -9,6 +9,7 @@ package net.wurstclient.hacks; import java.awt.Color; import java.util.ArrayList; +import java.util.function.Predicate; import org.joml.Matrix4f; import org.lwjgl.opengl.GL11; @@ -22,8 +23,12 @@ import net.minecraft.client.render.Tessellator; import net.minecraft.client.render.VertexFormat; import net.minecraft.client.render.VertexFormats; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.Entity; +import net.minecraft.entity.projectile.ProjectileUtil; import net.minecraft.item.*; +import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import net.minecraft.world.RaycastContext; import net.wurstclient.Category; @@ -221,14 +226,24 @@ public final class TrajectoriesHack extends Hack implements RenderListener // apply gravity arrowMotionY -= gravity * 0.1; - // check for collision Vec3d lastPos = path.size() > 1 ? path.get(path.size() - 2) : eyesPos; + + // check for block collision RaycastContext context = new RaycastContext(lastPos, arrowPos, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, MC.player); if(MC.world.raycast(context).getType() != HitResult.Type.MISS) break; + + // check for entity collision + Box box = new Box(lastPos, arrowPos); + Predicate predicate = e -> !e.isSpectator() && e.canHit(); + double maxDistSq = 64 * 64; + EntityHitResult eResult = ProjectileUtil.raycast(MC.player, lastPos, + arrowPos, box, predicate, maxDistSq); + if(eResult != null && eResult.getType() != HitResult.Type.MISS) + break; } return path; From 7cd4c1d381e8592a7a78c561a6ed8907a593b7e6 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 24 Apr 2023 21:11:15 +0200 Subject: [PATCH 072/126] Refactor TrajectoriesHack.getPath() --- .../wurstclient/hacks/TrajectoriesHack.java | 106 ++++++++---------- 1 file changed, 49 insertions(+), 57 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java index ba0b0d65..3c7dd9fe 100644 --- a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java +++ b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java @@ -29,6 +29,7 @@ import net.minecraft.item.*; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.Box; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.RaycastContext; import net.wurstclient.Category; @@ -149,60 +150,24 @@ public final class TrajectoriesHack extends Hack implements RenderListener if(stack.isEmpty() || !isThrowable(item)) return path; - // calculate starting position - double arrowPosX = player.lastRenderX - + (player.getX() - player.lastRenderX) * partialTicks - - Math.cos(Math.toRadians(player.getYaw())) * 0.16; - - double arrowPosY = player.lastRenderY - + (player.getY() - player.lastRenderY) * partialTicks - + player.getStandingEyeHeight() - 0.1; - - double arrowPosZ = player.lastRenderZ - + (player.getZ() - player.lastRenderZ) * partialTicks - - Math.sin(Math.toRadians(player.getYaw())) * 0.16; - - // Motion factor. Arrows go faster than snowballs and all that... - double arrowMotionFactor = item instanceof RangedWeaponItem ? 1.0 : 0.4; - + // prepare yaw and pitch double yaw = Math.toRadians(player.getYaw()); double pitch = Math.toRadians(player.getPitch()); + // calculate starting position + double arrowPosX = + MathHelper.lerp(partialTicks, player.lastRenderX, player.getX()) + - Math.cos(yaw) * 0.16; + double arrowPosY = + MathHelper.lerp(partialTicks, player.lastRenderY, player.getY()) + + player.getStandingEyeHeight() - 0.1; + double arrowPosZ = + MathHelper.lerp(partialTicks, player.lastRenderZ, player.getZ()) + - Math.sin(yaw) * 0.16; + // calculate starting motion - double arrowMotionX = - -Math.sin(yaw) * Math.cos(pitch) * arrowMotionFactor; - double arrowMotionY = -Math.sin(pitch) * arrowMotionFactor; - double arrowMotionZ = - Math.cos(yaw) * Math.cos(pitch) * arrowMotionFactor; - - // 3D Pythagorean theorem. Returns the length of the arrowMotion vector. - double arrowMotion = Math.sqrt(arrowMotionX * arrowMotionX - + arrowMotionY * arrowMotionY + arrowMotionZ * arrowMotionZ); - - arrowMotionX /= arrowMotion; - arrowMotionY /= arrowMotion; - arrowMotionZ /= arrowMotion; - - // apply bow charge - if(item instanceof RangedWeaponItem) - { - float bowPower = (72000 - player.getItemUseTimeLeft()) / 20.0f; - bowPower = (bowPower * bowPower + bowPower * 2.0f) / 3.0f; - - if(bowPower > 1 || bowPower <= 0.1F) - bowPower = 1; - - bowPower *= 3F; - arrowMotionX *= bowPower; - arrowMotionY *= bowPower; - arrowMotionZ *= bowPower; - - }else - { - arrowMotionX *= 1.5; - arrowMotionY *= 1.5; - arrowMotionZ *= 1.5; - } + double bowPower = getBowPower(item); + Vec3d arrowMotion = getStartingMotion(yaw, pitch, bowPower); double gravity = getProjectileGravity(item); Vec3d eyesPos = RotationUtils.getEyesPos(); @@ -214,17 +179,15 @@ public final class TrajectoriesHack extends Hack implements RenderListener path.add(arrowPos); // apply motion - arrowPosX += arrowMotionX * 0.1; - arrowPosY += arrowMotionY * 0.1; - arrowPosZ += arrowMotionZ * 0.1; + arrowPosX += arrowMotion.x * 0.1; + arrowPosY += arrowMotion.y * 0.1; + arrowPosZ += arrowMotion.z * 0.1; // apply air friction - arrowMotionX *= 0.999; - arrowMotionY *= 0.999; - arrowMotionZ *= 0.999; + arrowMotion = arrowMotion.multiply(0.999); // apply gravity - arrowMotionY -= gravity * 0.1; + arrowMotion = arrowMotion.add(0, -gravity * 0.1, 0); Vec3d lastPos = path.size() > 1 ? path.get(path.size() - 2) : eyesPos; @@ -249,6 +212,35 @@ public final class TrajectoriesHack extends Hack implements RenderListener return path; } + private Vec3d getStartingMotion(double yaw, double pitch, double bowPower) + { + double cosOfPitch = Math.cos(pitch); + + double arrowMotionX = -Math.sin(yaw) * cosOfPitch; + double arrowMotionY = -Math.sin(pitch); + double arrowMotionZ = Math.cos(yaw) * cosOfPitch; + + return new Vec3d(arrowMotionX, arrowMotionY, arrowMotionZ).normalize() + .multiply(bowPower); + } + + private double getBowPower(Item item) + { + // use a static 1.5x for snowballs and such + if(!(item instanceof RangedWeaponItem)) + return 1.5; + + // calculate bow power + float bowPower = (72000 - MC.player.getItemUseTimeLeft()) / 20F; + bowPower = bowPower * bowPower + bowPower * 2F; + + // clamp value if fully charged or not charged at all + if(bowPower > 3 || bowPower <= 0.3F) + bowPower = 3; + + return bowPower; + } + private double getProjectileGravity(Item item) { if(item instanceof BowItem || item instanceof CrossbowItem) From 844c33855020ba40610f399730af723121fcf18e Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 26 Apr 2023 13:47:04 +0200 Subject: [PATCH 073/126] Add offhand support and further clean up Trajectories code --- .../wurstclient/hacks/TrajectoriesHack.java | 93 +++++++++++-------- .../net/wurstclient/util/EntityUtils.java | 10 ++ 2 files changed, 65 insertions(+), 38 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java index 3c7dd9fe..f15f13c4 100644 --- a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java +++ b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java @@ -26,10 +26,11 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.Entity; import net.minecraft.entity.projectile.ProjectileUtil; import net.minecraft.item.*; +import net.minecraft.util.Arm; +import net.minecraft.util.Hand; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.Box; -import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; import net.minecraft.world.RaycastContext; import net.wurstclient.Category; @@ -37,6 +38,7 @@ import net.wurstclient.SearchTags; import net.wurstclient.events.RenderListener; import net.wurstclient.hack.Hack; import net.wurstclient.settings.ColorSetting; +import net.wurstclient.util.EntityUtils; import net.wurstclient.util.RenderUtils; import net.wurstclient.util.RotationUtils; @@ -143,45 +145,43 @@ public final class TrajectoriesHack extends Hack implements RenderListener ClientPlayerEntity player = MC.player; ArrayList path = new ArrayList<>(); + // find the hand with a throwable item + Hand hand = Hand.MAIN_HAND; ItemStack stack = player.getMainHandStack(); - Item item = stack.getItem(); + if(!isThrowable(stack)) + { + hand = Hand.OFF_HAND; + stack = player.getOffHandStack(); + + // if neither hand has a throwable item, return empty path + if(!isThrowable(stack)) + return path; + } - // check if item is throwable - if(stack.isEmpty() || !isThrowable(item)) - return path; + // calculate item-specific values + Item item = stack.getItem(); + double throwPower = getThrowPower(item); + double gravity = getProjectileGravity(item); // prepare yaw and pitch double yaw = Math.toRadians(player.getYaw()); double pitch = Math.toRadians(player.getPitch()); // calculate starting position - double arrowPosX = - MathHelper.lerp(partialTicks, player.lastRenderX, player.getX()) - - Math.cos(yaw) * 0.16; - double arrowPosY = - MathHelper.lerp(partialTicks, player.lastRenderY, player.getY()) - + player.getStandingEyeHeight() - 0.1; - double arrowPosZ = - MathHelper.lerp(partialTicks, player.lastRenderZ, player.getZ()) - - Math.sin(yaw) * 0.16; + Vec3d arrowPos = EntityUtils.getLerpedPos(player, partialTicks) + .add(getHandOffset(hand, yaw)); // calculate starting motion - double bowPower = getBowPower(item); - Vec3d arrowMotion = getStartingMotion(yaw, pitch, bowPower); - - double gravity = getProjectileGravity(item); - Vec3d eyesPos = RotationUtils.getEyesPos(); + Vec3d arrowMotion = getStartingMotion(yaw, pitch, throwPower); + // build the path for(int i = 0; i < 1000; i++) { // add to path - Vec3d arrowPos = new Vec3d(arrowPosX, arrowPosY, arrowPosZ); path.add(arrowPos); // apply motion - arrowPosX += arrowMotion.x * 0.1; - arrowPosY += arrowMotion.y * 0.1; - arrowPosZ += arrowMotion.z * 0.1; + arrowPos = arrowPos.add(arrowMotion.multiply(0.1)); // apply air friction arrowMotion = arrowMotion.multiply(0.999); @@ -189,14 +189,14 @@ public final class TrajectoriesHack extends Hack implements RenderListener // apply gravity arrowMotion = arrowMotion.add(0, -gravity * 0.1, 0); - Vec3d lastPos = - path.size() > 1 ? path.get(path.size() - 2) : eyesPos; + Vec3d lastPos = path.size() > 1 ? path.get(path.size() - 2) + : RotationUtils.getEyesPos(); // check for block collision - RaycastContext context = new RaycastContext(lastPos, arrowPos, + RaycastContext bContext = new RaycastContext(lastPos, arrowPos, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, MC.player); - if(MC.world.raycast(context).getType() != HitResult.Type.MISS) + if(MC.world.raycast(bContext).getType() != HitResult.Type.MISS) break; // check for entity collision @@ -212,7 +212,22 @@ public final class TrajectoriesHack extends Hack implements RenderListener return path; } - private Vec3d getStartingMotion(double yaw, double pitch, double bowPower) + private Vec3d getHandOffset(Hand hand, double yaw) + { + Arm mainArm = MC.options.getMainArm().getValue(); + + boolean rightSide = mainArm == Arm.RIGHT && hand == Hand.MAIN_HAND + || mainArm == Arm.LEFT && hand == Hand.OFF_HAND; + + double sideMultiplier = rightSide ? -1 : 1; + double handOffsetX = Math.cos(yaw) * 0.16 * sideMultiplier; + double handOffsetY = MC.player.getStandingEyeHeight() - 0.1; + double handOffsetZ = Math.sin(yaw) * 0.16 * sideMultiplier; + + return new Vec3d(handOffsetX, handOffsetY, handOffsetZ); + } + + private Vec3d getStartingMotion(double yaw, double pitch, double throwPower) { double cosOfPitch = Math.cos(pitch); @@ -221,10 +236,10 @@ public final class TrajectoriesHack extends Hack implements RenderListener double arrowMotionZ = Math.cos(yaw) * cosOfPitch; return new Vec3d(arrowMotionX, arrowMotionY, arrowMotionZ).normalize() - .multiply(bowPower); + .multiply(throwPower); } - private double getBowPower(Item item) + private double getThrowPower(Item item) { // use a static 1.5x for snowballs and such if(!(item instanceof RangedWeaponItem)) @@ -243,10 +258,10 @@ public final class TrajectoriesHack extends Hack implements RenderListener private double getProjectileGravity(Item item) { - if(item instanceof BowItem || item instanceof CrossbowItem) + if(item instanceof RangedWeaponItem) return 0.05; - if(item instanceof PotionItem) + if(item instanceof ThrowablePotionItem) return 0.4; if(item instanceof FishingRodItem) @@ -258,13 +273,15 @@ public final class TrajectoriesHack extends Hack implements RenderListener return 0.03; } - private boolean isThrowable(Item item) + public static boolean isThrowable(ItemStack stack) { - return item instanceof BowItem || item instanceof CrossbowItem - || item instanceof SnowballItem || item instanceof EggItem - || item instanceof EnderPearlItem - || item instanceof SplashPotionItem - || item instanceof LingeringPotionItem + if(stack.isEmpty()) + return false; + + Item item = stack.getItem(); + return item instanceof RangedWeaponItem || item instanceof SnowballItem + || item instanceof EggItem || item instanceof EnderPearlItem + || item instanceof ThrowablePotionItem || item instanceof FishingRodItem || item instanceof TridentItem; } } diff --git a/src/main/java/net/wurstclient/util/EntityUtils.java b/src/main/java/net/wurstclient/util/EntityUtils.java index 6ae15b47..c328376c 100644 --- a/src/main/java/net/wurstclient/util/EntityUtils.java +++ b/src/main/java/net/wurstclient/util/EntityUtils.java @@ -17,6 +17,8 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.decoration.EndCrystalEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.projectile.ShulkerBulletEntity; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3d; import net.wurstclient.WurstClient; public enum EntityUtils @@ -49,4 +51,12 @@ public enum EntityUtils public static Predicate IS_VALID_ANIMAL = a -> a != null && !a.isRemoved() && a.getHealth() > 0; + + public static Vec3d getLerpedPos(Entity e, float partialTicks) + { + double x = MathHelper.lerp(partialTicks, e.lastRenderX, e.getX()); + double y = MathHelper.lerp(partialTicks, e.lastRenderY, e.getY()); + double z = MathHelper.lerp(partialTicks, e.lastRenderZ, e.getZ()); + return new Vec3d(x, y, z); + } } From 87aefef5a5ea6eaac1aec035a984de7ad072f789 Mon Sep 17 00:00:00 2001 From: duggavo Date: Fri, 28 Apr 2023 18:07:25 +0200 Subject: [PATCH 074/126] Change Trajectories color when hitting an entity --- .../wurstclient/hacks/TrajectoriesHack.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java index f15f13c4..bd7e328a 100644 --- a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java +++ b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java @@ -43,17 +43,22 @@ import net.wurstclient.util.RenderUtils; import net.wurstclient.util.RotationUtils; @SearchTags({"ArrowTrajectories", "ArrowPrediction", "aim assist", - "arrow trajectories"}) + "arrow trajectories", "bow trajectories"}) public final class TrajectoriesHack extends Hack implements RenderListener { private final ColorSetting color = new ColorSetting("Color", "Color of the trajectory.", Color.GREEN); - + private final ColorSetting colorHit = + new ColorSetting("Hit Color", "Color of the trajectory if it hits an entity.", Color.RED); + + private boolean hittingEntity = false; + public TrajectoriesHack() { super("Trajectories"); setCategory(Category.RENDER); addSetting(color); + addSetting(colorHit); } @Override @@ -109,7 +114,10 @@ public final class TrajectoriesHack extends Hack implements RenderListener bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINE_STRIP, VertexFormats.POSITION); + float[] colorF = color.getColorF(); + if (hittingEntity) + colorF = colorHit.getColorF(); RenderSystem.setShaderColor(colorF[0], colorF[1], colorF[2], 0.75F); for(Vec3d point : path) @@ -126,7 +134,10 @@ public final class TrajectoriesHack extends Hack implements RenderListener double renderX = end.x - camPos.x; double renderY = end.y - camPos.y; double renderZ = end.z - camPos.z; + float[] colorF = color.getColorF(); + if (hittingEntity) + colorF = colorHit.getColorF(); matrixStack.push(); matrixStack.translate(renderX - 0.5, renderY - 0.5, renderZ - 0.5); @@ -196,8 +207,10 @@ public final class TrajectoriesHack extends Hack implements RenderListener RaycastContext bContext = new RaycastContext(lastPos, arrowPos, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, MC.player); - if(MC.world.raycast(bContext).getType() != HitResult.Type.MISS) + if(MC.world.raycast(bContext).getType() != HitResult.Type.MISS) { + hittingEntity = false; break; + } // check for entity collision Box box = new Box(lastPos, arrowPos); @@ -205,8 +218,10 @@ public final class TrajectoriesHack extends Hack implements RenderListener double maxDistSq = 64 * 64; EntityHitResult eResult = ProjectileUtil.raycast(MC.player, lastPos, arrowPos, box, predicate, maxDistSq); - if(eResult != null && eResult.getType() != HitResult.Type.MISS) + if(eResult != null && eResult.getType() != HitResult.Type.MISS){ + hittingEntity = true; break; + } } return path; From 06be5359a274ec0bee08cff37b6c7cfdcacacc78 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 1 May 2023 00:39:18 +0200 Subject: [PATCH 075/126] Further improve Trajectories colors --- .../wurstclient/hacks/TrajectoriesHack.java | 71 +++++++++++-------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java index bd7e328a..d67df0fc 100644 --- a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java +++ b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java @@ -46,19 +46,24 @@ import net.wurstclient.util.RotationUtils; "arrow trajectories", "bow trajectories"}) public final class TrajectoriesHack extends Hack implements RenderListener { - private final ColorSetting color = - new ColorSetting("Color", "Color of the trajectory.", Color.GREEN); - private final ColorSetting colorHit = - new ColorSetting("Hit Color", "Color of the trajectory if it hits an entity.", Color.RED); - - private boolean hittingEntity = false; - + private final ColorSetting missColor = new ColorSetting("Miss Color", + "Color of the trajectory when it doesn't hit anything.", Color.GRAY); + + private final ColorSetting entityHitColor = + new ColorSetting("Entity Hit Color", + "Color of the trajectory when it hits an entity.", Color.RED); + + private final ColorSetting blockHitColor = + new ColorSetting("Block Hit Color", + "Color of the trajectory when it hits a block.", Color.GREEN); + public TrajectoriesHack() { super("Trajectories"); setCategory(Category.RENDER); - addSetting(color); - addSetting(colorHit); + addSetting(missColor); + addSetting(entityHitColor); + addSetting(blockHitColor); } @Override @@ -85,15 +90,22 @@ public final class TrajectoriesHack extends Hack implements RenderListener RenderUtils.applyCameraRotationOnly(); - ArrayList path = getPath(partialTicks); - Vec3d camPos = RenderUtils.getCameraPos(); + Trajectory trajectory = getTrajectory(partialTicks); + ArrayList path = trajectory.path; - drawLine(matrixStack, path, camPos); + ColorSetting color = switch(trajectory.type) + { + case MISS -> missColor; + case ENTITY -> entityHitColor; + case BLOCK -> blockHitColor; + }; + + drawLine(matrixStack, path, color); if(!path.isEmpty()) { Vec3d end = path.get(path.size() - 1); - drawEndOfLine(matrixStack, end, camPos); + drawEndOfLine(matrixStack, end, color); } RenderSystem.setShaderColor(1, 1, 1, 1); @@ -105,8 +117,9 @@ public final class TrajectoriesHack extends Hack implements RenderListener } private void drawLine(MatrixStack matrixStack, ArrayList path, - Vec3d camPos) + ColorSetting color) { + Vec3d camPos = RenderUtils.getCameraPos(); Matrix4f matrix = matrixStack.peek().getPositionMatrix(); Tessellator tessellator = RenderSystem.renderThreadTesselator(); BufferBuilder bufferBuilder = tessellator.getBuffer(); @@ -114,10 +127,7 @@ public final class TrajectoriesHack extends Hack implements RenderListener bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINE_STRIP, VertexFormats.POSITION); - float[] colorF = color.getColorF(); - if (hittingEntity) - colorF = colorHit.getColorF(); RenderSystem.setShaderColor(colorF[0], colorF[1], colorF[2], 0.75F); for(Vec3d point : path) @@ -129,15 +139,14 @@ public final class TrajectoriesHack extends Hack implements RenderListener tessellator.draw(); } - private void drawEndOfLine(MatrixStack matrixStack, Vec3d end, Vec3d camPos) + private void drawEndOfLine(MatrixStack matrixStack, Vec3d end, + ColorSetting color) { + Vec3d camPos = RenderUtils.getCameraPos(); double renderX = end.x - camPos.x; double renderY = end.y - camPos.y; double renderZ = end.z - camPos.z; - float[] colorF = color.getColorF(); - if (hittingEntity) - colorF = colorHit.getColorF(); matrixStack.push(); matrixStack.translate(renderX - 0.5, renderY - 0.5, renderZ - 0.5); @@ -151,10 +160,14 @@ public final class TrajectoriesHack extends Hack implements RenderListener matrixStack.pop(); } - private ArrayList getPath(float partialTicks) + private record Trajectory(ArrayList path, HitResult.Type type) + {} + + private Trajectory getTrajectory(float partialTicks) { ClientPlayerEntity player = MC.player; ArrayList path = new ArrayList<>(); + HitResult.Type type = HitResult.Type.MISS; // find the hand with a throwable item Hand hand = Hand.MAIN_HAND; @@ -166,7 +179,7 @@ public final class TrajectoriesHack extends Hack implements RenderListener // if neither hand has a throwable item, return empty path if(!isThrowable(stack)) - return path; + return new Trajectory(path, type); } // calculate item-specific values @@ -207,8 +220,9 @@ public final class TrajectoriesHack extends Hack implements RenderListener RaycastContext bContext = new RaycastContext(lastPos, arrowPos, RaycastContext.ShapeType.COLLIDER, RaycastContext.FluidHandling.NONE, MC.player); - if(MC.world.raycast(bContext).getType() != HitResult.Type.MISS) { - hittingEntity = false; + if(MC.world.raycast(bContext).getType() != HitResult.Type.MISS) + { + type = HitResult.Type.BLOCK; break; } @@ -218,13 +232,14 @@ public final class TrajectoriesHack extends Hack implements RenderListener double maxDistSq = 64 * 64; EntityHitResult eResult = ProjectileUtil.raycast(MC.player, lastPos, arrowPos, box, predicate, maxDistSq); - if(eResult != null && eResult.getType() != HitResult.Type.MISS){ - hittingEntity = true; + if(eResult != null && eResult.getType() != HitResult.Type.MISS) + { + type = HitResult.Type.ENTITY; break; } } - return path; + return new Trajectory(path, type); } private Vec3d getHandOffset(Hand hand, double yaw) From e34e037576982273b07fb2f7da80192a70c7ef3b Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 3 May 2023 12:34:59 +0200 Subject: [PATCH 076/126] Improve the precision of Trajectories --- .../net/wurstclient/hacks/TrajectoriesHack.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java index d67df0fc..b8efc9e5 100644 --- a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java +++ b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java @@ -28,6 +28,7 @@ import net.minecraft.entity.projectile.ProjectileUtil; import net.minecraft.item.*; import net.minecraft.util.Arm; import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.EntityHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.Box; @@ -217,12 +218,15 @@ public final class TrajectoriesHack extends Hack implements RenderListener : RotationUtils.getEyesPos(); // check for block collision - RaycastContext bContext = new RaycastContext(lastPos, arrowPos, - RaycastContext.ShapeType.COLLIDER, - RaycastContext.FluidHandling.NONE, MC.player); - if(MC.world.raycast(bContext).getType() != HitResult.Type.MISS) + BlockHitResult bResult = + MC.world.raycast(new RaycastContext(lastPos, arrowPos, + RaycastContext.ShapeType.COLLIDER, + RaycastContext.FluidHandling.NONE, MC.player)); + if(bResult.getType() != HitResult.Type.MISS) { + // replace last pos with the collision point type = HitResult.Type.BLOCK; + path.set(path.size() - 1, bResult.getPos()); break; } @@ -234,7 +238,9 @@ public final class TrajectoriesHack extends Hack implements RenderListener arrowPos, box, predicate, maxDistSq); if(eResult != null && eResult.getType() != HitResult.Type.MISS) { + // replace last pos with the collision point type = HitResult.Type.ENTITY; + path.set(path.size() - 1, eResult.getPos()); break; } } From b0c5754e8d343370aaacadb4fd770d76a3fb5a08 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 3 May 2023 16:18:10 +0200 Subject: [PATCH 077/126] Update ApiProviderSetting description --- .../net/wurstclient/hacks/autocomplete/ApiProviderSetting.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ApiProviderSetting.java b/src/main/java/net/wurstclient/hacks/autocomplete/ApiProviderSetting.java index 940629a2..ec3d18cf 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/ApiProviderSetting.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ApiProviderSetting.java @@ -15,7 +15,7 @@ public final class ApiProviderSetting public ApiProviderSetting() { super("API provider", - "\u00a7lOpenAI\u00a7r lets you use models like GPT-3, but requires an" + "\u00a7lOpenAI\u00a7r lets you use models like ChatGPT, but requires an" + " account with API access, costs money to use and sends your chat" + " history to their servers. The name is a lie - it's closed" + " source.\n\n" From 7eba22f51a3d770e617c9f0c589b830a6c8ed3fb Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 3 May 2023 16:51:27 +0200 Subject: [PATCH 078/126] Fix stop sequences in oobabooga mode --- .../hacks/autocomplete/ModelSettings.java | 6 +----- .../autocomplete/OobaboogaMessageCompleter.java | 12 +++++------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java index a02fe604..517a4dfe 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java @@ -127,11 +127,7 @@ public final class ModelSettings + " for most language models.\n\n" + "\u00a7lNext Message\u00a7r works better with certain" + " code-optimized language models, which have a tendency to insert" - + " line breaks in the middle of a chat message.\n\n" - + "\u00a7lNOTE:\u00a7r Due to a limitation in the oobabooga API, the" - + " stop sequence doesn't properly stop locally installed models." - + " Instead, it waits for the model to finish and then cuts off" - + " the rest of the text.", + + " line breaks in the middle of a chat message.", StopSequence.values(), StopSequence.LINE_BREAK); public enum StopSequence diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java index e871a73c..5424cfe7 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java @@ -12,6 +12,7 @@ import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; +import com.google.gson.JsonArray; import com.google.gson.JsonObject; import net.wurstclient.util.json.JsonException; @@ -37,6 +38,10 @@ public final class OobaboogaMessageCompleter extends MessageCompleter modelSettings.repetitionPenalty.getValue()); params.addProperty("encoder_repetition_penalty", modelSettings.encoderRepetitionPenalty.getValue()); + JsonArray stoppingStrings = new JsonArray(); + stoppingStrings + .add(modelSettings.stopSequence.getSelected().getSequence()); + params.add("stopping_strings", stoppingStrings); return params; } @@ -73,13 +78,6 @@ public final class OobaboogaMessageCompleter extends MessageCompleter if(!completion.isEmpty()) completion = completion.substring(1); - // remove the next message - String stopSequence = - modelSettings.stopSequence.getSelected().getSequence(); - if(completion.contains(stopSequence)) - completion = - completion.substring(0, completion.indexOf(stopSequence)); - // remove newlines completion = completion.replace("\n", " "); From 7fcea55ab909de521dd79760efd4130d636dda6d Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 4 May 2023 11:31:00 +0200 Subject: [PATCH 079/126] Further improve AutoComplete --- .../hacks/autocomplete/MessageCompleter.java | 12 +++++++++- .../hacks/autocomplete/ModelSettings.java | 24 +++++++++++++++++-- .../OobaboogaMessageCompleter.java | 4 ---- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java index 9da3a433..cf477e63 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/MessageCompleter.java @@ -61,6 +61,7 @@ public abstract class MessageCompleter // add chat history List chatHistory = MC.inGameHud.getChatHud().visibleMessages; + int messages = 0; for(int i = chatHistory.size() - 1; i >= 0; i--) { // get message @@ -72,9 +73,18 @@ public abstract class MessageCompleter // give non-player messages a sender to avoid confusing the model if(!message.startsWith("<")) - message = " " + message; + if(modelSettings.filterServerMessages.isChecked()) + continue; + else + message = " " + message; + + // limit context length to save tokens + if(messages >= modelSettings.contextLength.getValueI()) + break; + // add message to prompt prompt += message + "\n"; + messages++; } // if the chat history is empty, add a dummy system message diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java index 517a4dfe..9e84ef9c 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java @@ -12,6 +12,7 @@ import java.util.Collections; import java.util.List; import java.util.function.Consumer; +import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.EnumSetting; import net.wurstclient.settings.Setting; import net.wurstclient.settings.SliderSetting; @@ -30,7 +31,7 @@ public final class ModelSettings + " powerful.\n\n" + "\u00a7lGPT-4\u00a7r is more powerful, but only works if OpenAI" + " has chosen you to be a beta tester. It can be anywhere from" - + " 15x to 60x more expensive than ChatGPT. Probably not worth it.", + + " 15x to 60x more expensive than ChatGPT.", OpenAiModel.values(), OpenAiModel.GPT_3_5_TURBO); public enum OpenAiModel @@ -156,10 +157,29 @@ public final class ModelSettings } } + public final SliderSetting contextLength = new SliderSetting( + "Context length", + "Controls how many messages from the chat history are used to generate" + + " predictions.\n\n" + + "Higher values improve the quality of predictions, but also" + + " increase the time it takes to generate them, as well as cost" + + " (for OpenAI API users) or RAM usage (for oobabooga users).", + 10, 0, 100, 1, ValueDisplay.INTEGER); + + public final CheckboxSetting filterServerMessages = + new CheckboxSetting("Filter server messages", + "Only shows player-made chat messages to the model.\n\n" + + "This can help you save tokens and get more out of a low" + + " context length, but it also means that the model will have" + + " no idea about events like players joining, leaving, dying," + + " etc.", + false); + private final List settings = Collections.unmodifiableList(Arrays.asList(openAiModel, maxTokens, temperature, topP, presencePenalty, frequencyPenalty, - repetitionPenalty, encoderRepetitionPenalty, stopSequence)); + repetitionPenalty, encoderRepetitionPenalty, stopSequence, + contextLength, filterServerMessages)); public void forEach(Consumer action) { diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java index 5424cfe7..38b75202 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/OobaboogaMessageCompleter.java @@ -74,10 +74,6 @@ public final class OobaboogaMessageCompleter extends MessageCompleter String completion = response.getArray("results").getObject(0).getString("text"); - // remove the extra character at the start - if(!completion.isEmpty()) - completion = completion.substring(1); - // remove newlines completion = completion.replace("\n", " "); From 302305a3fde219a36e93cf5af598aeb44be27a33 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 4 May 2023 12:06:27 +0200 Subject: [PATCH 080/126] Update to Loom 1.2 --- build.gradle | 2 +- gradle.properties | 6 +- gradle/wrapper/gradle-wrapper.jar | Bin 59821 -> 60756 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 8 +- gradlew.bat | 180 ++++++++++++----------- 6 files changed, 104 insertions(+), 96 deletions(-) diff --git a/build.gradle b/build.gradle index 1c8e16ef..a009a9c9 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { } plugins { - id 'fabric-loom' version '1.1-SNAPSHOT' + id 'fabric-loom' version '1.2-SNAPSHOT' id 'maven-publish' } diff --git a/gradle.properties b/gradle.properties index d3201956..fbaa569d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,11 +5,11 @@ org.gradle.jvmargs=-Xmx1G # check these at https://fabricmc.net/develop/ and # https://www.curseforge.com/minecraft/mc-mods/fabric-api minecraft_version=1.19.4 -yarn_mappings=1.19.4+build.1 -loader_version=0.14.18 +yarn_mappings=1.19.4+build.2 +loader_version=0.14.19 #Fabric api -fabric_version=0.76.0+1.19.4 +fabric_version=0.80.0+1.19.4 # Mod Properties mod_version = v7.33-MC1.19.4 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 41d9927a4d4fb3f96a785543079b8df6723c946b..249e5832f090a2944b7473328c07c9755baa3196 100644 GIT binary patch delta 10197 zcmaKS1ymhDwk=#NxVyW%y9U<)A-Dv)xI0|j{UX8L-JRg>5ZnnKAh;%chM6~S-g^K4 z>eZ{yK4;gd>gwvXs=Id8Jk-J}R4pT911;+{Jp9@aiz6!p1Oz9z&_kGLA%J5%3Ih@0 zQ|U}%$)3u|G`jIfPzMVfcWs?jV2BO^*3+q2><~>3j+Z`^Z%=;19VWg0XndJ zwJ~;f4$;t6pBKaWn}UNO-wLCFHBd^1)^v%$P)fJk1PbK5<;Z1K&>k~MUod6d%@Bq9 z>(44uiaK&sdhwTTxFJvC$JDnl;f}*Q-^01T508(8{+!WyquuyB7R!d!J)8Ni0p!cV6$CHsLLy6}7C zYv_$eD;)@L)tLj0GkGpBoa727hs%wH$>EhfuFy{_8Q8@1HI%ZAjlpX$ob{=%g6`Ox zLzM!d^zy`VV1dT9U9(^}YvlTO9Bf8v^wMK37`4wFNFzW?HWDY(U(k6@tp(crHD)X5>8S-# zW1qgdaZa*Sh6i%60e1+hty}34dD%vKgb?QmQiZ=-j+isA4={V_*R$oGN#j|#ia@n6 zuZx4e2Xx?^lUwYFn2&Tmbx0qA3Z8;y+zKoeQu;~k~FZGy!FU_TFxYd!Ck;5QvMx9gj5fI2@BLNp~Ps@ zf@k<&Q2GS5Ia9?_D?v~$I%_CLA4x~eiKIZ>9w^c#r|vB?wXxZ(vXd*vH(Fd%Me8p( z=_0)k=iRh%8i`FYRF>E97uOFTBfajv{IOz(7CU zv0Gd84+o&ciHlVtY)wn6yhZTQQO*4Mvc#dxa>h}82mEKKy7arOqU$enb9sgh#E=Lq zU;_RVm{)30{bw+|056%jMVcZRGEBSJ+JZ@jH#~DvaDQm92^TyUq=bY*+AkEakpK>8 zB{)CkK48&nE5AzTqT;WysOG|!y}5fshxR8Ek(^H6i>|Fd&wu?c&Q@N9ZrJ=?ABHI! z`*z8D`w=~AJ!P-9M=T}f`;76$qZRllB&8#9WgbuO$P7lVqdX1=g*t=7z6!0AQ^ux_ z9rcfUv^t}o_l-ZE+TqvqFsA*~W<^78!k;~!i8(eS+(+@u8FxK+Q7;mHZ<1}|4m<}vh@p`t%|@eM_J(P% zI>M7C)Ir{l|J;$G_EGGEhbP4?6{sYzMqBv+x95N&YWFH6UcE@b}B?q)G*4<4mR@sy1#vPnLMK51tb#ED(8TA1nE zYfhK7bo1!R5WJF$5Y?zG21)6+_(_5oSX9sGIW;(O&S?Rh(nydNQYzKjjJ54aDJ-1F zrJ=np8LsN?%?Rt7f~3aAX!2E{`fh_pb?2(;HOB3W+I*~A>W%iY+v45+^e$cE10fA} zXPvw9=Bd+(;+!rl)pkYj0HGB}+3Z!Mr;zr%gz~c-hFMv8b2VRE2R$8V=_XE zq$3=|Yg05(fmwrJ)QK2ptB4no`Y8Dg_vK2QDc6-6sXRQ5k78-+cPi-fH}vpgs|Ive zE=m*XNVs?EWgiNI!5AcD*3QMW)R`EqT!f0e1%hERO&?AT7HWnSf5@#AR{OGuXG3Zb zCnVWg7h|61lGV3k+>L<#d>)InG>ETn1DbOHCfztqzQ_fBiaUt@q6VMy={Fe-w#~2- z0?*f|z$zgjI9>+JVICObBaK=pU}AEOd@q(8d?j7zQFD@=6t`|KmolTr2MfBI$;EGh zD%W0cA_d#V6Lb$us5yIG(|d>r-QleC4;%hEu5W9hyY zY#+ESY&v`8(&mC~?*|e5WEhC!YU2>m_}`K+q9)a(d$bsS<=YkyZGp}YA%TXw>@abA zS_poVPoN+?<6?DAuCNt&5SHV(hp56PJ})swwVFZFXM->F zc|0c8<$H_OV%DR|y7e+s$12@Ac8SUClPg8_O9sTUjpv%6Jsn5vsZCg>wL+db4c+{+ zsg<#wOuV4jeOq`veckdi-1`dz;gvL)bZeH|D*x=8UwRU5&8W1@l>3$)8WzET0%;1J zM3(X<7tKK&9~kWRI{&FmwY5Gg!b5f4kI_vSm)H1#>l6M+OiReDXC{kPy!`%Ecq-+3yZTk=<` zm)pE6xum5q0Qkd#iny0Q-S}@I0;mDhxf>sX)Oiv)FdsAMnpx%oe8OQ`m%Xeozdzx!C1rQR>m1c_}+J4x)K}k{G zo68;oGG&Ox7w^-m7{g4a7NJu-B|~M;oIH~~#`RyUNm##feZH;E?pf}nshmoiIY52n z%pc%lnU4Q#C=RUz)RU6}E_j4#)jh<&a%JyJj$Fufc#&COaxFHtl}zJUGNLBu3~_@1 zn9F^JO9);Duxo&i@>X(kbYga1i>6p1fca8FzQ0>((Lb-aPUbC*d~a03V$y;*RBY!R ziEJ2IF^FjrvO}0Uy{cMn%u<+P5U!UO>pm9#ZYL5i6|xSC+np7IH$GfXs&uI;y4as@ z&AzJh>(S2?3PKKgab3Z(`xbx(C#46XIvVcW8eG_DjT~}Yz_8PWZ`uf6^Xr=vkvL_` zqmvfgJL+Zc`;iq~iP?%@G7}~fal-zqxa0yNyHBJJ5M)9bI>7S_cg?Ya&p(I)C5Ef4 zZ>YAF6x|U=?ec?g*|f2g5Tw3PgxaM_bi_5Az9MO$;_Byw(2d}2%-|bg4ShdQ;)Z|M z4K|tFv)qx*kKGKoyh!DQY<{n&UmAChq@DJrQP>EY7g1JF(ih*D8wCVWyQ z5Jj^|-NVFSh5T0vd1>hUvPV6?=`90^_)t(L9)XOW7jeP45NyA2lzOn&QAPTl&d#6P zSv%36uaN(9i9WlpcH#}rmiP#=L0q(dfhdxvFVaOwM;pY;KvNQ9wMyUKs6{d}29DZQ z{H3&Sosr6)9Z+C>Q5)iHSW~gGoWGgK-0;k~&dyr-bA3O|3PCNzgC?UKS_B=^i8Ri^ zd_*_qI4B07Cayq|p4{`U_E_P=K`N_~{F|+-+`sCgcNxs`%X!$=(?l2aAW}0M=~COb zf19oe^iuAUuDEf)4tgv<=WRPpK@IjToNNC*#&Ykw!)aqWU4h#|U@(cG_=Qx+&xt~a zvCz~Ds3F71dsjNLkfM%TqdVNu=RNMOzh7?b+%hICbFlOAPphrYy>7D-e7{%o_kPFn z;T!?ilE-LcKM0P(GKMseEeW57Vs`=FF}(y@^pQl;rL3fHs8icmA+!6YJt&8 ztSF?%Un35qkv>drkks&BNTJv~xK?vD;aBkp7eIkDYqn+G0%;sT4FcwAoO+vke{8CO z0d76sgg$CannW5T#q`z~L4id)9BCKRU0A!Z-{HpXr)QJrd9@iJB+l32Ql)Z}*v(St zE)Vp=BB=DDB4Pr}B(UHNe31<@!6d{U?XDoxJ@S)9QM)2L%SA0x^~^fb=bdsBy!uh& zU?M_^kvnt%FZzm+>~bEH{2o?v&Iogs`1t-b+Ml`J!ZPS(46YQJKxWE81O$HE5w;** z|8zM%bp`M7J8)4;%DqH`wVTmM0V@D}xd%tRE3_6>ioMJxyi5Hkb>85muF81&EY!73ei zA3e<#ug||EZJ=1GLXNJ)A z791&ge#lF;GVX6IU?iw0jX^1bYaU?+x{zPlpyX6zijyn*nEdZ$fxxkl!a-~*P3bkf zPd*pzu~3GBYkR_>ET`5UM^>>zTV>5m>)f=az{d0sg6a8VzUtXy$ZS?h#Gk-CA?7)c zI%Vu9DN6XSDQn6;?n9`>l$q&>s?K)R8*OsmI+$L_m z_~E`}w694Z*`Xk3Ne=497Si~=RWRqCM?6=88smrxle#s*W znwhTRsMRmg?37GLJ-)%nDZA7r$YG849j8mJWir1bWBy& zZPneYojSbooC8U@tkO`bWx4%E5*;p#Q^1^S3lsfy7(6A{jL0`A__0vm?>xC%1y8_m z57FfWr^@YG2I1K7MGYuYd>JC}@sT2n^rkrY3w%~$J$Y~HSoOHn?zpR$ zjLj_bq@Yj8kd~DXHh30KVbz@K)0S;hPKm+S&-o%IG+@x@MEcrxW2KFh;z^4dJDZix zGRGe&lQD$p)0JVF4NRgGYuh0bYLy)BCy~sbS3^b3 zHixT<%-Vwbht|25T{3^Hk;qZ^3s!OOgljHs+EIf~C%=_>R5%vQI4mQR9qOXThMXlU zS|oSH>0PjnCakb*js2{ObN`}%HYsT6=%(xA| znpUtG_TJ08kHgm5l@G|t?4E3tG2fq?wNtIp*Vqrb{9@bo^~Rx7+J&OnayrX`LDcF~ zd@0m0ZJ#Z@=T>4kTa5e2FjI&5c(F7S{gnRPoGpu9eIqrtSvnT_tk$8T)r%YwZw!gK zj*k@cG)V&@t+mtDi37#>LhVGTfRA^p%x0d#_P|Mktz3*KOoLIqFm`~KGoDDD4OOxe z?}ag_c08u%vu=5Vx=~uoS8Q;}+R2~?Uh|m-+`-2kDo$d6T!nD*hc#dB(*R{LXV=zo z`PJP0V=O!@3l-bw+d`X6(=@fq=4O#ETa8M^fOvO4qja9o3e8ANc9$sI=A4$zUut~w z4+JryRkI{9qWxU1CCMM$@Aj=6)P+z?vqa=UCv_4XyVNoBD{Xb~Oi4cjjhm8fRD!*U z2)zaS;AI78^Wq+5mDInKiMz|z#K`2emQfNH*U;{9^{NqSMVoq?RSo43<8YpJM^+W$ zxy!A5>5Zl16Vi#?nAYywu3w_=KWnd3*QetocWt`3pK67>)ZVwnT3h zbPdD&MZkD?q=-N`MpCCwpM74L+Tr1aa)zJ)8G;(Pg51@U&5W>aNu9rA`bh{vgfE={ zdJ>aKc|2Ayw_bop+dK?Y5$q--WM*+$9&3Q9BBiwU8L<-`T6E?ZC`mT0b}%HR*LPK} z!MCd_Azd{36?Y_>yN{U1w5yrN8q`z(Vh^RnEF+;4b|2+~lfAvPT!`*{MPiDioiix8 zY*GdCwJ{S(5(HId*I%8XF=pHFz<9tAe;!D5$Z(iN#jzSql4sqX5!7Y?q4_%$lH zz8ehZuyl0K=E&gYhlfFWabnSiGty$>md|PpU1VfaC5~kskDnZX&Yu}?-h;OSav=8u z=e3Yq=mi$4A|sB-J00;1d{Sd1+!v0NtU((Nz2;PFFlC}V{@p&4wGcVhU&nI($RAS! zwXn7)?8~1J3*4+VccRSg5JS<(bBhBM&{ELMD4C_NTpvzboH!{Zr*%HP;{UqxI#g&7 zOAqPSW5Qus$8-xtTvD%h{Tw<2!XR(lU54LZG{)Cah*LZbpJkA=PMawg!O>X@&%+5XiyeIf91n2E*hl$k-Y(3iW*E}Mz-h~H~7S9I1I zR#-j`|Hk?$MqFhE4C@=n!hN*o5+M%NxRqP+aLxDdt=wS6rAu6ECK*;AB%Nyg0uyAv zO^DnbVZZo*|Ef{nsYN>cjZC$OHzR_*g%T#oF zCky9HJS;NCi=7(07tQXq?V8I&OA&kPlJ_dfSRdL2bRUt;tA3yKZRMHMXH&#W@$l%-{vQd7y@~i*^qnj^`Z{)V$6@l&!qP_y zg2oOd!Wit#)2A~w-eqw3*Mbe)U?N|q6sXw~E~&$!!@QYX4b@%;3=>)@Z#K^`8~Aki z+LYKJu~Y$;F5%_0aF9$MsbGS9Bz2~VUG@i@3Fi2q(hG^+Ia44LrfSfqtg$4{%qBDM z_9-O#3V+2~W$dW0G)R7l_R_vw(KSkC--u&%Rs^Io&*?R=`)6BN64>6>)`TxyT_(Rd zUn+aIl1mPa#Jse9B3`!T=|e!pIp$(8ZOe0ao?nS7o?oKlj zypC-fMj1DHIDrh1unUI1vp=-Fln;I9e7Jvs3wj*^_1&W|X} zZSL|S|Bb@CV*YC_-T&2!Ht3b6?)d`tHOP?rA;;t#zaXa0Sc;vGnV0BLIf8f-r{QHh z*Zp`4_ItlOR7{u(K+!p_oLDmaAkNag*l4#29F2b_A*0oz0T|#-&f*;c#<`^)(W@gm z#k9k=t%u8<+C1fNUA{Fh7~wgPrEZZ#(6aBI%6bR4RO(e1(ZocjoDek4#MTgZD>1NG zy9~yoZfWYfwe&S-(zk4o6q6o?2*~DOrJ(%5wSnEJMVOKCzHd z=Yhm+HLzoDl{P*Ybro7@sk1!Ez3`hE+&qr7Rw^2glw^M(b(NS2!F|Q!mi|l~lF94o z!QiV)Q{Z>GO5;l1y!$O)=)got;^)%@v#B!ZEVQy1(BJApHr5%Zh&W|gweD+%Ky%CO ztr45vR*y(@*Dg_Qw5v~PJtm^@Lyh*zRuT6~(K+^HWEF{;R#L$vL2!_ndBxCtUvZ(_ zauI7Qq}ERUWjr&XW9SwMbU>*@p)(cuWXCxRK&?ZoOy>2VESII53iPDP64S1pl{NsC zD;@EGPxs&}$W1;P6BB9THF%xfoLX|4?S;cu@$)9OdFst-!A7T{(LXtdNQSx!*GUSIS_lyI`da8>!y_tpJb3Zuf0O*;2y?HCfH z5QT6@nL|%l3&u4;F!~XG9E%1YwF*Fgs5V&uFsx52*iag(?6O|gYCBY3R{qhxT-Etb zq(E%V=MgQnuDGEKOGsmBj9T0-nmI%zys8NSO>gfJT4bP>tI>|ol@ zDt(&SUKrg%cz>AmqtJKEMUM;f47FEOFc%Bbmh~|*#E zDd!Tl(wa)ZZIFwe^*)4>{T+zuRykc3^-=P1aI%0Mh}*x7%SP6wD{_? zisraq`Las#y-6{`y@CU3Ta$tOl|@>4qXcB;1bb)oH9kD6 zKym@d$ zv&PZSSAV1Gwwzqrc?^_1+-ZGY+3_7~a(L+`-WdcJMo>EWZN3%z4y6JyF4NR^urk`c z?osO|J#V}k_6*9*n2?j+`F{B<%?9cdTQyVNm8D}H~T}?HOCXt%r7#2hz97Gx#X%62hyaLbU z_ZepP0<`<;eABrHrJAc!_m?kmu#7j}{empH@iUIEk^jk}^EFwO)vd7NZB=&uk6JG^ zC>xad8X$h|eCAOX&MaX<$tA1~r|hW?-0{t4PkVygTc`yh39c;&efwY(-#;$W)+4Xb z$XFsdG&;@^X`aynAMxsq)J#KZXX!sI@g~YiJdHI~r z$4mj_?S29sIa4c$z)19JmJ;Uj?>Kq=0XuH#k#};I&-6zZ_&>)j>UR0XetRO!-sjF< zd_6b1A2vfi++?>cf}s{@#BvTD|a%{9si7G}T+8ZnwuA z1k8c%lgE<-7f~H`cqgF;qZ|$>R-xNPA$25N1WI3#n%gj}4Ix}vj|e=x)B^roGQpB) zO+^#nO2 zjzJ9kHI6nI5ni&V_#5> z!?<7Qd9{|xwIf4b0bRc;zb}V4>snRg6*wl$Xz`hRDN8laL5tg&+@Dv>U^IjGQ}*=XBnXWrwTy;2nX?<1rkvOs#u(#qJ=A zBy>W`N!?%@Ay=upXFI}%LS9bjw?$h)7Dry0%d}=v0YcCSXf9nnp0tBKT1eqZ-4LU` zyiXglKRX)gtT0VbX1}w0f2ce8{$WH?BQm@$`ua%YP8G@<$n13D#*(Yd5-bHfI8!on zf5q4CPdgJLl;BqIo#>CIkX)G;rh|bzGuz1N%rr+5seP${mEg$;uQ3jC$;TsR&{IX< z;}7j3LnV+xNn^$F1;QarDf6rNYj7He+VsjJk6R@0MAkcwrsq4?(~`GKy|mgkfkd1msc2>%B!HpZ~HOzj}kl|ZF(IqB=D6ZTVcKe=I7)LlAI=!XU?J*i#9VXeKeaG zwx_l@Z(w`)5Cclw`6kQKlS<;_Knj)^Dh2pL`hQo!=GPOMR0iqEtx12ORLpN(KBOm5 zontAH5X5!9WHS_=tJfbACz@Dnkuw|^7t=l&x8yb2a~q|aqE_W&0M|tI7@ilGXqE)MONI8p67OiQGqKEQWw;LGga=ZM1;{pSw1jJK_y$vhY6 ztFrV7-xf>lbeKH1U)j3R=?w*>(Yh~NNEPVmeQ8n}0x01$-o z2Jyjn+sXhgOz>AzcZ zAbJZ@f}MBS0lLKR=IE{z;Fav%tcb+`Yi*!`HTDPqSCsFr>;yt^^&SI2mhKJ8f*%ji zz%JkZGvOn{JFn;)5jf^21AvO-9nRzsg0&CPz;OEn07`CfT@gK4abFBT$Mu?8fCcscmRkK+ zbAVJZ~#_a z{|(FFX}~8d3;DW8zuY9?r#Dt>!aD>} zlYw>D7y#eDy+PLZ&XKIY&Df0hsLDDi(Yrq8O==d30RchrUw8a=Eex>Dd?)3+k=}Q> z-b85lun-V$I}86Vg#l1S@1%=$2BQD5_waAZKQfJ${3{b2SZ#w1u+jMr{dJMvI|Og= zpQ9D={XK|ggbe04zTUd}iF{`GO1dV%zWK~?sM9OM(= zVK9&y4F^w1WFW{$qi|xQk0F`@HG8oLI5|5$j~ci9xTMT69v5KS-Yym--raU5kn2#C z<~5q^Bf0rTXVhctG2%&MG(cUGaz(gC(rcG~>qgO$W6>!#NOVQJ;pIYe-lLy(S=HgI zPh;lkL$l+FfMHItHnw_^bj8}CKM19t(C_2vSrhX2$K@-gFlH};#C?1;kk&U1L%4S~ zR^h%h+O1WE7DI$~dly?-_C7>(!E`~#REJ~Xa7lyrB$T!`&qYV5QreAa^aKr%toUJR zPWh)J3iD`(P6BI5k$oE$us#%!4$>`iH2p-88?WV0M$-K)JDibvA4 zpef%_*txN$Ei3=Lt(BBxZ&mhl|mUz-z*OD1=r9nfN zc5vOMFWpi>K=!$6f{eb?5Ru4M3o;t9xLpry|C%j~`@$f)OFB5+xo8XM8g&US@UU-sB|dAoc20y(F@=-2Ggp_`SWjEb#>IG^@j zuQK}e^>So#W2%|-)~K!+)wdU#6l>w5wnZt2pRL5Dz#~N`*UyC9tYechBTc2`@(OI# zNvcE*+zZZjU-H`QOITK^tZwOyLo)ZCLk>>Wm+flMsr5X{A<|m`Y281n?8H_2Fkz5}X?i%Rfm5s+n`J zDB&->=U+LtOIJ|jdYXjQWSQZFEs>Rm{`knop4Sq)(}O_@gk{14y51)iOcGQ5J=b#e z2Yx^6^*F^F7q_m-AGFFgx5uqyw6_4w?yKCJKDGGprWyekr;X(!4CnM5_5?KgN=3qCm03 z##6k%kIU5%g!cCL(+aK>`Wd;dZ4h$h_jb7n?nqx5&o9cUJfr%h#m4+Bh)>HodKcDcsXDXwzJ3jR(sSFqWV(OKHC*cV8;;&bH=ZI0YbW3PgIHwTjiWy z?2MXWO2u0RAEEq(zv9e%Rsz|0(OKB?_3*kkXwHxEuazIZ7=JhaNV*P~hv57q55LoebmJpfHXA@yuS{Esg+ z*C}0V-`x^=0nOa@SPUJek>td~tJ{U1T&m)~`FLp*4DF77S^{|0g%|JIqd-=5)p6a` zpJOsEkKT(FPS@t^80V!I-YJbLE@{5KmVXjEq{QbCnir%}3 zB)-J379=wrBNK6rbUL7Mh^tVmQYn-BJJP=n?P&m-7)P#OZjQoK0{5?}XqJScV6>QX zPR>G{xvU_P;q!;S9Y7*07=Z!=wxIUorMQP(m?te~6&Z0PXQ@I=EYhD*XomZ^z;`Os z4>Uh4)Cg2_##mUa>i1Dxi+R~g#!!i{?SMj%9rfaBPlWj_Yk)lCV--e^&3INB>I?lu z9YXCY5(9U`3o?w2Xa5ErMbl5+pDVpu8v+KJzI9{KFk1H?(1`_W>Cu903Hg81vEX32l{nP2vROa1Fi!Wou0+ZX7Rp`g;B$*Ni3MC-vZ`f zFTi7}c+D)!4hz6NH2e%%t_;tkA0nfkmhLtRW%){TpIqD_ev>}#mVc)<$-1GKO_oK8 zy$CF^aV#x7>F4-J;P@tqWKG0|D1+7h+{ZHU5OVjh>#aa8+V;6BQ)8L5k9t`>)>7zr zfIlv77^`Fvm<)_+^z@ac%D&hnlUAFt8!x=jdaUo{)M9Ar;Tz5Dcd_|~Hl6CaRnK3R zYn${wZe8_BZ0l0c%qbP}>($jsNDay>8+JG@F!uV4F;#zGsBP0f$f3HqEHDz_sCr^q z1;1}7KJ9&`AX2Qdav1(nNzz+GPdEk5K3;hGXe{Hq13{)c zZy%fFEEH#nlJoG{f*M^#8yXuW%!9svN8ry-Vi7AOFnN~r&D`%6d#lvMXBgZkX^vFj z;tkent^62jUr$Cc^@y31Lka6hS>F?1tE8JW$iXO*n9CQMk}D*At3U(-W1E~z>tG?> z5f`5R5LbrhRNR8kv&5d9SL7ke2a*Xr)Qp#75 z6?-p035n2<7hK;sb>t9GAwG4{9v~iEIG>}7B5zcCgZhu$M0-z8?eUO^E?g)md^XT_ z2^~-u$yak>LBy(=*GsTj6p<>b5PO&un@5hGCxpBQlOB3DpsItKZRC*oXq-r{u}Wb; z&ko>#fbnl2Z;o@KqS-d6DTeCG?m1 z&E>p}SEc*)SD&QjZbs!Csjx~0+$@ekuzV_wAalnQvX3a^n~3ui)|rDO+9HW|JPEeBGP4 z)?zcZ<8qv47`EWA*_X~H^vr(lP|f%=%cWFM;u)OFHruKT<~?>5Y8l?56>&;=WdZU# zZEK4-C8s-3zPMA^&y~e*9z)!ZJghr3N^pJa2A$??Xqx-BR*TytGYor&l8Q+^^r%Yq02xay^f#;;wO6K7G!v>wRd6531WnDI~h$PN( z+4#08uX?r&zVKsQ;?5eBX=FxsXaGyH4Gth4a&L|{8LnNCHFr1M{KjJ!BfBS_aiy-E zxtmNcXq3}WTwQ7Dq-9YS5o758sT(5b`Sg-NcH>M9OH1oW6&sZ@|GYk|cJI`vm zO<$~q!3_$&GfWetudRc*mp8)M)q7DEY-#@8w=ItkApfq3sa)*GRqofuL7)dafznKf zLuembr#8gm*lIqKH)KMxSDqbik*B(1bFt%3Vv|ypehXLCa&wc7#u!cJNlUfWs8iQ` z$66(F=1fkxwg745-8_eqV>nWGY3DjB9gE23$R5g&w|C{|xvT@7j*@aZNB199scGchI7pINb5iyqYn)O=yJJX)Ca3&Ca+{n<=1w|(|f0)h<9gs$pVSV<<9Og-V z8ki@nKwE)x)^wmHBMk?mpMT=g{S#^8W|>&rI#Ceh;9za}io0k@0JxiCqi-jHlxbt3 zjJA?RihhRvhk6%G5-D{ePh1jare*fQS<328P-DcVAxPTrw=n6k?C6EV75f}cnBRPT zMYDqqKu(ND&aOtc!QRV`vzJSVxx8i~WB#5Ml{b#eQqNnSi7l-bS-`ITW<^zyYQA(b zbj4SuRK>q9o`_v%+C=S?h>2e4!66Ij(P5{7Uz$3u6YJJC$W%EoBa{-(=tQ|y1vov%ZkXVOV z##_UVg4V^4ne#4~<-1DkJqkKqgT+E_=&4Ue&eQ-JC+gi?7G@d6= zximz{zE)WW{b@QCJ!7l&N5x=dXS?$5RBU-VvN4Uec-GHK&jPa&P2z+qDdLhIB+HU) zu0CW&uLvE^4I5xtK-$+oe|58)7m6*PO%Xt<+-XEA%jG_BEachkF3e@pn?tl!`8lOF zbi2QOuNXX)YT*MCYflILO{VZ*9GiC%R4FO20zMK?p+&aCMm2oeMK7(aW=UDzr=AO0 z$5mJ%=qRsR8rZ>_YsL+vi{3*J_9Kzq(;ZwRj+4_f0-*wbkSMPWahX#Fj_a8BnrhJ6 zo^ZZ?Vah1@&6#r=JkuaYDBdp;J3@ii+CHM&@9*er&#P}$@wI$bfrH)&c!*|nkvhf%^*Y6b%dKz%QBSIo@U z{?V^qEs4`q<8@n+u8YiB^sc@6g>TncG<|GsmC3egwE6aO=EwLr~3-2 zNr`+)`i+-83?|1Xy0^8ps&pb}YT?w1eWVnC9Ps1=KM;Rw)bH6O!7Did1NwpnqVPZc z*%Qo~qkDL>@^<^fmIBtx$WUWQiNtAB2x-LO^BB=|w~-zTnJNEdm1Ou(?8PF&U88X@ z#8rdaTd||)dG^uJw~N_-%!XNbuAyh4`>Shea=pSj0TqP+w4!`nxsmVSv02kb`DBr% zyX=e>5IJ3JYPtdbCHvKMdhXUO_*E9jc_?se7%VJF#&ZaBD;7+eFN3x+hER7!u&`Wz z7zMvBPR4y`*$a250KYjFhAKS%*XG&c;R-kS0wNY1=836wL6q02mqx;IPcH(6ThA@2 zXKQF|9H>6AW$KUF#^A%l6y5{fel77_+cR_zZ0(7=6bmNXABv}R!B-{(E^O6Y?ZS)n zs1QEmh_Fm7p}oRyT3zxUNr4UV8NGs+2b8|4shO$OGFj3D&7_e?#yDi=TTe%$2QbG5 zk<;q7aQ;p!M-Osm{vFdmXZ@!z9uWh!;*%>(vTRggufuUGP9Hols@vhx z73pn$3u2;vzRvnXuT&$Os7J@6y12*j!{ix%3B4YU1466ItmJs0NsU(4ZYRYh7wEA6q{b*Hs6@k~ zi7Yq@Ax!et0cUMTvk7P%ym){MHpcliHEI~e3HP0NV=}7;xFv#IC?a<=`>~j_sk{e> z7vg-tK*p83HZ0=QK@ zRIHo^r{D8&Ms-^WZp+6US_Quqjh$Q66W^1}=Uz&XJ8AQE9&2}P zY|FXZzZ|0IiaBd2qdt6dIjQr(ZMIOU%NG1F&fu6Po9m^?BvLhI6T0R!H2d8;U(&p2 zYA|MFscMqcO(ye~Jp?F;0>Ke+5hzVr?aBNe>GsGgr$XrpS9uajN2kNQ3o$V5rp0T( z0$6TJC;3)26SNG#XcX7l^MKTn$ga?6r4Jzfb%ZgA(Zbwit0$kY=avSnI$@Gk%+^pu zS5mHrcRS8LFPC*uVWH4DDD1pY$H8N>X?KIJZuZ2SvTqc5Nr0GHdD8TCJcd$zIhOdC zZX0ErnsozQh;t^==4zTfrZO421AL?)O)l#GSxU#|LTTg4#&yeK=^w#;q63!Nv~1(@ zs^-RNRuF&qgcr+bIzc@7$h9L;_yjdifE*$j0Q&Np=1AuHL--zdkv@}`1 zo~LlDl_YAq*z?vmr4M`GjDkl9?p|-tl(DtX76oZv25_DtZutLS9Ez!5~p?th@4 zyc_uax4W#<(#)LMkvo)yp|5tKsC2=p#6PyhpH|449T<9Zdk|%CAb5cw?fhvQtBO&7 zpQ9$24yLqPHP;$N&fe2wm%8qdctwIna<3SwGtQA3{C77s%CW%LYxtK(SBGustL0<( zu~U9r0UOkr(c{OJxZS0Ntu3+cJlF7R`7k-Bsa&q?9Ae5{{|o~?cM+T7{lB1^#vT8R z?>c9fNWey`1dKDY%F3d2O*8^qYhjlB8*7HMKE<*=(A`{>=1%s1}Pm&#_t1xy!FkPk@%SMEka2@*= zxDuM|vJJ5s+xgDls{>*o!7eOcs|xuVBPWX&+y5vEiADK%hi`#Dbd>;;Pbk2H4*-X&R?_-6ZEutSd8hC+sSjhIo z;D(j4P;2EVpEj#UF7IjM6PC+X$C5T&=nL`*!*hm9U)#O?>wqOgC>jXKN3Slk_yaQX zLf|4D8T4k|wHW`;#ZQVocNF|3izi0sOqXzi7@KlYC3CXBG`94wD;tMI1bj|8Vm zY}9`VI9!plSfhAal$M_HlaYOVNU?9Z#0<$o?lXXbX3O(l_?f)i3_~r+GcO-x#+x^X zfsZl0>Rj2iP1rsT;+b;Mr? z4Vu&O)Q5ru4j;qaSP5gA{az@XTS1NpT0d9Xhl_FkkRpcEGA0(QQ~YMh#&zwDUkNzm z6cgkdgl9W{iL6ArJ1TQHqnQ^SQ1WGu?FT|93$Ba}mPCH~!$3}0Y0g zcoG%bdTd$bmBx9Y<`Jc+=Cp4}c@EUfjiz;Rcz101p z=?#i$wo>gBE9|szaZMt-d4nUIhBnYRuBVyx+p?5#aZQgUe(!ah`J#l1$%bl5avL27 zU2~@V`3Ic&!?FhDX@Cw!R4%xtWark#p8DLT)HCZ?VJxf^yr@AD*!ERK3#L$E^*Yr? zzN&uF9Roh4rP+r`Z#7U$tzl6>k!b~HgM$C<_crP=vC>6=q{j?(I}!9>g3rJU(&){o z`R^E*9%+kEa8H_fkD9VT7(Fks&Y-RcHaUJYf-|B+eMXMaRM;{FKRiTB>1(=Iij4k1(X__|WqAd-~t#2@UQ}Z&<1Th0azdXfoll!dd)6>1miA z!&=6sDJm=e$?L&06+Q3`D-HNSkK-3$3DdZMX-6Xjn;wd#9A{~ur!2NcX>(qY_oZL0~H7dnQ9sgLe!W>~2|RSW7|hWn<({Pg*xF$%B-!rKe^_R_vc z(LO!0agxxP;FWPV({8#lEv$&&GVakGus=@!3YVG`y^AO1m{2%Np;>HNA1e{=?ra1C}H zAwT0sbwG|!am;fl?*_t^^#yLDXZ*Nx)_FqueZi0c-G~omtpHW0Cu)mEJ`Z1X8brq$ z%vK##b~o*^b&Hz!hgrD=^6P8}aW40lhzMLB5T5*v`1QH?+L~-@CDi3+C@nRf2{7UE zyDIe{@LKw`Eu=Z%6<<_=#V|yxJIKiq_N?ZJ_v0$c)N4l07ZV_mIXG}glfBSPivOhw z-~+9GdckSpMBNR9eR`Y|9_)sXS+u_OiQ%!9rE(2AFjoxN8lk16Sb~^Sq6kRoEp3yD(mm`HsYIXcag_EAB8MHc}nahxVVUTts~U9P|f;7Ul$_` zStR4v&P4q_$KXOEni$lkxy8=9w8G&47VY0oDb^+jT+>ARe3NHUg~St`$RDxY)?;_F znqTujR&chZd2qHF7y8D$4&E3+e@J~!X3&BW4BF(Ebp#TEjrd+9SU!)j;qH+ZkL@AW z?J6Mj}v0_+D zH0qlbzCkHf|EZ`6c>5ig5NAFF%|La%M-}g(7&}Vx8K)qg30YD;H!S!??{;YivzrH0 z(M%2*b_S-)yh&Aiqai)GF^c!<1Xemj|13>dZ_M#)41SrP;OEMaRJ)bCeX*ZT7W`4Y zQ|8L@NHpD@Tf(5>1U(s5iW~Zdf7$@pAL`a3X@YUv1J>q-uJ_(Dy5nYTCUHC}1(dlI zt;5>DLcHh&jbysqt?G01MhXI3!8wgf){Hv}=0N|L$t8M#L7d6WscO8Om2|NBz2Ga^ zs86y%x$H18)~akOWD7@em7)ldlWgb?_sRN>-EcYQO_}aX@+b$dR{146>{kXWP4$nN{V0_+|3{Lt|8uX_fhKh~i{(x%cj*PU$i{PO(5$uA? zQzO>a6oPj-TUk&{zq?JD2MNb6Mf~V3g$ra+PB;ujLJ2JM(a7N*b`y{MX--!fAd}5C zF$D_b8S;+Np(!cW)(hnv5b@@|EMt*RLKF*wy>ykFhEhlPN~n_Bj>LT9B^_yj>z#fx z3JuE4H&?Cc!;G@}E*3k`HK#8ag`yE3Z1)5JUlSua%qkF zkTu|<9{w9OSi$qr)WD#7EzITnch=xnR63E*d~WGvi*Co9BBE?ETHud;!Z)7&wz+l6 zuKODYG1>I1U#a%&(GNJ`AqRfg=H!BtSl+_;CEeufF-#+*2EMMz-22@>18=8PH{PHd z);mN=aR0MPF>eutLiS#-AOX>#2%+pTGEOj!j4L(m0~&xR=0+g#HNpno6@veLhJp}e zyNVC$a>4;!9&iGvU_dj&xbKt@^t6r%f^)+}eV^suRTLP52+BVs0kOLwg6n`=NUv50E7My8XQUh?y%mW62OT1pMrKI3Q(r`7vU&@93=G~A?b(^pvC-8x=bSk zZ60BQR96WB1Z@9Df(M1IQh+YrU8sEjB=Tc2;(zBn-pete*icZE|M&Uc+oHg`|1o`g zH~m+k=D$o);{Rs)b<9Zo|9_Z6L6QHLNki(N>Dw^^i1LITprZeeqIaT#+)fw)PlllU zldphHC)t!0Gf(i9zgVm>`*TbmITF zH1FZ4{wrjRCx{t^26VK_2srZuWuY*EMAsMrJYFFCH35Ky7bq8<0K|ey2wHnrFMZyr z&^yEgX{{3i@&iE5>xKZ{Ads36G3a!i50D!C4?^~cLB<<|fc1!XN(HJRM)H^21sEs%vv+Mu0h*HkLHaEffMwc0n6)JhNXY#M5w@iO@dfXY z0c6dM2a4Hd1SA*#qYj@jK}uVgAZdaBj8t6uuhUNe>)ne9vfd#C6qLV9+@Q7{MnF#0 zJ7fd-ivG_~u3bVvOzpcw1u~ZSp8-kl(sunnX>L~*K-ByWDM2E8>;Si6kn^58AZQxI xVa^It*?521mj4+UJO?7%w*+`EfEcU=@KhDx-s^WzP+ae~{CgHDE&XryzW}Nww%-5% diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2d2fd7c7..fae08049 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists \ No newline at end of file +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a58591e9..a69d9cb6 100644 --- a/gradlew +++ b/gradlew @@ -205,6 +205,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. @@ -231,4 +237,4 @@ eval "set -- $( tr '\n' ' ' )" '"$@"' -exec "$JAVACMD" "$@" \ No newline at end of file +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 477c8966..53a6b238 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,89 +1,91 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega \ No newline at end of file +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 88711cf1a5270b5f9c0e9ba2cf9d9148e7b58743 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 5 May 2023 19:37:56 +0200 Subject: [PATCH 081/126] Fix Parkour not working with boats --- src/main/java/net/wurstclient/hacks/ParkourHack.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/ParkourHack.java b/src/main/java/net/wurstclient/hacks/ParkourHack.java index 8be84195..c5cfb792 100644 --- a/src/main/java/net/wurstclient/hacks/ParkourHack.java +++ b/src/main/java/net/wurstclient/hacks/ParkourHack.java @@ -7,10 +7,7 @@ */ package net.wurstclient.hacks; -import java.util.stream.Stream; - import net.minecraft.util.math.Box; -import net.minecraft.util.shape.VoxelShape; import net.wurstclient.Category; import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; @@ -64,10 +61,7 @@ public final class ParkourHack extends Hack implements UpdateListener Box adjustedBox = box.stretch(0, -minDepth.getValue(), 0) .expand(-edgeDistance.getValue(), 0, -edgeDistance.getValue()); - Stream blockCollisions = - IMC.getWorld().getBlockCollisionsStream(MC.player, adjustedBox); - - if(blockCollisions.findAny().isPresent()) + if(!MC.world.isSpaceEmpty(MC.player, adjustedBox)) return; MC.player.jump(); From 51e8e2d148f03fdc47b1e35bf14ee1dd715380d1 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 5 May 2023 21:43:47 +0200 Subject: [PATCH 082/126] Add edge distance setting to SafeWalk --- .../net/wurstclient/hacks/SafeWalkHack.java | 29 +++++++++++++------ .../mixin/ClientPlayerEntityMixin.java | 7 +++++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/SafeWalkHack.java b/src/main/java/net/wurstclient/hacks/SafeWalkHack.java index a94acccf..745d5965 100644 --- a/src/main/java/net/wurstclient/hacks/SafeWalkHack.java +++ b/src/main/java/net/wurstclient/hacks/SafeWalkHack.java @@ -15,6 +15,8 @@ import net.wurstclient.SearchTags; import net.wurstclient.hack.Hack; import net.wurstclient.mixinterface.IKeyBinding; import net.wurstclient.settings.CheckboxSetting; +import net.wurstclient.settings.SliderSetting; +import net.wurstclient.settings.SliderSetting.ValueDisplay; @SearchTags({"safe walk"}) public final class SafeWalkHack extends Hack @@ -22,6 +24,12 @@ public final class SafeWalkHack extends Hack private final CheckboxSetting sneak = new CheckboxSetting("Sneak at edges", "Visibly sneak at edges.", false); + private final SliderSetting edgeDistance = new SliderSetting( + "Sneak edge distance", + "How close SafeWalk will let you get to the edge before sneaking.\n\n" + + "This setting is only used when \"Sneak at edges\" is enabled.", + 0.05, 0.05, 0.25, 0.001, ValueDisplay.DECIMAL.withSuffix("m")); + private boolean sneaking; public SafeWalkHack() @@ -29,6 +37,7 @@ public final class SafeWalkHack extends Hack super("SafeWalk"); setCategory(Category.MOVEMENT); addSetting(sneak); + addSetting(edgeDistance); } @Override @@ -47,7 +56,9 @@ public final class SafeWalkHack extends Hack public void onClipAtLedge(boolean clipping) { - if(!isEnabled() || !sneak.isChecked() || !MC.player.isOnGround()) + ClientPlayerEntity player = MC.player; + + if(!isEnabled() || !sneak.isChecked() || !player.isOnGround()) { if(sneaking) setSneaking(false); @@ -55,15 +66,13 @@ public final class SafeWalkHack extends Hack return; } - ClientPlayerEntity player = MC.player; - Box bb = player.getBoundingBox(); - float stepHeight = player.stepHeight; + Box box = player.getBoundingBox(); + Box adjustedBox = box.stretch(0, -player.stepHeight, 0) + .expand(-edgeDistance.getValue(), 0, -edgeDistance.getValue()); + + if(MC.world.isSpaceEmpty(player, adjustedBox)) + clipping = true; - for(double x = -0.05; x <= 0.05; x += 0.05) - for(double z = -0.05; z <= 0.05; z += 0.05) - if(MC.world.isSpaceEmpty(player, bb.offset(x, -stepHeight, z))) - clipping = true; - setSneaking(clipping); } @@ -78,4 +87,6 @@ public final class SafeWalkHack extends Hack this.sneaking = sneaking; } + + // See ClientPlayerEntityMixin } diff --git a/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java b/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java index b673fc7b..005bde80 100644 --- a/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientPlayerEntityMixin.java @@ -201,6 +201,9 @@ public class ClientPlayerEntityMixin extends AbstractClientPlayerEntity .getAdditionalJumpMotion(); } + /** + * This is the part that makes SafeWalk work. + */ @Override protected boolean clipAtLedge() { @@ -208,6 +211,10 @@ public class ClientPlayerEntityMixin extends AbstractClientPlayerEntity || WurstClient.INSTANCE.getHax().safeWalkHack.isEnabled(); } + /** + * This mixin allows SafeWalk to sneak visibly when the player is + * near a ledge. + */ @Override protected Vec3d adjustMovementForSneaking(Vec3d movement, MovementType type) { From d67acaa238bb63dc03239ba3cb271c6ff72eb873 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 5 May 2023 21:57:18 +0200 Subject: [PATCH 083/126] Change version to 7.34 --- gradle.properties | 2 +- src/main/java/net/wurstclient/WurstClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index fbaa569d..5ef3bc12 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ loader_version=0.14.19 fabric_version=0.80.0+1.19.4 # Mod Properties -mod_version = v7.33-MC1.19.4 +mod_version = v7.34-MC1.19.4 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 2015ea67..443d8650 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -56,7 +56,7 @@ public enum WurstClient public static MinecraftClient MC; public static IMinecraftClient IMC; - public static final String VERSION = "7.33"; + public static final String VERSION = "7.34"; public static final String MC_VERSION = "1.19.4"; private WurstAnalytics analytics; From 9ab8243b293e0c3e59b2229771847ede0bfc688b Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 7 May 2023 17:47:34 +0200 Subject: [PATCH 084/126] Fix Step legit mode not working below y=-2 --- src/main/java/net/wurstclient/hacks/StepHack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/wurstclient/hacks/StepHack.java b/src/main/java/net/wurstclient/hacks/StepHack.java index b67f69ce..0a50087c 100644 --- a/src/main/java/net/wurstclient/hacks/StepHack.java +++ b/src/main/java/net/wurstclient/hacks/StepHack.java @@ -87,7 +87,7 @@ public final class StepHack extends Hack implements UpdateListener if(!MC.world.isSpaceEmpty(player, box.offset(0, 1, 0))) return; - double stepHeight = -1; + double stepHeight = Double.NEGATIVE_INFINITY; ArrayList blockCollisions = IMC.getWorld().getBlockCollisionsStream(player, box) From cc6c2cc70103e2fd8c3e3ebb94937fb88ad60d47 Mon Sep 17 00:00:00 2001 From: IUDevman <58370012+IUDevman@users.noreply.github.com> Date: Sun, 7 May 2023 17:47:29 -0500 Subject: [PATCH 085/126] Added AntiEntityPush --- .../VelocityFromEntityCollisionListener.java | 54 +++++++++++++++++++ .../java/net/wurstclient/hack/HackList.java | 1 + .../wurstclient/hacks/AntiEntityPushHack.java | 43 +++++++++++++++ .../net/wurstclient/mixin/EntityMixin.java | 17 ++++++ .../resources/assets/wurst/lang/en_us.json | 3 +- 5 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 src/main/java/net/wurstclient/events/VelocityFromEntityCollisionListener.java create mode 100644 src/main/java/net/wurstclient/hacks/AntiEntityPushHack.java diff --git a/src/main/java/net/wurstclient/events/VelocityFromEntityCollisionListener.java b/src/main/java/net/wurstclient/events/VelocityFromEntityCollisionListener.java new file mode 100644 index 00000000..876a8fbe --- /dev/null +++ b/src/main/java/net/wurstclient/events/VelocityFromEntityCollisionListener.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.events; + +import net.minecraft.entity.Entity; +import net.wurstclient.event.CancellableEvent; +import net.wurstclient.event.Listener; + +import java.util.ArrayList; + +public interface VelocityFromEntityCollisionListener extends Listener +{ + + public void onVelocityFromEntityCollision(VelocityFromEntityCollisionEvent event); + + public static class VelocityFromEntityCollisionEvent + extends CancellableEvent + { + private final Entity entity; + + public VelocityFromEntityCollisionEvent(Entity entity) + { + this.entity = entity; + } + + public Entity getEntity() + { + return entity; + } + + @Override + public void fire(ArrayList listeners) + { + for (VelocityFromEntityCollisionListener listener : listeners) + { + listener.onVelocityFromEntityCollision(this); + + if (isCancelled()) + break; + } + } + + @Override + public Class getListenerType() + { + return VelocityFromEntityCollisionListener.class; + } + } +} diff --git a/src/main/java/net/wurstclient/hack/HackList.java b/src/main/java/net/wurstclient/hack/HackList.java index a43ce416..dca3082a 100644 --- a/src/main/java/net/wurstclient/hack/HackList.java +++ b/src/main/java/net/wurstclient/hack/HackList.java @@ -34,6 +34,7 @@ public final class HackList implements UpdateListener public final AntiAfkHack antiAfkHack = new AntiAfkHack(); public final AntiBlindHack antiBlindHack = new AntiBlindHack(); public final AntiCactusHack antiCactusHack = new AntiCactusHack(); + public final AntiEntityPushHack antiEntityPushHack = new AntiEntityPushHack(); public final AntiHungerHack antiHungerHack = new AntiHungerHack(); public final AntiKnockbackHack antiKnockbackHack = new AntiKnockbackHack(); public final AntiSpamHack antiSpamHack = new AntiSpamHack(); diff --git a/src/main/java/net/wurstclient/hacks/AntiEntityPushHack.java b/src/main/java/net/wurstclient/hacks/AntiEntityPushHack.java new file mode 100644 index 00000000..833c5966 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/AntiEntityPushHack.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks; + +import net.wurstclient.Category; +import net.wurstclient.SearchTags; +import net.wurstclient.events.VelocityFromEntityCollisionListener; +import net.wurstclient.hack.Hack; + +@SearchTags({"anti entity push", "NoEntityPush", "no entity push"}) +public final class AntiEntityPushHack extends Hack implements VelocityFromEntityCollisionListener +{ + + public AntiEntityPushHack() + { + super("AntiEntityPush"); + setCategory(Category.MOVEMENT); + } + + @Override + protected void onEnable() + { + EVENTS.add(VelocityFromEntityCollisionListener.class, this); + } + + @Override + protected void onDisable() + { + EVENTS.remove(VelocityFromEntityCollisionListener.class, this); + } + + @Override + public void onVelocityFromEntityCollision(VelocityFromEntityCollisionEvent event) + { + if (event.getEntity() == MC.player) + event.cancel(); + } +} diff --git a/src/main/java/net/wurstclient/mixin/EntityMixin.java b/src/main/java/net/wurstclient/mixin/EntityMixin.java index c02a15b5..dc8c712d 100644 --- a/src/main/java/net/wurstclient/mixin/EntityMixin.java +++ b/src/main/java/net/wurstclient/mixin/EntityMixin.java @@ -10,6 +10,7 @@ package net.wurstclient.mixin; import org.objectweb.asm.Opcodes; 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.Redirect; import net.minecraft.entity.Entity; @@ -18,6 +19,9 @@ import net.minecraft.util.Nameable; import net.minecraft.util.math.Vec3d; import net.wurstclient.event.EventManager; import net.wurstclient.events.VelocityFromFluidListener.VelocityFromFluidEvent; +import net.wurstclient.events.VelocityFromEntityCollisionListener.VelocityFromEntityCollisionEvent; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Entity.class) public abstract class EntityMixin implements Nameable, CommandOutput @@ -36,4 +40,17 @@ public abstract class EntityMixin implements Nameable, CommandOutput if(!event.isCancelled()) entity.setVelocity(velocity); } + + @Inject(at = @At("HEAD"), + method = "Lnet/minecraft/entity/Entity;pushAwayFrom(Lnet/minecraft/entity/Entity;)V", + cancellable = true) + private void onPushAwayFrom(Entity entity, CallbackInfo ci) + { + VelocityFromEntityCollisionEvent event = + new VelocityFromEntityCollisionEvent((Entity)(Object)this); + EventManager.fire(event); + + if(event.isCancelled()) + ci.cancel(); + } } diff --git a/src/main/resources/assets/wurst/lang/en_us.json b/src/main/resources/assets/wurst/lang/en_us.json index 3a7c630d..5cdc338a 100644 --- a/src/main/resources/assets/wurst/lang/en_us.json +++ b/src/main/resources/assets/wurst/lang/en_us.json @@ -5,8 +5,9 @@ "description.wurst.hack.antiafk": "Walks around randomly to hide you from AFK detectors.\nNeeds at least 3x3 blocks of free space.", "description.wurst.hack.antiblind": "Prevents blindness and darkness effects.\nIncompatible with OptiFine.", "description.wurst.hack.anticactus": "Protects you from cactus damage.", + "description.wurst.hack.antientitypush": "Prevents you from getting pushed by players and mobs.", "description.wurst.hack.antihunger": "Slows down your hunger when you are walking.", - "description.wurst.hack.antiknockback": "Prevents you from getting pushed by players and mobs.", + "description.wurst.hack.antiknockback": "Prevents you from taking knockback from players and mobs.", "description.wurst.hack.antispam": "Blocks chat spam by adding a counter to repeated messages.", "description.wurst.hack.antiwaterpush": "Prevents you from getting pushed by water.", "description.wurst.hack.antiwobble": "Disables the wobble effect caused by nausea and portals.", From 38324034de8ee7a0172ba64c5fde5e8f21fbd55b Mon Sep 17 00:00:00 2001 From: IUDevman <58370012+IUDevman@users.noreply.github.com> Date: Sun, 7 May 2023 17:53:16 -0500 Subject: [PATCH 086/126] Update EntityMixin.java --- src/main/java/net/wurstclient/mixin/EntityMixin.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/wurstclient/mixin/EntityMixin.java b/src/main/java/net/wurstclient/mixin/EntityMixin.java index dc8c712d..83152202 100644 --- a/src/main/java/net/wurstclient/mixin/EntityMixin.java +++ b/src/main/java/net/wurstclient/mixin/EntityMixin.java @@ -21,7 +21,6 @@ import net.wurstclient.event.EventManager; import net.wurstclient.events.VelocityFromFluidListener.VelocityFromFluidEvent; import net.wurstclient.events.VelocityFromEntityCollisionListener.VelocityFromEntityCollisionEvent; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Entity.class) public abstract class EntityMixin implements Nameable, CommandOutput From ca85c8ab34f40d98c9adcecfa7de116b1e69292f Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 8 May 2023 20:47:34 +0200 Subject: [PATCH 087/126] Clean up --- .../VelocityFromEntityCollisionListener.java | 77 ++++++++++--------- .../java/net/wurstclient/hack/HackList.java | 3 +- .../wurstclient/hacks/AntiEntityPushHack.java | 53 ++++++------- .../net/wurstclient/mixin/EntityMixin.java | 10 +-- 4 files changed, 73 insertions(+), 70 deletions(-) diff --git a/src/main/java/net/wurstclient/events/VelocityFromEntityCollisionListener.java b/src/main/java/net/wurstclient/events/VelocityFromEntityCollisionListener.java index 876a8fbe..9e08a725 100644 --- a/src/main/java/net/wurstclient/events/VelocityFromEntityCollisionListener.java +++ b/src/main/java/net/wurstclient/events/VelocityFromEntityCollisionListener.java @@ -7,48 +7,49 @@ */ package net.wurstclient.events; +import java.util.ArrayList; + import net.minecraft.entity.Entity; import net.wurstclient.event.CancellableEvent; import net.wurstclient.event.Listener; -import java.util.ArrayList; - public interface VelocityFromEntityCollisionListener extends Listener { - - public void onVelocityFromEntityCollision(VelocityFromEntityCollisionEvent event); - - public static class VelocityFromEntityCollisionEvent - extends CancellableEvent - { - private final Entity entity; - - public VelocityFromEntityCollisionEvent(Entity entity) - { - this.entity = entity; - } - - public Entity getEntity() - { - return entity; - } - - @Override - public void fire(ArrayList listeners) - { - for (VelocityFromEntityCollisionListener listener : listeners) - { - listener.onVelocityFromEntityCollision(this); - - if (isCancelled()) - break; - } - } - - @Override - public Class getListenerType() - { - return VelocityFromEntityCollisionListener.class; - } - } + public void onVelocityFromEntityCollision( + VelocityFromEntityCollisionEvent event); + + public static class VelocityFromEntityCollisionEvent + extends CancellableEvent + { + private final Entity entity; + + public VelocityFromEntityCollisionEvent(Entity entity) + { + this.entity = entity; + } + + public Entity getEntity() + { + return entity; + } + + @Override + public void fire( + ArrayList listeners) + { + for(VelocityFromEntityCollisionListener listener : listeners) + { + listener.onVelocityFromEntityCollision(this); + + if(isCancelled()) + break; + } + } + + @Override + public Class getListenerType() + { + return VelocityFromEntityCollisionListener.class; + } + } } diff --git a/src/main/java/net/wurstclient/hack/HackList.java b/src/main/java/net/wurstclient/hack/HackList.java index dca3082a..97a2c386 100644 --- a/src/main/java/net/wurstclient/hack/HackList.java +++ b/src/main/java/net/wurstclient/hack/HackList.java @@ -34,7 +34,8 @@ public final class HackList implements UpdateListener public final AntiAfkHack antiAfkHack = new AntiAfkHack(); public final AntiBlindHack antiBlindHack = new AntiBlindHack(); public final AntiCactusHack antiCactusHack = new AntiCactusHack(); - public final AntiEntityPushHack antiEntityPushHack = new AntiEntityPushHack(); + public final AntiEntityPushHack antiEntityPushHack = + new AntiEntityPushHack(); public final AntiHungerHack antiHungerHack = new AntiHungerHack(); public final AntiKnockbackHack antiKnockbackHack = new AntiKnockbackHack(); public final AntiSpamHack antiSpamHack = new AntiSpamHack(); diff --git a/src/main/java/net/wurstclient/hacks/AntiEntityPushHack.java b/src/main/java/net/wurstclient/hacks/AntiEntityPushHack.java index 833c5966..cb714383 100644 --- a/src/main/java/net/wurstclient/hacks/AntiEntityPushHack.java +++ b/src/main/java/net/wurstclient/hacks/AntiEntityPushHack.java @@ -13,31 +13,32 @@ import net.wurstclient.events.VelocityFromEntityCollisionListener; import net.wurstclient.hack.Hack; @SearchTags({"anti entity push", "NoEntityPush", "no entity push"}) -public final class AntiEntityPushHack extends Hack implements VelocityFromEntityCollisionListener +public final class AntiEntityPushHack extends Hack + implements VelocityFromEntityCollisionListener { - - public AntiEntityPushHack() - { - super("AntiEntityPush"); - setCategory(Category.MOVEMENT); - } - - @Override - protected void onEnable() - { - EVENTS.add(VelocityFromEntityCollisionListener.class, this); - } - - @Override - protected void onDisable() - { - EVENTS.remove(VelocityFromEntityCollisionListener.class, this); - } - - @Override - public void onVelocityFromEntityCollision(VelocityFromEntityCollisionEvent event) - { - if (event.getEntity() == MC.player) - event.cancel(); - } + public AntiEntityPushHack() + { + super("AntiEntityPush"); + setCategory(Category.MOVEMENT); + } + + @Override + protected void onEnable() + { + EVENTS.add(VelocityFromEntityCollisionListener.class, this); + } + + @Override + protected void onDisable() + { + EVENTS.remove(VelocityFromEntityCollisionListener.class, this); + } + + @Override + public void onVelocityFromEntityCollision( + VelocityFromEntityCollisionEvent event) + { + if(event.getEntity() == MC.player) + event.cancel(); + } } diff --git a/src/main/java/net/wurstclient/mixin/EntityMixin.java b/src/main/java/net/wurstclient/mixin/EntityMixin.java index 83152202..a0de4770 100644 --- a/src/main/java/net/wurstclient/mixin/EntityMixin.java +++ b/src/main/java/net/wurstclient/mixin/EntityMixin.java @@ -12,15 +12,15 @@ 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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.entity.Entity; import net.minecraft.server.command.CommandOutput; import net.minecraft.util.Nameable; import net.minecraft.util.math.Vec3d; import net.wurstclient.event.EventManager; -import net.wurstclient.events.VelocityFromFluidListener.VelocityFromFluidEvent; import net.wurstclient.events.VelocityFromEntityCollisionListener.VelocityFromEntityCollisionEvent; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import net.wurstclient.events.VelocityFromFluidListener.VelocityFromFluidEvent; @Mixin(Entity.class) public abstract class EntityMixin implements Nameable, CommandOutput @@ -39,16 +39,16 @@ public abstract class EntityMixin implements Nameable, CommandOutput if(!event.isCancelled()) entity.setVelocity(velocity); } - + @Inject(at = @At("HEAD"), method = "Lnet/minecraft/entity/Entity;pushAwayFrom(Lnet/minecraft/entity/Entity;)V", cancellable = true) private void onPushAwayFrom(Entity entity, CallbackInfo ci) { VelocityFromEntityCollisionEvent event = - new VelocityFromEntityCollisionEvent((Entity)(Object)this); + new VelocityFromEntityCollisionEvent((Entity)(Object)this); EventManager.fire(event); - + if(event.isCancelled()) ci.cancel(); } From aee8e75e79e7a8cdc737201b95a0fa86b37e0c9f Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 8 May 2023 20:52:22 +0200 Subject: [PATCH 088/126] ContainerScreen54 -> GenericContainerScreen --- ...nerScreen54Mixin.java => GenericContainerScreenMixin.java} | 4 ++-- src/main/resources/wurst.mixins.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/main/java/net/wurstclient/mixin/{ContainerScreen54Mixin.java => GenericContainerScreenMixin.java} (96%) diff --git a/src/main/java/net/wurstclient/mixin/ContainerScreen54Mixin.java b/src/main/java/net/wurstclient/mixin/GenericContainerScreenMixin.java similarity index 96% rename from src/main/java/net/wurstclient/mixin/ContainerScreen54Mixin.java rename to src/main/java/net/wurstclient/mixin/GenericContainerScreenMixin.java index 4f29aafb..4ef08b15 100644 --- a/src/main/java/net/wurstclient/mixin/ContainerScreen54Mixin.java +++ b/src/main/java/net/wurstclient/mixin/GenericContainerScreenMixin.java @@ -24,7 +24,7 @@ import net.wurstclient.WurstClient; import net.wurstclient.hacks.AutoStealHack; @Mixin(GenericContainerScreen.class) -public abstract class ContainerScreen54Mixin +public abstract class GenericContainerScreenMixin extends HandledScreen implements ScreenHandlerProvider { @@ -36,7 +36,7 @@ public abstract class ContainerScreen54Mixin WurstClient.INSTANCE.getHax().autoStealHack; private int mode; - public ContainerScreen54Mixin(WurstClient wurst, + public GenericContainerScreenMixin(WurstClient wurst, GenericContainerScreenHandler container, PlayerInventory playerInventory, Text name) { diff --git a/src/main/resources/wurst.mixins.json b/src/main/resources/wurst.mixins.json index 0bdd327d..e8a7224b 100644 --- a/src/main/resources/wurst.mixins.json +++ b/src/main/resources/wurst.mixins.json @@ -23,7 +23,6 @@ "ClientPlayerEntityMixin", "ClientPlayerInteractionManagerMixin", "ClientPlayNetworkHandlerMixin", - "ContainerScreen54Mixin", "CreativeInventoryScreenMixin", "CustomPayloadC2SPacketAccessor", "DeathScreenMixin", @@ -36,6 +35,7 @@ "FluidRendererMixin", "GameMenuScreenMixin", "GameRendererMixin", + "GenericContainerScreenMixin", "IngameHudMixin", "InGameOverlayRendererMixin", "KeyBindingMixin", From b29c38bc26ce83e413a315a09f189a0e1849e8d0 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 12:27:36 +0200 Subject: [PATCH 089/126] Revert FeedAura change --- .../java/net/wurstclient/hacks/FeedAuraHack.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java index 9bdc80b9..74173699 100644 --- a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java @@ -20,6 +20,7 @@ import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.ClientPlayerInteractionManager; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.LivingEntity; import net.minecraft.entity.passive.AbstractHorseEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.TameableEntity; @@ -198,6 +199,11 @@ public final class FeedAuraHack extends Hack int regionZ = (camPos.getZ() >> 9) * 512; Box box = new Box(BlockPos.ORIGIN); + float p = 1; + LivingEntity le = renderTarget; + p = (le.getMaxHealth() - le.getHealth()) / le.getMaxHealth(); + float green = p * 2F; + float red = 2 - green; matrixStack.translate( MathHelper.lerp(partialTicks, renderTarget.prevX, @@ -212,12 +218,16 @@ public final class FeedAuraHack extends Hack renderTarget.getWidth()); matrixStack.translate(-0.5, 0, -0.5); + matrixStack.translate(0.5, 0.5, 0.5); + matrixStack.scale(p, p, p); + matrixStack.translate(-0.5, -0.5, -0.5); + RenderSystem.setShader(GameRenderer::getPositionProgram); - RenderSystem.setShaderColor(1, 0, 0, 0.25F); + RenderSystem.setShaderColor(red, green, 0, 0.25F); RenderUtils.drawSolidBox(box, matrixStack); - RenderSystem.setShaderColor(1, 0, 0, 0.5F); + RenderSystem.setShaderColor(red, green, 0, 0.5F); RenderUtils.drawOutlinedBox(box, matrixStack); matrixStack.pop(); From f8a6274db34220be1197e47a2d9f8ddaab4cd5bc Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 12:27:47 +0200 Subject: [PATCH 090/126] Revert RenderUtils --- src/main/java/net/wurstclient/util/RenderUtils.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/net/wurstclient/util/RenderUtils.java b/src/main/java/net/wurstclient/util/RenderUtils.java index 6f8a00d2..06674d97 100644 --- a/src/main/java/net/wurstclient/util/RenderUtils.java +++ b/src/main/java/net/wurstclient/util/RenderUtils.java @@ -53,6 +53,14 @@ public enum RenderUtils GL11.glScissor(scissorX, scissorY, scissorWidth, scissorHeight); } + public static void applyRenderOffset(MatrixStack matrixStack) + { + applyCameraRotationOnly(); + Vec3d camPos = getCameraPos(); + + matrixStack.translate(-camPos.x, -camPos.y, -camPos.z); + } + public static void applyRegionalRenderOffset(MatrixStack matrixStack) { applyCameraRotationOnly(); From 861a16218faae235d0e8109ae5315ea087a1d81f Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 12:35:24 +0200 Subject: [PATCH 091/126] Clean up --- .../java/net/wurstclient/ai/PathRenderer.java | 3 ++- .../net/wurstclient/hacks/BowAimbotHack.java | 4 ++-- .../net/wurstclient/hacks/ExcavatorHack.java | 20 +++++++++---------- .../net/wurstclient/hacks/FreecamHack.java | 9 +++++---- .../wurstclient/hacks/InstantBunkerHack.java | 5 +++-- .../net/wurstclient/hacks/ItemEspHack.java | 13 +++++++----- .../wurstclient/hacks/PlayerFinderHack.java | 5 +++-- 7 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/main/java/net/wurstclient/ai/PathRenderer.java b/src/main/java/net/wurstclient/ai/PathRenderer.java index a0414b87..909abae0 100644 --- a/src/main/java/net/wurstclient/ai/PathRenderer.java +++ b/src/main/java/net/wurstclient/ai/PathRenderer.java @@ -98,7 +98,8 @@ public final class PathRenderer tessellator.draw(); } - public static void renderNode(MatrixStack matrixStack, BlockPos pos, int regionX, int regionZ) + public static void renderNode(MatrixStack matrixStack, BlockPos pos, + int regionX, int regionZ) { matrixStack.push(); diff --git a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java index 06581ccf..7e014ad3 100644 --- a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java +++ b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java @@ -217,8 +217,8 @@ public final class BowAimbotHack extends Hack int regionZ = (camPos.getZ() >> 9) * 512; // set position - matrixStack.translate(target.getX() - regionX, - target.getY(), target.getZ() - regionZ); + matrixStack.translate(target.getX() - regionX, target.getY(), + target.getZ() - regionZ); // set size float boxWidth = target.getWidth() + 0.1F; diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index 1a4752e8..e5367c4f 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -181,8 +181,8 @@ public final class ExcavatorHack extends Hack BlockPos pos = area.blocksList.get(i); matrixStack.push(); - matrixStack.translate(pos.getX() - regionX, - pos.getY(), pos.getZ() - regionZ); + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); matrixStack.translate(-0.005, -0.005, -0.005); matrixStack.scale(1.01F, 1.01F, 1.01F); @@ -196,8 +196,8 @@ public final class ExcavatorHack extends Hack } matrixStack.push(); - matrixStack.translate(area.minX + offset - regionX, area.minY + offset, - area.minZ + offset - regionZ); + matrixStack.translate(area.minX + offset - regionX, + area.minY + offset, area.minZ + offset - regionZ); matrixStack.scale(area.sizeX + scale, area.sizeY + scale, area.sizeZ + scale); @@ -256,8 +256,8 @@ public final class ExcavatorHack extends Hack // area box matrixStack.push(); - matrixStack.translate(preview.minX + offset - regionX, preview.minY + offset, - preview.minZ + offset - regionZ); + matrixStack.translate(preview.minX + offset - regionX, + preview.minY + offset, preview.minZ + offset - regionZ); matrixStack.scale(preview.sizeX + scale, preview.sizeY + scale, preview.sizeZ + scale); RenderSystem.setShaderColor(0F, 0F, 0F, 0.5F); @@ -271,8 +271,8 @@ public final class ExcavatorHack extends Hack if(posLookingAt != null) { matrixStack.push(); - matrixStack.translate(posLookingAt.getX() - regionX, posLookingAt.getY(), - posLookingAt.getZ() - regionZ); + matrixStack.translate(posLookingAt.getX() - regionX, + posLookingAt.getY(), posLookingAt.getZ() - regionZ); matrixStack.translate(offset, offset, offset); matrixStack.scale(scale, scale, scale); @@ -290,8 +290,8 @@ public final class ExcavatorHack extends Hack if(currentBlock != null) { // set position - matrixStack.translate(currentBlock.getX() - regionX, currentBlock.getY(), - currentBlock.getZ() - regionZ); + matrixStack.translate(currentBlock.getX() - regionX, + currentBlock.getY(), currentBlock.getZ() - regionZ); // get progress float progress; diff --git a/src/main/java/net/wurstclient/hacks/FreecamHack.java b/src/main/java/net/wurstclient/hacks/FreecamHack.java index a9220a1e..a8f2271c 100644 --- a/src/main/java/net/wurstclient/hacks/FreecamHack.java +++ b/src/main/java/net/wurstclient/hacks/FreecamHack.java @@ -208,10 +208,10 @@ public final class FreecamHack extends Hack implements UpdateListener, matrixStack.pop(); // line - Vec3d start = RotationUtils.getClientLookVec(). - add(RenderUtils.getCameraPos()).subtract(regionX, 0, regionZ); - Vec3d end = fakePlayer.getBoundingBox().getCenter() - .subtract(regionX, 0, regionZ); + Vec3d start = RotationUtils.getClientLookVec() + .add(RenderUtils.getCameraPos()).subtract(regionX, 0, regionZ); + Vec3d end = fakePlayer.getBoundingBox().getCenter().subtract(regionX, 0, + regionZ); Matrix4f matrix = matrixStack.peek().getPositionMatrix(); Tessellator tessellator = RenderSystem.renderThreadTesselator(); @@ -230,6 +230,7 @@ public final class FreecamHack extends Hack implements UpdateListener, matrixStack.pop(); // GL resets + RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_LINE_SMOOTH); diff --git a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java index 1cd38109..8feb68f6 100644 --- a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java +++ b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java @@ -291,8 +291,8 @@ public final class InstantBunkerHack extends Hack BlockPos pos = positions.get(i); matrixStack.push(); - matrixStack.translate(pos.getX() - regionX, - pos.getY(), pos.getZ() - regionZ); + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); matrixStack.translate(offset, offset, offset); matrixStack.scale(scale, scale, scale); @@ -304,6 +304,7 @@ public final class InstantBunkerHack extends Hack matrixStack.pop(); // GL resets + RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glDisable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_LINE_SMOOTH); } diff --git a/src/main/java/net/wurstclient/hacks/ItemEspHack.java b/src/main/java/net/wurstclient/hacks/ItemEspHack.java index 0242d375..986816b6 100644 --- a/src/main/java/net/wurstclient/hacks/ItemEspHack.java +++ b/src/main/java/net/wurstclient/hacks/ItemEspHack.java @@ -183,12 +183,15 @@ public final class ItemEspHack extends Hack implements UpdateListener, Vec3d end = e.getBoundingBox().getCenter() .subtract(new Vec3d(e.getX(), e.getY(), e.getZ()) .subtract(e.prevX, e.prevY, e.prevZ) - .multiply(1 - partialTicks)).subtract(regionX, 0, regionZ); + .multiply(1 - partialTicks)) + .subtract(regionX, 0, regionZ); - bufferBuilder.vertex(matrix, (float)start.x, (float)start.y, - (float)start.z).next(); - bufferBuilder.vertex(matrix, (float)end.x, (float)end.y, - (float)end.z).next(); + bufferBuilder + .vertex(matrix, (float)start.x, (float)start.y, (float)start.z) + .next(); + bufferBuilder + .vertex(matrix, (float)end.x, (float)end.y, (float)end.z) + .next(); } tessellator.draw(); } diff --git a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java index 55848362..d088b0c2 100644 --- a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java @@ -108,8 +108,8 @@ public final class PlayerFinderHack extends Hack VertexFormats.POSITION); // set start position - Vec3d start = RotationUtils.getClientLookVec(). - add(RenderUtils.getCameraPos()).subtract(regionX, 0, regionZ); + Vec3d start = RotationUtils.getClientLookVec() + .add(RenderUtils.getCameraPos()).subtract(regionX, 0, regionZ); // set end position Vec3d end = Vec3d.ofCenter(pos).subtract(regionX, 0, regionZ); @@ -141,6 +141,7 @@ public final class PlayerFinderHack extends Hack matrixStack.pop(); // GL resets + RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_LINE_SMOOTH); From 42e130a9f67adb2630deb4dcbd469347b42b60ab Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 14:03:46 +0200 Subject: [PATCH 092/126] Add region offset method with X & Z params --- src/main/java/net/wurstclient/ai/PathFinder.java | 3 ++- src/main/java/net/wurstclient/hacks/AutoBuildHack.java | 2 +- src/main/java/net/wurstclient/hacks/AutoFarmHack.java | 2 +- .../java/net/wurstclient/hacks/AutoLibrarianHack.java | 2 +- src/main/java/net/wurstclient/hacks/BowAimbotHack.java | 2 +- .../java/net/wurstclient/hacks/BuildRandomHack.java | 2 +- src/main/java/net/wurstclient/hacks/ExcavatorHack.java | 2 +- src/main/java/net/wurstclient/hacks/FeedAuraHack.java | 2 +- src/main/java/net/wurstclient/hacks/FreecamHack.java | 2 +- .../java/net/wurstclient/hacks/InstantBunkerHack.java | 2 +- src/main/java/net/wurstclient/hacks/ItemEspHack.java | 2 +- src/main/java/net/wurstclient/hacks/KillauraHack.java | 2 +- .../java/net/wurstclient/hacks/KillauraLegitHack.java | 2 +- src/main/java/net/wurstclient/hacks/MobEspHack.java | 2 +- src/main/java/net/wurstclient/hacks/NukerHack.java | 2 +- .../java/net/wurstclient/hacks/NukerLegitHack.java | 2 +- src/main/java/net/wurstclient/hacks/OverlayHack.java | 2 +- src/main/java/net/wurstclient/hacks/PlayerEspHack.java | 2 +- .../java/net/wurstclient/hacks/PlayerFinderHack.java | 2 +- .../java/net/wurstclient/hacks/ProphuntEspHack.java | 2 +- src/main/java/net/wurstclient/hacks/TreeBotHack.java | 3 +-- src/main/java/net/wurstclient/hacks/TunnellerHack.java | 10 +++++----- .../wurstclient/hacks/autofish/AutoFishDebugDraw.java | 5 ++--- src/main/java/net/wurstclient/util/RenderUtils.java | 10 ++++++++++ 24 files changed, 39 insertions(+), 30 deletions(-) diff --git a/src/main/java/net/wurstclient/ai/PathFinder.java b/src/main/java/net/wurstclient/ai/PathFinder.java index d88963bb..f39dbbef 100644 --- a/src/main/java/net/wurstclient/ai/PathFinder.java +++ b/src/main/java/net/wurstclient/ai/PathFinder.java @@ -563,11 +563,12 @@ public class PathFinder GL11.glDepthMask(false); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); + matrixStack.translate(0.5, 0.5, 0.5); if(debugMode) diff --git a/src/main/java/net/wurstclient/hacks/AutoBuildHack.java b/src/main/java/net/wurstclient/hacks/AutoBuildHack.java index 8b9d0dcb..6f8d11ad 100644 --- a/src/main/java/net/wurstclient/hacks/AutoBuildHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoBuildHack.java @@ -362,11 +362,11 @@ public final class AutoBuildHack extends Hack RenderSystem.setShaderColor(0F, 0F, 0F, 0.5F); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); int blocksDrawn = 0; RenderSystem.setShader(GameRenderer::getPositionProgram); diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index 5b8dc055..5ab5ac8e 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -198,11 +198,11 @@ public final class AutoFarmHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); RenderSystem.setShader(GameRenderer::getPositionProgram); Matrix4f viewMatrix = matrixStack.peek().getPositionMatrix(); diff --git a/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java b/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java index bef0519a..3b9dd0d4 100644 --- a/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java @@ -525,11 +525,11 @@ public final class AutoLibrarianHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); RenderSystem.setShaderColor(0, 1, 0, 0.75F); diff --git a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java index 7e014ad3..f8f3e3ef 100644 --- a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java +++ b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java @@ -210,11 +210,11 @@ public final class BowAimbotHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); // set position matrixStack.translate(target.getX() - regionX, target.getY(), diff --git a/src/main/java/net/wurstclient/hacks/BuildRandomHack.java b/src/main/java/net/wurstclient/hacks/BuildRandomHack.java index 18c371e1..8ab78e76 100644 --- a/src/main/java/net/wurstclient/hacks/BuildRandomHack.java +++ b/src/main/java/net/wurstclient/hacks/BuildRandomHack.java @@ -140,11 +140,11 @@ public final class BuildRandomHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); // set position matrixStack.translate(lastPos.getX() - regionX, lastPos.getY(), diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index e5367c4f..de21456b 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -160,11 +160,11 @@ public final class ExcavatorHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); RenderSystem.setShader(GameRenderer::getPositionProgram); diff --git a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java index 74173699..66d40727 100644 --- a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java @@ -192,11 +192,11 @@ public final class FeedAuraHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); Box box = new Box(BlockPos.ORIGIN); float p = 1; diff --git a/src/main/java/net/wurstclient/hacks/FreecamHack.java b/src/main/java/net/wurstclient/hacks/FreecamHack.java index a8f2271c..469c110f 100644 --- a/src/main/java/net/wurstclient/hacks/FreecamHack.java +++ b/src/main/java/net/wurstclient/hacks/FreecamHack.java @@ -188,11 +188,11 @@ public final class FreecamHack extends Hack implements UpdateListener, GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); float[] colorF = color.getColorF(); RenderSystem.setShaderColor(colorF[0], colorF[1], colorF[2], 0.5F); diff --git a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java index 8feb68f6..346eb176 100644 --- a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java +++ b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java @@ -260,11 +260,11 @@ public final class InstantBunkerHack extends Hack GL11.glDisable(GL11.GL_CULL_FACE); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); // green box { diff --git a/src/main/java/net/wurstclient/hacks/ItemEspHack.java b/src/main/java/net/wurstclient/hacks/ItemEspHack.java index 986816b6..08ee4300 100644 --- a/src/main/java/net/wurstclient/hacks/ItemEspHack.java +++ b/src/main/java/net/wurstclient/hacks/ItemEspHack.java @@ -105,11 +105,11 @@ public final class ItemEspHack extends Hack implements UpdateListener, GL11.glEnable(GL11.GL_LINE_SMOOTH); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); renderBoxes(matrixStack, partialTicks, regionX, regionZ); diff --git a/src/main/java/net/wurstclient/hacks/KillauraHack.java b/src/main/java/net/wurstclient/hacks/KillauraHack.java index f0b0b94d..cc675f73 100644 --- a/src/main/java/net/wurstclient/hacks/KillauraHack.java +++ b/src/main/java/net/wurstclient/hacks/KillauraHack.java @@ -204,11 +204,11 @@ public final class KillauraHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); Box box = new Box(BlockPos.ORIGIN); float p = 1; diff --git a/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java b/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java index e5511999..0b34f143 100644 --- a/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java @@ -219,11 +219,11 @@ public final class KillauraLegitHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); Box box = new Box(BlockPos.ORIGIN); float p = 1; diff --git a/src/main/java/net/wurstclient/hacks/MobEspHack.java b/src/main/java/net/wurstclient/hacks/MobEspHack.java index 1a1f628b..6ec69801 100644 --- a/src/main/java/net/wurstclient/hacks/MobEspHack.java +++ b/src/main/java/net/wurstclient/hacks/MobEspHack.java @@ -125,11 +125,11 @@ public final class MobEspHack extends Hack implements UpdateListener, GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); if(style.getSelected().boxes) renderBoxes(matrixStack, partialTicks, regionX, regionZ); diff --git a/src/main/java/net/wurstclient/hacks/NukerHack.java b/src/main/java/net/wurstclient/hacks/NukerHack.java index be323003..f8caac2c 100644 --- a/src/main/java/net/wurstclient/hacks/NukerHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerHack.java @@ -249,11 +249,11 @@ public final class NukerHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); Box box = new Box(BlockPos.ORIGIN); float p = prevProgress + (progress - prevProgress) * partialTicks; diff --git a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java index 85a1e0a5..bf50b7f9 100644 --- a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java @@ -290,11 +290,11 @@ public final class NukerLegitHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); // set position matrixStack.translate(currentBlock.getX() - regionX, diff --git a/src/main/java/net/wurstclient/hacks/OverlayHack.java b/src/main/java/net/wurstclient/hacks/OverlayHack.java index 7675841d..496cebcb 100644 --- a/src/main/java/net/wurstclient/hacks/OverlayHack.java +++ b/src/main/java/net/wurstclient/hacks/OverlayHack.java @@ -63,11 +63,11 @@ public final class OverlayHack extends Hack implements RenderListener GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); // set position matrixStack.translate(pos.getX() - regionX, pos.getY(), diff --git a/src/main/java/net/wurstclient/hacks/PlayerEspHack.java b/src/main/java/net/wurstclient/hacks/PlayerEspHack.java index 29b2f4e3..9e167106 100644 --- a/src/main/java/net/wurstclient/hacks/PlayerEspHack.java +++ b/src/main/java/net/wurstclient/hacks/PlayerEspHack.java @@ -123,11 +123,11 @@ public final class PlayerEspHack extends Hack implements UpdateListener, GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); // draw boxes if(style.getSelected().boxes) diff --git a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java index d088b0c2..ed9a696d 100644 --- a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java @@ -89,11 +89,11 @@ public final class PlayerFinderHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); float[] rainbow = RenderUtils.getRainbowColor(); RenderSystem.setShaderColor(rainbow[0], rainbow[1], rainbow[2], 0.5F); diff --git a/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java b/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java index 9ab37bef..9e0b5f5c 100644 --- a/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java +++ b/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java @@ -58,11 +58,11 @@ public final class ProphuntEspHack extends Hack implements RenderListener GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); // set color float alpha = 0.5F + 0.25F * MathHelper diff --git a/src/main/java/net/wurstclient/hacks/TreeBotHack.java b/src/main/java/net/wurstclient/hacks/TreeBotHack.java index 5810e5c0..db70d964 100644 --- a/src/main/java/net/wurstclient/hacks/TreeBotHack.java +++ b/src/main/java/net/wurstclient/hacks/TreeBotHack.java @@ -334,11 +334,10 @@ public final class TreeBotHack extends Hack { matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); - BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); Box box = new Box(BlockPos.ORIGIN); float p = prevProgress + (progress - prevProgress) * partialTicks; diff --git a/src/main/java/net/wurstclient/hacks/TunnellerHack.java b/src/main/java/net/wurstclient/hacks/TunnellerHack.java index e87c57a6..146a6996 100644 --- a/src/main/java/net/wurstclient/hacks/TunnellerHack.java +++ b/src/main/java/net/wurstclient/hacks/TunnellerHack.java @@ -207,7 +207,11 @@ public final class TunnellerHack extends Hack GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); RenderSystem.setShader(GameRenderer::getPositionProgram); @@ -240,10 +244,6 @@ public final class TunnellerHack extends Hack float red = p * 2F; float green = 2 - red; - BlockPos camPos = RenderUtils.getCameraBlockPos(); - int regionX = (camPos.getX() >> 9) * 512; - int regionZ = (camPos.getZ() >> 9) * 512; - matrixStack.translate(currentBlock.getX() - regionX, currentBlock.getY(), currentBlock.getZ() - regionZ); if(p < 1) diff --git a/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java b/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java index f52fa3d4..7d843536 100644 --- a/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java +++ b/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java @@ -79,14 +79,13 @@ public final class AutoFishDebugDraw GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); - RenderUtils.applyRegionalRenderOffset(matrixStack); - - FishingBobberEntity bobber = WurstClient.MC.player.fishHook; BlockPos camPos = RenderUtils.getCameraBlockPos(); int regionX = (camPos.getX() >> 9) * 512; int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); + FishingBobberEntity bobber = WurstClient.MC.player.fishHook; if(bobber != null && validRangeBox != null) drawValidRange(matrixStack, bobber, regionX, regionZ); diff --git a/src/main/java/net/wurstclient/util/RenderUtils.java b/src/main/java/net/wurstclient/util/RenderUtils.java index 06674d97..5f6830a7 100644 --- a/src/main/java/net/wurstclient/util/RenderUtils.java +++ b/src/main/java/net/wurstclient/util/RenderUtils.java @@ -75,6 +75,16 @@ public enum RenderUtils regionZ - camPos.z); } + public static void applyRegionalRenderOffset(MatrixStack matrixStack, + int regionX, int regionZ) + { + applyCameraRotationOnly(); + + Vec3d camPos = getCameraPos(); + matrixStack.translate(regionX - camPos.x, -camPos.y, + regionZ - camPos.z); + } + public static void applyRegionalRenderOffset(MatrixStack matrixStack, Chunk chunk) { From 28a7156b39152971ce4b820c1f63c6306460b25c Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 14:23:37 +0200 Subject: [PATCH 093/126] Remove PlayerFinder It no longer works in modern Minecraft versions and there doesn't seem to be a new way of detecting lightning bolts at a distance. --- .../java/net/wurstclient/hack/HackList.java | 1 - .../wurstclient/hacks/PlayerFinderHack.java | 179 ------------------ 2 files changed, 180 deletions(-) delete mode 100644 src/main/java/net/wurstclient/hacks/PlayerFinderHack.java diff --git a/src/main/java/net/wurstclient/hack/HackList.java b/src/main/java/net/wurstclient/hack/HackList.java index 97a2c386..e55ca896 100644 --- a/src/main/java/net/wurstclient/hack/HackList.java +++ b/src/main/java/net/wurstclient/hack/HackList.java @@ -147,7 +147,6 @@ public final class HackList implements UpdateListener public final PanicHack panicHack = new PanicHack(); public final ParkourHack parkourHack = new ParkourHack(); public final PlayerEspHack playerEspHack = new PlayerEspHack(); - public final PlayerFinderHack playerFinderHack = new PlayerFinderHack(); public final PortalGuiHack portalGuiHack = new PortalGuiHack(); public final PotionSaverHack potionSaverHack = new PotionSaverHack(); public final ProphuntEspHack prophuntEspHack = new ProphuntEspHack(); diff --git a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java b/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java deleted file mode 100644 index ed9a696d..00000000 --- a/src/main/java/net/wurstclient/hacks/PlayerFinderHack.java +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright (c) 2014-2023 Wurst-Imperium and contributors. - * - * 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.hacks; - -import org.joml.Matrix4f; -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.client.render.BufferBuilder; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.Tessellator; -import net.minecraft.client.render.VertexFormat; -import net.minecraft.client.render.VertexFormats; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.wurstclient.Category; -import net.wurstclient.SearchTags; -import net.wurstclient.events.PacketInputListener; -import net.wurstclient.events.RenderListener; -import net.wurstclient.events.UpdateListener; -import net.wurstclient.hack.Hack; -import net.wurstclient.util.ChatUtils; -import net.wurstclient.util.RenderUtils; -import net.wurstclient.util.RotationUtils; - -@SearchTags({"player finder"}) -public final class PlayerFinderHack extends Hack - implements UpdateListener, PacketInputListener, RenderListener -{ - private BlockPos pos; - private BlockPos lastPos; - - public PlayerFinderHack() - { - super("PlayerFinder"); - setCategory(Category.RENDER); - } - - @Override - public void onEnable() - { - pos = null; - lastPos = null; - - EVENTS.add(UpdateListener.class, this); - EVENTS.add(PacketInputListener.class, this); - EVENTS.add(RenderListener.class, this); - } - - @Override - public void onDisable() - { - EVENTS.remove(UpdateListener.class, this); - EVENTS.remove(PacketInputListener.class, this); - EVENTS.remove(RenderListener.class, this); - } - - @Override - public void onUpdate() - { - if(pos == null || pos.equals(lastPos)) - return; - - ChatUtils.message("PlayerFinder has detected a player near " - + pos.toShortString() + "."); - lastPos = pos; - } - - @Override - public void onRender(MatrixStack matrixStack, float partialTicks) - { - if(pos == null) - return; - - // GL settings - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_DEPTH_TEST); - - matrixStack.push(); - - BlockPos camPos = RenderUtils.getCameraBlockPos(); - int regionX = (camPos.getX() >> 9) * 512; - int regionZ = (camPos.getZ() >> 9) * 512; - RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); - - float[] rainbow = RenderUtils.getRainbowColor(); - RenderSystem.setShaderColor(rainbow[0], rainbow[1], rainbow[2], 0.5F); - - Matrix4f matrix = matrixStack.peek().getPositionMatrix(); - Tessellator tessellator = RenderSystem.renderThreadTesselator(); - BufferBuilder bufferBuilder = tessellator.getBuffer(); - RenderSystem.setShader(GameRenderer::getPositionProgram); - - // tracer line - bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, - VertexFormats.POSITION); - - // set start position - Vec3d start = RotationUtils.getClientLookVec() - .add(RenderUtils.getCameraPos()).subtract(regionX, 0, regionZ); - - // set end position - Vec3d end = Vec3d.ofCenter(pos).subtract(regionX, 0, regionZ); - - // draw line - bufferBuilder - .vertex(matrix, (float)start.x, (float)start.y, (float)start.z) - .next(); - bufferBuilder.vertex(matrix, (float)end.x, (float)end.y, (float)end.z) - .next(); - - tessellator.draw(); - - // block box - { - matrixStack.push(); - matrixStack.translate(pos.getX() - regionX, pos.getY(), - pos.getZ() - regionZ); - - RenderUtils.drawOutlinedBox(matrixStack); - - RenderSystem.setShaderColor(rainbow[0], rainbow[1], rainbow[2], - 0.25F); - RenderUtils.drawSolidBox(matrixStack); - - matrixStack.pop(); - } - - matrixStack.pop(); - - // GL resets - RenderSystem.setShaderColor(1, 1, 1, 1); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); - } - - @Override - public void onReceivedPacket(PacketInputEvent event) - { - if(MC.player == null) - return; - - Packet packet = event.getPacket(); - - // get packet position - BlockPos newPos = null; - // if(packet instanceof SPacketEffect) - // { - // SPacketEffect effect = (SPacketEffect)packet; - // newPos = effect.getSoundPos(); - // - // }else - if(packet instanceof PlaySoundS2CPacket sound) - newPos = - BlockPos.ofFloored(sound.getX(), sound.getY(), sound.getZ()); - - if(newPos == null) - return; - - // check distance to player - BlockPos playerPos = BlockPos.ofFloored(MC.player.getPos()); - if(Math.abs(playerPos.getX() - newPos.getX()) > 256 - || Math.abs(playerPos.getZ() - newPos.getZ()) > 256) - pos = newPos; - } -} From d1ada5dbc89a9316eef4a747c31d015b01464c61 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 14:42:04 +0200 Subject: [PATCH 094/126] Manage GL_LINE_SMOOTH in RenderListener --- src/main/java/net/wurstclient/ai/PathFinder.java | 2 -- src/main/java/net/wurstclient/events/RenderListener.java | 6 ++++++ src/main/java/net/wurstclient/hacks/AutoBuildHack.java | 2 -- src/main/java/net/wurstclient/hacks/AutoFarmHack.java | 2 -- src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java | 2 -- src/main/java/net/wurstclient/hacks/BowAimbotHack.java | 2 -- src/main/java/net/wurstclient/hacks/BuildRandomHack.java | 2 -- src/main/java/net/wurstclient/hacks/CaveFinderHack.java | 2 -- src/main/java/net/wurstclient/hacks/ChestEspHack.java | 2 -- src/main/java/net/wurstclient/hacks/ExcavatorHack.java | 2 -- src/main/java/net/wurstclient/hacks/FeedAuraHack.java | 2 -- src/main/java/net/wurstclient/hacks/FreecamHack.java | 2 -- src/main/java/net/wurstclient/hacks/InstantBunkerHack.java | 2 -- src/main/java/net/wurstclient/hacks/ItemEspHack.java | 2 -- src/main/java/net/wurstclient/hacks/KillauraHack.java | 2 -- src/main/java/net/wurstclient/hacks/KillauraLegitHack.java | 2 -- src/main/java/net/wurstclient/hacks/MobEspHack.java | 2 -- src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java | 2 -- src/main/java/net/wurstclient/hacks/NukerHack.java | 3 --- src/main/java/net/wurstclient/hacks/NukerLegitHack.java | 2 -- src/main/java/net/wurstclient/hacks/OpenWaterEspHack.java | 2 -- src/main/java/net/wurstclient/hacks/OverlayHack.java | 2 -- src/main/java/net/wurstclient/hacks/PlayerEspHack.java | 2 -- src/main/java/net/wurstclient/hacks/ProphuntEspHack.java | 2 -- src/main/java/net/wurstclient/hacks/SearchHack.java | 2 -- src/main/java/net/wurstclient/hacks/TrajectoriesHack.java | 2 -- src/main/java/net/wurstclient/hacks/TreeBotHack.java | 2 -- src/main/java/net/wurstclient/hacks/TunnellerHack.java | 2 -- .../net/wurstclient/hacks/autofish/AutoFishDebugDraw.java | 2 -- .../net/wurstclient/hacks/newchunks/NewChunksRenderer.java | 2 -- 30 files changed, 6 insertions(+), 59 deletions(-) diff --git a/src/main/java/net/wurstclient/ai/PathFinder.java b/src/main/java/net/wurstclient/ai/PathFinder.java index f39dbbef..f666e124 100644 --- a/src/main/java/net/wurstclient/ai/PathFinder.java +++ b/src/main/java/net/wurstclient/ai/PathFinder.java @@ -557,7 +557,6 @@ public class PathFinder GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LINE_SMOOTH); if(!depthTest) GL11.glDisable(GL11.GL_DEPTH_TEST); GL11.glDepthMask(false); @@ -618,7 +617,6 @@ public class PathFinder RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); GL11.glDepthMask(true); } diff --git a/src/main/java/net/wurstclient/events/RenderListener.java b/src/main/java/net/wurstclient/events/RenderListener.java index 805b9c60..49814516 100644 --- a/src/main/java/net/wurstclient/events/RenderListener.java +++ b/src/main/java/net/wurstclient/events/RenderListener.java @@ -9,6 +9,8 @@ package net.wurstclient.events; import java.util.ArrayList; +import org.lwjgl.opengl.GL11; + import net.minecraft.client.util.math.MatrixStack; import net.wurstclient.event.Event; import net.wurstclient.event.Listener; @@ -31,8 +33,12 @@ public interface RenderListener extends Listener @Override public void fire(ArrayList listeners) { + GL11.glEnable(GL11.GL_LINE_SMOOTH); + for(RenderListener listener : listeners) listener.onRender(matrixStack, partialTicks); + + GL11.glDisable(GL11.GL_LINE_SMOOTH); } @Override diff --git a/src/main/java/net/wurstclient/hacks/AutoBuildHack.java b/src/main/java/net/wurstclient/hacks/AutoBuildHack.java index 6f8d11ad..e2a1757f 100644 --- a/src/main/java/net/wurstclient/hacks/AutoBuildHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoBuildHack.java @@ -357,7 +357,6 @@ public final class AutoBuildHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(GL11.GL_CULL_FACE); RenderSystem.setShaderColor(0F, 0F, 0F, 0.5F); @@ -398,7 +397,6 @@ public final class AutoBuildHack extends Hack // GL resets GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); RenderSystem.setShaderColor(1, 1, 1, 1); } diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index 5ab5ac8e..4b1de48b 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -193,7 +193,6 @@ public final class AutoFarmHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -266,7 +265,6 @@ public final class AutoFarmHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private Stream getBlockStream(BlockPos center, int range) diff --git a/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java b/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java index 3b9dd0d4..33a8610d 100644 --- a/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java @@ -520,7 +520,6 @@ public final class AutoLibrarianHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -584,6 +583,5 @@ public final class AutoLibrarianHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } } diff --git a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java index f8f3e3ef..4b6cf48b 100644 --- a/src/main/java/net/wurstclient/hacks/BowAimbotHack.java +++ b/src/main/java/net/wurstclient/hacks/BowAimbotHack.java @@ -206,7 +206,6 @@ public final class BowAimbotHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); @@ -249,7 +248,6 @@ public final class BowAimbotHack extends Hack // GL resets GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); RenderSystem.setShaderColor(1, 1, 1, 1); } diff --git a/src/main/java/net/wurstclient/hacks/BuildRandomHack.java b/src/main/java/net/wurstclient/hacks/BuildRandomHack.java index 8ab78e76..12145899 100644 --- a/src/main/java/net/wurstclient/hacks/BuildRandomHack.java +++ b/src/main/java/net/wurstclient/hacks/BuildRandomHack.java @@ -135,7 +135,6 @@ public final class BuildRandomHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -166,7 +165,6 @@ public final class BuildRandomHack extends Hack // GL resets GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private boolean tryToPlaceBlock(boolean legitMode, BlockPos pos) diff --git a/src/main/java/net/wurstclient/hacks/CaveFinderHack.java b/src/main/java/net/wurstclient/hacks/CaveFinderHack.java index 700410eb..b5306beb 100644 --- a/src/main/java/net/wurstclient/hacks/CaveFinderHack.java +++ b/src/main/java/net/wurstclient/hacks/CaveFinderHack.java @@ -220,7 +220,6 @@ public final class CaveFinderHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -254,7 +253,6 @@ public final class CaveFinderHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private ChunkPos getPlayerChunkPos(BlockPos eyesPos) diff --git a/src/main/java/net/wurstclient/hacks/ChestEspHack.java b/src/main/java/net/wurstclient/hacks/ChestEspHack.java index c67582a0..d05158d6 100644 --- a/src/main/java/net/wurstclient/hacks/ChestEspHack.java +++ b/src/main/java/net/wurstclient/hacks/ChestEspHack.java @@ -204,7 +204,6 @@ public class ChestEspHack extends Hack implements UpdateListener, // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -236,6 +235,5 @@ public class ChestEspHack extends Hack implements UpdateListener, RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } } diff --git a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java index de21456b..d010a313 100644 --- a/src/main/java/net/wurstclient/hacks/ExcavatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ExcavatorHack.java @@ -155,7 +155,6 @@ public final class ExcavatorHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -325,7 +324,6 @@ public final class ExcavatorHack extends Hack // GL resets GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); RenderSystem.setShaderColor(1, 1, 1, 1); } diff --git a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java index 66d40727..5dd51576 100644 --- a/src/main/java/net/wurstclient/hacks/FeedAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/FeedAuraHack.java @@ -187,7 +187,6 @@ public final class FeedAuraHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -236,7 +235,6 @@ public final class FeedAuraHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private boolean isUntamed(AnimalEntity e) diff --git a/src/main/java/net/wurstclient/hacks/FreecamHack.java b/src/main/java/net/wurstclient/hacks/FreecamHack.java index 469c110f..f6685ee8 100644 --- a/src/main/java/net/wurstclient/hacks/FreecamHack.java +++ b/src/main/java/net/wurstclient/hacks/FreecamHack.java @@ -184,7 +184,6 @@ public final class FreecamHack extends Hack implements UpdateListener, // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); @@ -233,6 +232,5 @@ public final class FreecamHack extends Hack implements UpdateListener, RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } } diff --git a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java index 346eb176..8b42d98c 100644 --- a/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java +++ b/src/main/java/net/wurstclient/hacks/InstantBunkerHack.java @@ -256,7 +256,6 @@ public final class InstantBunkerHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(GL11.GL_CULL_FACE); matrixStack.push(); @@ -306,6 +305,5 @@ public final class InstantBunkerHack extends Hack // GL resets RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } } diff --git a/src/main/java/net/wurstclient/hacks/ItemEspHack.java b/src/main/java/net/wurstclient/hacks/ItemEspHack.java index 08ee4300..f464fed1 100644 --- a/src/main/java/net/wurstclient/hacks/ItemEspHack.java +++ b/src/main/java/net/wurstclient/hacks/ItemEspHack.java @@ -102,7 +102,6 @@ public final class ItemEspHack extends Hack implements UpdateListener, { // GL settings GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); matrixStack.push(); @@ -122,7 +121,6 @@ public final class ItemEspHack extends Hack implements UpdateListener, RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private void renderBoxes(MatrixStack matrixStack, double partialTicks, diff --git a/src/main/java/net/wurstclient/hacks/KillauraHack.java b/src/main/java/net/wurstclient/hacks/KillauraHack.java index cc675f73..b4574d3b 100644 --- a/src/main/java/net/wurstclient/hacks/KillauraHack.java +++ b/src/main/java/net/wurstclient/hacks/KillauraHack.java @@ -199,7 +199,6 @@ public final class KillauraHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -257,7 +256,6 @@ public final class KillauraHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private enum Priority diff --git a/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java b/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java index 0b34f143..b634d7f5 100644 --- a/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java @@ -214,7 +214,6 @@ public final class KillauraLegitHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -269,7 +268,6 @@ public final class KillauraLegitHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private enum Priority diff --git a/src/main/java/net/wurstclient/hacks/MobEspHack.java b/src/main/java/net/wurstclient/hacks/MobEspHack.java index 6ec69801..35984344 100644 --- a/src/main/java/net/wurstclient/hacks/MobEspHack.java +++ b/src/main/java/net/wurstclient/hacks/MobEspHack.java @@ -121,7 +121,6 @@ public final class MobEspHack extends Hack implements UpdateListener, // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); @@ -143,7 +142,6 @@ public final class MobEspHack extends Hack implements UpdateListener, RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private void renderBoxes(MatrixStack matrixStack, double partialTicks, diff --git a/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java b/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java index 6774286e..56f16190 100644 --- a/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java +++ b/src/main/java/net/wurstclient/hacks/MobSpawnEspHack.java @@ -229,7 +229,6 @@ public final class MobSpawnEspHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); if(!depthTest) GL11.glDisable(GL11.GL_DEPTH_TEST); GL11.glEnable(GL11.GL_CULL_FACE); @@ -260,7 +259,6 @@ public final class MobSpawnEspHack extends Hack if(!depthTest) GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private static class ChunkScanner diff --git a/src/main/java/net/wurstclient/hacks/NukerHack.java b/src/main/java/net/wurstclient/hacks/NukerHack.java index f8caac2c..62ccf6b6 100644 --- a/src/main/java/net/wurstclient/hacks/NukerHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerHack.java @@ -244,7 +244,6 @@ public final class NukerHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -283,8 +282,6 @@ public final class NukerHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); - } private enum Mode diff --git a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java index bf50b7f9..d13bdfa1 100644 --- a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java @@ -285,7 +285,6 @@ public final class NukerLegitHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -334,7 +333,6 @@ public final class NukerLegitHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private enum Mode diff --git a/src/main/java/net/wurstclient/hacks/OpenWaterEspHack.java b/src/main/java/net/wurstclient/hacks/OpenWaterEspHack.java index 1a32fbc9..f689d1b1 100644 --- a/src/main/java/net/wurstclient/hacks/OpenWaterEspHack.java +++ b/src/main/java/net/wurstclient/hacks/OpenWaterEspHack.java @@ -63,7 +63,6 @@ public final class OpenWaterEspHack extends Hack implements RenderListener // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -80,7 +79,6 @@ public final class OpenWaterEspHack extends Hack implements RenderListener RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private void drawOpenWater(MatrixStack matrixStack, diff --git a/src/main/java/net/wurstclient/hacks/OverlayHack.java b/src/main/java/net/wurstclient/hacks/OverlayHack.java index 496cebcb..937594b2 100644 --- a/src/main/java/net/wurstclient/hacks/OverlayHack.java +++ b/src/main/java/net/wurstclient/hacks/OverlayHack.java @@ -58,7 +58,6 @@ public final class OverlayHack extends Hack implements RenderListener // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -98,6 +97,5 @@ public final class OverlayHack extends Hack implements RenderListener // GL resets GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } } diff --git a/src/main/java/net/wurstclient/hacks/PlayerEspHack.java b/src/main/java/net/wurstclient/hacks/PlayerEspHack.java index 9e167106..a956c552 100644 --- a/src/main/java/net/wurstclient/hacks/PlayerEspHack.java +++ b/src/main/java/net/wurstclient/hacks/PlayerEspHack.java @@ -119,7 +119,6 @@ public final class PlayerEspHack extends Hack implements UpdateListener, // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(GL11.GL_DEPTH_TEST); matrixStack.push(); @@ -142,7 +141,6 @@ public final class PlayerEspHack extends Hack implements UpdateListener, RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private void renderBoxes(MatrixStack matrixStack, double partialTicks, diff --git a/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java b/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java index 9e0b5f5c..34292c9a 100644 --- a/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java +++ b/src/main/java/net/wurstclient/hacks/ProphuntEspHack.java @@ -53,7 +53,6 @@ public final class ProphuntEspHack extends Hack implements RenderListener // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -97,6 +96,5 @@ public final class ProphuntEspHack extends Hack implements RenderListener RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } } diff --git a/src/main/java/net/wurstclient/hacks/SearchHack.java b/src/main/java/net/wurstclient/hacks/SearchHack.java index f6f9d27e..b8a4d474 100644 --- a/src/main/java/net/wurstclient/hacks/SearchHack.java +++ b/src/main/java/net/wurstclient/hacks/SearchHack.java @@ -218,7 +218,6 @@ public final class SearchHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -246,7 +245,6 @@ public final class SearchHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private void addSearchersInRange(ChunkPos center, Block block, diff --git a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java index b8efc9e5..b9b821e0 100644 --- a/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java +++ b/src/main/java/net/wurstclient/hacks/TrajectoriesHack.java @@ -87,7 +87,6 @@ public final class TrajectoriesHack extends Hack implements RenderListener GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glDisable(GL11.GL_DEPTH_TEST); GL11.glDepthMask(false); - GL11.glEnable(GL11.GL_LINE_SMOOTH); RenderUtils.applyCameraRotationOnly(); @@ -113,7 +112,6 @@ public final class TrajectoriesHack extends Hack implements RenderListener GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDepthMask(true); - GL11.glDisable(GL11.GL_LINE_SMOOTH); matrixStack.pop(); } diff --git a/src/main/java/net/wurstclient/hacks/TreeBotHack.java b/src/main/java/net/wurstclient/hacks/TreeBotHack.java index db70d964..1fa4d8aa 100644 --- a/src/main/java/net/wurstclient/hacks/TreeBotHack.java +++ b/src/main/java/net/wurstclient/hacks/TreeBotHack.java @@ -294,7 +294,6 @@ public final class TreeBotHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -308,7 +307,6 @@ public final class TreeBotHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private void drawTree(MatrixStack matrixStack) diff --git a/src/main/java/net/wurstclient/hacks/TunnellerHack.java b/src/main/java/net/wurstclient/hacks/TunnellerHack.java index 146a6996..d6f50761 100644 --- a/src/main/java/net/wurstclient/hacks/TunnellerHack.java +++ b/src/main/java/net/wurstclient/hacks/TunnellerHack.java @@ -202,7 +202,6 @@ public final class TunnellerHack extends Hack // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -266,7 +265,6 @@ public final class TunnellerHack extends Hack RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private void updateCyanBuffer() diff --git a/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java b/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java index 7d843536..f34a8a57 100644 --- a/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java +++ b/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java @@ -74,7 +74,6 @@ public final class AutoFishDebugDraw // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -98,7 +97,6 @@ public final class AutoFishDebugDraw RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } private void drawValidRange(MatrixStack matrixStack, diff --git a/src/main/java/net/wurstclient/hacks/newchunks/NewChunksRenderer.java b/src/main/java/net/wurstclient/hacks/newchunks/NewChunksRenderer.java index 25fd7f44..0f8b5b30 100644 --- a/src/main/java/net/wurstclient/hacks/newchunks/NewChunksRenderer.java +++ b/src/main/java/net/wurstclient/hacks/newchunks/NewChunksRenderer.java @@ -64,7 +64,6 @@ public final class NewChunksRenderer // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_DEPTH_TEST); @@ -112,6 +111,5 @@ public final class NewChunksRenderer RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_LINE_SMOOTH); } } From 578e0ea99fa8e86f82f97bcb2bd44468dc043765 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 17:18:19 +0200 Subject: [PATCH 095/126] Move block breaking overlay to a separate OverlayRenderer class --- .../java/net/wurstclient/hacks/NukerHack.java | 79 ++----------- .../net/wurstclient/hacks/NukerLegitHack.java | 76 +++--------- .../net/wurstclient/hacks/OverlayHack.java | 80 ++++--------- .../net/wurstclient/util/OverlayRenderer.java | 109 ++++++++++++++++++ 4 files changed, 156 insertions(+), 188 deletions(-) create mode 100644 src/main/java/net/wurstclient/util/OverlayRenderer.java diff --git a/src/main/java/net/wurstclient/hacks/NukerHack.java b/src/main/java/net/wurstclient/hacks/NukerHack.java index 62ccf6b6..57abf022 100644 --- a/src/main/java/net/wurstclient/hacks/NukerHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerHack.java @@ -19,18 +19,12 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.systems.RenderSystem; - import net.minecraft.block.Blocks; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; import net.wurstclient.Category; @@ -46,7 +40,7 @@ import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; import net.wurstclient.util.BlockBreaker; import net.wurstclient.util.BlockUtils; -import net.wurstclient.util.RenderUtils; +import net.wurstclient.util.OverlayRenderer; import net.wurstclient.util.RotationUtils; public final class NukerHack extends Hack @@ -86,9 +80,8 @@ public final class NukerHack extends Hack "minecraft:raw_iron_block", "minecraft:redstone_ore"); private final ArrayDeque> prevBlocks = new ArrayDeque<>(); + private final OverlayRenderer renderer = new OverlayRenderer(); private BlockPos currentBlock; - private float progress; - private float prevProgress; public NukerHack() { @@ -136,6 +129,7 @@ public final class NukerHack extends Hack } prevBlocks.clear(); + renderer.resetProgress(); if(!lockId.isChecked()) id.setBlock(Blocks.AIR); @@ -144,13 +138,13 @@ public final class NukerHack extends Hack @Override public void onUpdate() { + currentBlock = null; + // abort if using IDNuker without an ID being set if(mode.getSelected() == Mode.ID && id.getBlock() == Blocks.AIR) return; ClientPlayerEntity player = MC.player; - - currentBlock = null; Vec3d eyesPos = RotationUtils.getEyesPos().subtract(0.5, 0.5, 0.5); BlockPos eyesBlock = BlockPos.ofFloored(RotationUtils.getEyesPos()); double rangeSq = Math.pow(range.getValue(), 2); @@ -186,8 +180,7 @@ public final class NukerHack extends Hack currentBlock = blocks3.get(0); MC.interactionManager.cancelBlockBreaking(); - progress = 1; - prevProgress = 1; + renderer.resetProgress(); BlockBreaker.breakBlocksWithPacketSpam(blocks3); return; } @@ -203,18 +196,9 @@ public final class NukerHack extends Hack MC.interactionManager.cancelBlockBreaking(); if(currentBlock != null && BlockUtils.getHardness(currentBlock) < 1) - { - prevProgress = progress; - progress = IMC.getInteractionManager().getCurrentBreakingProgress(); - - if(progress < prevProgress) - prevProgress = progress; - - }else - { - progress = 1; - prevProgress = 1; - } + renderer.updateProgress(); + else + renderer.resetProgress(); } @Override @@ -238,50 +222,7 @@ public final class NukerHack extends Hack @Override public void onRender(MatrixStack matrixStack, float partialTicks) { - if(currentBlock == null) - return; - - // GL settings - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_DEPTH_TEST); - - matrixStack.push(); - - BlockPos camPos = RenderUtils.getCameraBlockPos(); - int regionX = (camPos.getX() >> 9) * 512; - int regionZ = (camPos.getZ() >> 9) * 512; - RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); - - Box box = new Box(BlockPos.ORIGIN); - float p = prevProgress + (progress - prevProgress) * partialTicks; - float red = p * 2F; - float green = 2 - red; - - matrixStack.translate(currentBlock.getX() - regionX, - currentBlock.getY(), currentBlock.getZ() - regionZ); - if(p < 1) - { - matrixStack.translate(0.5, 0.5, 0.5); - matrixStack.scale(p, p, p); - matrixStack.translate(-0.5, -0.5, -0.5); - } - - RenderSystem.setShader(GameRenderer::getPositionProgram); - - RenderSystem.setShaderColor(red, green, 0, 0.25F); - RenderUtils.drawSolidBox(box, matrixStack); - - RenderSystem.setShaderColor(red, green, 0, 0.5F); - RenderUtils.drawOutlinedBox(box, matrixStack); - - matrixStack.pop(); - - // GL resets - RenderSystem.setShaderColor(1, 1, 1, 1); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_BLEND); + renderer.render(matrixStack, partialTicks, currentBlock); } private enum Mode diff --git a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java index d13bdfa1..c1567a15 100644 --- a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java @@ -14,14 +14,9 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.systems.RenderSystem; - import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.Material; -import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -42,7 +37,7 @@ import net.wurstclient.settings.EnumSetting; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; import net.wurstclient.util.BlockUtils; -import net.wurstclient.util.RenderUtils; +import net.wurstclient.util.OverlayRenderer; import net.wurstclient.util.RotationUtils; @SearchTags({"LegitNuker", "nuker legit", "legit nuker"}) @@ -82,6 +77,7 @@ public final class NukerLegitHack extends Hack "minecraft:raw_copper_block", "minecraft:raw_gold_block", "minecraft:raw_iron_block", "minecraft:redstone_ore"); + private final OverlayRenderer renderer = new OverlayRenderer(); private BlockPos currentBlock; public NukerLegitHack() @@ -128,6 +124,7 @@ public final class NukerLegitHack extends Hack // resets MC.options.attackKey.setPressed(false); + renderer.resetProgress(); currentBlock = null; if(!lockId.isChecked()) id.setBlock(Blocks.AIR); @@ -161,11 +158,14 @@ public final class NukerLegitHack extends Hack @Override public void onUpdate() { + currentBlock = null; + // abort if using IDNuker without an ID being set if(mode.getSelected() == Mode.ID && id.getBlock() == Blocks.AIR) + { + renderer.resetProgress(); return; - - currentBlock = null; + } // get valid blocks Iterable validBlocks = getValidBlocks(range.getValue(), @@ -185,7 +185,12 @@ public final class NukerLegitHack extends Hack // reset if no block was found if(currentBlock == null) + { MC.options.attackKey.setPressed(false); + renderer.resetProgress(); + } + + renderer.updateProgress(); } private ArrayList getValidBlocks(double range, @@ -279,60 +284,7 @@ public final class NukerLegitHack extends Hack @Override public void onRender(MatrixStack matrixStack, float partialTicks) { - if(currentBlock == null) - return; - - // GL settings - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_DEPTH_TEST); - - matrixStack.push(); - - BlockPos camPos = RenderUtils.getCameraBlockPos(); - int regionX = (camPos.getX() >> 9) * 512; - int regionZ = (camPos.getZ() >> 9) * 512; - RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); - - // set position - matrixStack.translate(currentBlock.getX() - regionX, - currentBlock.getY(), currentBlock.getZ() - regionZ); - - // get progress - float progress; - if(BlockUtils.getHardness(currentBlock) < 1) - progress = IMC.getInteractionManager().getCurrentBreakingProgress(); - else - progress = 1; - - // set size - if(progress < 1) - { - matrixStack.translate(0.5, 0.5, 0.5); - matrixStack.scale(progress, progress, progress); - matrixStack.translate(-0.5, -0.5, -0.5); - } - - // get color - float red = progress * 2F; - float green = 2 - red; - - // draw box - RenderSystem.setShader(GameRenderer::getPositionProgram); - - RenderSystem.setShaderColor(red, green, 0, 0.25F); - RenderUtils.drawSolidBox(matrixStack); - - RenderSystem.setShaderColor(red, green, 0, 0.5F); - RenderUtils.drawOutlinedBox(matrixStack); - - matrixStack.pop(); - - // GL resets - RenderSystem.setShaderColor(1, 1, 1, 1); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_BLEND); + renderer.render(matrixStack, partialTicks, currentBlock); } private enum Mode diff --git a/src/main/java/net/wurstclient/hacks/OverlayHack.java b/src/main/java/net/wurstclient/hacks/OverlayHack.java index 937594b2..d3b997d5 100644 --- a/src/main/java/net/wurstclient/hacks/OverlayHack.java +++ b/src/main/java/net/wurstclient/hacks/OverlayHack.java @@ -7,22 +7,20 @@ */ package net.wurstclient.hacks; -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; -import net.minecraft.util.math.BlockPos; import net.wurstclient.Category; import net.wurstclient.events.RenderListener; +import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; -import net.wurstclient.util.RenderUtils; +import net.wurstclient.util.OverlayRenderer; -public final class OverlayHack extends Hack implements RenderListener +public final class OverlayHack extends Hack + implements UpdateListener, RenderListener { + private final OverlayRenderer renderer = new OverlayRenderer(); + public OverlayHack() { super("Overlay"); @@ -32,70 +30,38 @@ public final class OverlayHack extends Hack implements RenderListener @Override public void onEnable() { + EVENTS.add(UpdateListener.class, this); EVENTS.add(RenderListener.class, this); } @Override public void onDisable() { + EVENTS.remove(UpdateListener.class, this); EVENTS.remove(RenderListener.class, this); + renderer.resetProgress(); + } + + @Override + public void onUpdate() + { + if(MC.interactionManager.isBreakingBlock()) + renderer.updateProgress(); + else + renderer.resetProgress(); } @Override public void onRender(MatrixStack matrixStack, float partialTicks) { - if(MC.crosshairTarget == null - || MC.crosshairTarget.getType() != HitResult.Type.BLOCK) - return; - - BlockHitResult blockHitResult = (BlockHitResult)MC.crosshairTarget; - BlockPos pos = new BlockPos(blockHitResult.getBlockPos()); - - // check if hitting block if(!MC.interactionManager.isBreakingBlock()) return; - // GL settings - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_DEPTH_TEST); + if(!(MC.crosshairTarget instanceof BlockHitResult blockHitResult) + || blockHitResult.getType() != HitResult.Type.BLOCK) + return; - matrixStack.push(); - - BlockPos camPos = RenderUtils.getCameraBlockPos(); - int regionX = (camPos.getX() >> 9) * 512; - int regionZ = (camPos.getZ() >> 9) * 512; - RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); - - // set position - matrixStack.translate(pos.getX() - regionX, pos.getY(), - pos.getZ() - regionZ); - - // get progress - float progress = - IMC.getInteractionManager().getCurrentBreakingProgress(); - - // set size - matrixStack.translate(0.5, 0.5, 0.5); - matrixStack.scale(progress, progress, progress); - matrixStack.translate(-0.5, -0.5, -0.5); - - // get color - float red = progress * 2F; - float green = 2 - red; - - // draw box - RenderSystem.setShader(GameRenderer::getPositionProgram); - RenderSystem.setShaderColor(red, green, 0, 0.25F); - RenderUtils.drawSolidBox(matrixStack); - RenderSystem.setShaderColor(red, green, 0, 0.5F); - RenderUtils.drawOutlinedBox(matrixStack); - - matrixStack.pop(); - - // GL resets - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_BLEND); + renderer.render(matrixStack, partialTicks, + blockHitResult.getBlockPos()); } } diff --git a/src/main/java/net/wurstclient/util/OverlayRenderer.java b/src/main/java/net/wurstclient/util/OverlayRenderer.java new file mode 100644 index 00000000..a11ab189 --- /dev/null +++ b/src/main/java/net/wurstclient/util/OverlayRenderer.java @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.util; + +import org.lwjgl.opengl.GL11; + +import com.mojang.blaze3d.systems.RenderSystem; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.wurstclient.WurstClient; +import net.wurstclient.mixinterface.IMinecraftClient; + +public final class OverlayRenderer +{ + protected static final MinecraftClient MC = WurstClient.MC; + protected static final IMinecraftClient IMC = WurstClient.IMC; + + private float progress; + private float prevProgress; + private BlockPos prevPos; + + public void resetProgress() + { + progress = 0; + prevProgress = 0; + prevPos = null; + } + + public void updateProgress() + { + prevProgress = progress; + progress = IMC.getInteractionManager().getCurrentBreakingProgress(); + + if(progress < prevProgress) + prevProgress = progress; + } + + public void render(MatrixStack matrixStack, float partialTicks, + BlockPos pos) + { + if(pos == null) + return; + + // reset progress if breaking a different block + if(prevPos != null && !pos.equals(prevPos)) + resetProgress(); + + prevPos = pos; + + // GL settings + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_DEPTH_TEST); + + matrixStack.push(); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); + + // set position + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); + + // get interpolated progress + boolean breaksInstantly = (MC.player.getAbilities().creativeMode + || BlockUtils.getHardness(pos) >= 1) + && BlockUtils.canBeClicked(pos); + float p = breaksInstantly ? 1 + : MathHelper.lerp(partialTicks, prevProgress, progress); + + // set size + if(p < 1) + { + matrixStack.translate(0.5, 0.5, 0.5); + matrixStack.scale(p, p, p); + matrixStack.translate(-0.5, -0.5, -0.5); + } + + // get color + float red = p * 2F; + float green = 2 - red; + + // draw box + RenderSystem.setShader(GameRenderer::getPositionProgram); + RenderSystem.setShaderColor(red, green, 0, 0.25F); + RenderUtils.drawSolidBox(matrixStack); + RenderSystem.setShaderColor(red, green, 0, 0.5F); + RenderUtils.drawOutlinedBox(matrixStack); + + matrixStack.pop(); + + // GL resets + RenderSystem.setShaderColor(1, 1, 1, 1); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDisable(GL11.GL_BLEND); + } +} From fa668e0efc91b44134f85bd0af925bc7550da324 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 17:19:18 +0200 Subject: [PATCH 096/126] Make Nuker wait when the user is mining manually --- src/main/java/net/wurstclient/hacks/NukerHack.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/net/wurstclient/hacks/NukerHack.java b/src/main/java/net/wurstclient/hacks/NukerHack.java index 57abf022..ce5a246d 100644 --- a/src/main/java/net/wurstclient/hacks/NukerHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerHack.java @@ -140,6 +140,10 @@ public final class NukerHack extends Hack { currentBlock = null; + // abort if user is mining manually + if(MC.options.attackKey.isPressed()) + return; + // abort if using IDNuker without an ID being set if(mode.getSelected() == Mode.ID && id.getBlock() == Blocks.AIR) return; From 1567a5edee222cc002d83b9a60fddd829d0a064a Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 10 May 2023 17:28:12 +0200 Subject: [PATCH 097/126] Fix lang files still containing PlayerFinder's description --- src/main/resources/assets/wurst/lang/cs_cz.json | 1 - src/main/resources/assets/wurst/lang/en_us.json | 1 - src/main/resources/assets/wurst/lang/fr_fr.json | 1 - src/main/resources/assets/wurst/lang/it_it.json | 1 - src/main/resources/assets/wurst/lang/ja_jp.json | 1 - src/main/resources/assets/wurst/lang/pl_pl.json | 1 - src/main/resources/assets/wurst/lang/ro_ro.json | 1 - src/main/resources/assets/wurst/lang/ru_ru.json | 1 - src/main/resources/assets/wurst/lang/uk_ua.json | 1 - src/main/resources/assets/wurst/lang/zh_cn.json | 1 - src/main/resources/assets/wurst/lang/zh_hk.json | 1 - src/main/resources/assets/wurst/lang/zh_tw.json | 1 - 12 files changed, 12 deletions(-) diff --git a/src/main/resources/assets/wurst/lang/cs_cz.json b/src/main/resources/assets/wurst/lang/cs_cz.json index 8346a662..8040d9ed 100644 --- a/src/main/resources/assets/wurst/lang/cs_cz.json +++ b/src/main/resources/assets/wurst/lang/cs_cz.json @@ -124,7 +124,6 @@ "description.wurst.hack.panic": "Okamžitě vypne všechny povolené hacky.\nS tímhle opatrně!", "description.wurst.hack.parkour": "Při dosažení hrany bloku skáčete automaticky.\nUžitečné pro parkoury a skoko-běhách.", "description.wurst.hack.playeresp": "Zvýrazní okolní hráče.\nESP boxy přátel se zobrazí modře.", - "description.wurst.hack.playerfinder": "Vyhledává vzdálené hráče během bouřek.", "description.wurst.hack.portalgui": "Umožňuje otevření inventářů v portálech.", "description.wurst.hack.potionsaver": "Pozastaví všecny efekty lektvarů, dokud stojíte na místě.", "description.wurst.hack.prophuntesp": "Umožňuje vidět falešné bloky v Prophuntu.\nVyrobeno pro Mineplexí Prophunt. Může však fungovat i na jiných serverech.", diff --git a/src/main/resources/assets/wurst/lang/en_us.json b/src/main/resources/assets/wurst/lang/en_us.json index 5cdc338a..61a0142a 100644 --- a/src/main/resources/assets/wurst/lang/en_us.json +++ b/src/main/resources/assets/wurst/lang/en_us.json @@ -128,7 +128,6 @@ "description.wurst.hack.panic": "Instantly turns off all enabled hacks.\nBe careful with this one!", "description.wurst.hack.parkour": "Makes you jump automatically when reaching the edge of a block.\nUseful for parkours and jump'n'runs.", "description.wurst.hack.playeresp": "Highlights nearby players.\nESP boxes of friends will appear in blue.", - "description.wurst.hack.playerfinder": "Finds far away players during thunderstorms.", "description.wurst.hack.portalgui": "Allows you to open GUIs in portals.", "description.wurst.hack.potionsaver": "Freezes all potion effects while you are standing still.", "description.wurst.hack.prophuntesp": "Allows you to see fake blocks in Prophunt.\nMade for Mineplex Prophunt. Might not work on other servers.", diff --git a/src/main/resources/assets/wurst/lang/fr_fr.json b/src/main/resources/assets/wurst/lang/fr_fr.json index e4f717db..c9cb3691 100644 --- a/src/main/resources/assets/wurst/lang/fr_fr.json +++ b/src/main/resources/assets/wurst/lang/fr_fr.json @@ -121,7 +121,6 @@ "description.wurst.hack.panic": "Désactive instantanément tous les hacks activés.\nSoyez prudent avec celui-ci !", "description.wurst.hack.parkour": "Vous fait sauter automatiquement lorsque vous atteignez le bord d'un bloc.\nUtile pour les parcours.", "description.wurst.hack.playeresp": "Met en évidence les joueurs à proximité.\nLes boîtes ESP des amis apparaîtront en bleu.", - "description.wurst.hack.playerfinder": "Trouve les joueurs éloignés pendant les orages.", "description.wurst.hack.portalgui": "Vous permet d'ouvrir les GUI dans des portails.", "description.wurst.hack.potionsaver": "Gèle tous les effets de potion pendant que vous êtes immobile.", "description.wurst.hack.prophuntesp": "Permet de voir les faux blocs dans le Prophunt.\nConçu pour le Prohunt de Mineplex. Peut ne pas fonctionner sur d'autres serveurs.", diff --git a/src/main/resources/assets/wurst/lang/it_it.json b/src/main/resources/assets/wurst/lang/it_it.json index 41adb13c..1d70da38 100644 --- a/src/main/resources/assets/wurst/lang/it_it.json +++ b/src/main/resources/assets/wurst/lang/it_it.json @@ -124,7 +124,6 @@ "description.wurst.hack.panic": "Disattiva tutte le hack utilizzate.\n Pensa prima di usarlo usi!", "description.wurst.hack.parkour": "Ti fa saltare automaticamente quando arrivi alla fine di un blocco.\nUtile per i parkour e per le jump'n'runs.", "description.wurst.hack.playeresp": "Evidenzia i giocatori vicini.\nI riquadri ESP degli amici saranno in blu.", - "description.wurst.hack.playerfinder": "Trova i giocatori lontani durante le tempeste.", "description.wurst.hack.portalgui": "Ti permette di aprire le GUI nei portali.", "description.wurst.hack.potionsaver": "Blocca tutti gli effetti della pozione mentre sei fermo.", "description.wurst.hack.prophuntesp": "Ti permette di vedere i blocchi falsi in PropHunt.\n Fatto per la PropHunt di Mineplex. Potrebbe non funzionare su altri server.", diff --git a/src/main/resources/assets/wurst/lang/ja_jp.json b/src/main/resources/assets/wurst/lang/ja_jp.json index 8acdf08f..643433c9 100644 --- a/src/main/resources/assets/wurst/lang/ja_jp.json +++ b/src/main/resources/assets/wurst/lang/ja_jp.json @@ -124,7 +124,6 @@ "description.wurst.hack.panic": "使用しているすべてのハックを瞬時にOFFにする。\n誤操作に注意!", "description.wurst.hack.parkour": "ブロックの端に到達した際に自動でジャンプする。\nパルクールなどに有用。", "description.wurst.hack.playeresp": "付近のプレイヤーをハイライト表示する。\nフレンドのESPボックスは青色で表示される。", - "description.wurst.hack.playerfinder": "雷雨時に遠くにいるプレイヤーを見つける。", "description.wurst.hack.portalgui": "ネザーポータルの中にいてもメニューを開けるようになる。", "description.wurst.hack.potionsaver": "静止中にすべてのポーションの効果を停止させる。", "description.wurst.hack.prophuntesp": "Prophuntで偽物のブロックを見破ることができる。\nMineplexサーバーのミニゲーム「Prophunt」用。他サーバーでは動作しない可能性あり。", diff --git a/src/main/resources/assets/wurst/lang/pl_pl.json b/src/main/resources/assets/wurst/lang/pl_pl.json index ce6e904a..e7f6fe2f 100644 --- a/src/main/resources/assets/wurst/lang/pl_pl.json +++ b/src/main/resources/assets/wurst/lang/pl_pl.json @@ -124,7 +124,6 @@ "description.wurst.hack.panic": "Natychmiast wyłącza wszystkie włączone hacki.\nBądź z tym ostrożny!", "description.wurst.hack.parkour": "Sprawia, że skaczesz automatycznie po dotarciu do krawędzi bloku.\nPrzydatne do parkourów i jump'n'runów.", "description.wurst.hack.playeresp": "Podświetla pobliskich graczy.\nKontenery ESP znajomych pojawią się na niebiesko.", - "description.wurst.hack.playerfinder": "Znajduje odległych graczy podczas burzy.", "description.wurst.hack.portalgui": "Umożliwia otwieranie GUI w portalach.", "description.wurst.hack.potionsaver": "Wstrzymuje wszystkie efekty mikstur, gdy stoisz w miejscu.", "description.wurst.hack.prophuntesp": "Pozwala zobaczyć fałszywe bloki w Prophuntcie.\nStworzony dla Prophunta Mineplex'a. Może nie działać na innych serwerach.", diff --git a/src/main/resources/assets/wurst/lang/ro_ro.json b/src/main/resources/assets/wurst/lang/ro_ro.json index 62a6b69c..140edb9c 100644 --- a/src/main/resources/assets/wurst/lang/ro_ro.json +++ b/src/main/resources/assets/wurst/lang/ro_ro.json @@ -120,7 +120,6 @@ "description.wurst.hack.panic": "Opreste instant orice hack pornit.\nAi grija folosing acesta!", "description.wurst.hack.parkour": "Te face sa sari automat cand esti la marginea unui block.\nFolositor pentru parkour.", "description.wurst.hack.playeresp": "Contureaza jucatorii din apropiere.\nHitboxurile prietenilor vor aparea in albastru.", - "description.wurst.hack.playerfinder": "Localizeaza playerii din departare pe timp de furtuna.", "description.wurst.hack.portalgui": "Iti permite sa folosesti GUI-uri in portale.", "description.wurst.hack.potionsaver": "Ingheata efectele potiunilor in timp ce stai pe loc.", "description.wurst.hack.prophuntesp": "Iti permite sa vezi jucatorii ascunsi in prophunt.\nFacut pentru Mineplex Prophunt. Posibil sa nu functioneze pe alte servere.", diff --git a/src/main/resources/assets/wurst/lang/ru_ru.json b/src/main/resources/assets/wurst/lang/ru_ru.json index e38f6602..ab2ff279 100644 --- a/src/main/resources/assets/wurst/lang/ru_ru.json +++ b/src/main/resources/assets/wurst/lang/ru_ru.json @@ -124,7 +124,6 @@ "description.wurst.hack.panic": "Моментально выключает все читы.\nОсторожней с этим!", "description.wurst.hack.parkour": "Заставляет вас автоматически прыгать по достижении края блока.\nПолезно для паркуров и побегов.", "description.wurst.hack.playeresp": "Подсвечивает игроков неподалеку.\nДрузей будет подсвечивать синим.", - "description.wurst.hack.playerfinder": "Находит игроков во время грозы.", "description.wurst.hack.portalgui": "Позволяет открывать инвентарь и чат в порталах.", "description.wurst.hack.potionsaver": "Замораживает время действия всех эффектов пока Вы стоите на месте.", "description.wurst.hack.prophuntesp": "Позволяет отличать ненастоящие блоки в Prophunt.\nСделано для Mineplex Prophunt. Может не работать на других серверах.", diff --git a/src/main/resources/assets/wurst/lang/uk_ua.json b/src/main/resources/assets/wurst/lang/uk_ua.json index 4ac685e0..2622740d 100644 --- a/src/main/resources/assets/wurst/lang/uk_ua.json +++ b/src/main/resources/assets/wurst/lang/uk_ua.json @@ -120,7 +120,6 @@ "description.wurst.hack.panic": "Миттєво вимикає всі чити.\nОбережніше з цим!", "description.wurst.hack.parkour": "Примушує вас автоматично стрибати після досягнення краю блоку.\nКорисно для паркурів та пагонів.", "description.wurst.hack.playeresp": "Підсвічує гравців.\nДрузів буде підсвічувати синім.", - "description.wurst.hack.playerfinder": "Знаходить гравців під час грози.", "description.wurst.hack.portalgui": "Дозволяє відкривати інвентар та чат у порталах.", "description.wurst.hack.potionsaver": "Заморожує дію всіх ефектів, поки ви стоїте на місці.", "description.wurst.hack.prophuntesp": "Дозволяє відрізняти несправжні блоки в Prophunt.\nЗроблено для Mineplex Prophunt. Може працювати на інших серверах.", diff --git a/src/main/resources/assets/wurst/lang/zh_cn.json b/src/main/resources/assets/wurst/lang/zh_cn.json index f4f1ee45..c80adc71 100644 --- a/src/main/resources/assets/wurst/lang/zh_cn.json +++ b/src/main/resources/assets/wurst/lang/zh_cn.json @@ -124,7 +124,6 @@ "description.wurst.hack.panic": "瞬间关闭所有的作弊功能。\n请小心使用!", "description.wurst.hack.parkour": "当你到达方块边缘时自动跳起。\n适用于跑酷或部分需要跑跳的场景。", "description.wurst.hack.playeresp": "高亮透视附近的玩家。\n你的好友会显示蓝色框框。", - "description.wurst.hack.playerfinder": "在雷雨中寻找远处的玩家。", "description.wurst.hack.portalgui": "允许你在传送门内打开 GUI。", "description.wurst.hack.potionsaver": "当你站着不动时冻结所有的药水效果时间。", "description.wurst.hack.prophuntesp": "在躲猫猫小游戏中知道哪些是人扮的方块。\n用于 Mineplex 服务器的 Prophunt(躲猫猫),其他服务器未必奏效。", diff --git a/src/main/resources/assets/wurst/lang/zh_hk.json b/src/main/resources/assets/wurst/lang/zh_hk.json index b0d3cff3..895f9b46 100644 --- a/src/main/resources/assets/wurst/lang/zh_hk.json +++ b/src/main/resources/assets/wurst/lang/zh_hk.json @@ -118,7 +118,6 @@ "description.wurst.hack.panic": "瞬間關閉所有嘅作弊功能。\n請小心使用!", "description.wurst.hack.parkour": "當到方塊邊緣你會自動跳起身。\n適用於跑酷或跳同跑。", "description.wurst.hack.playeresp": "高亮透視附近嘅玩家。\n如果係你嘅好友話會顯示藍色框框。", - "description.wurst.hack.playerfinder": "喺雷雨天中尋找遠處嘅玩家。", "description.wurst.hack.portalgui": "允許你喺傳送門內打開 GUI。", "description.wurst.hack.potionsaver": "當你企住唔郁時凍結所有嘅葯水效果時間。", "description.wurst.hack.prophuntesp": "喺捉依因小游戲中知道邊啲係人扮嘅方塊。\n用於 Mineplex 伺服器嘅 Prophunt(捉依因),其他伺服器未必湊效。", diff --git a/src/main/resources/assets/wurst/lang/zh_tw.json b/src/main/resources/assets/wurst/lang/zh_tw.json index c9470025..d50a5d46 100644 --- a/src/main/resources/assets/wurst/lang/zh_tw.json +++ b/src/main/resources/assets/wurst/lang/zh_tw.json @@ -124,7 +124,6 @@ "description.wurst.hack.panic": "瞬間關閉所有的作弊功能。\n請小心使用!", "description.wurst.hack.parkour": "你會自動跳躍起來,當到方塊的邊緣。\n適用於跑酷或跳和跑。", "description.wurst.hack.playeresp": "高亮透視附近的玩家。\n如果是你的好友的話會顯示藍色框框。", - "description.wurst.hack.playerfinder": "在雷雨中尋找遠處的玩家。", "description.wurst.hack.portalgui": "允許你在傳送門內打開GUI。", "description.wurst.hack.potionsaver": "當你站著不動時凍結所有的藥水效果時間。", "description.wurst.hack.prophuntesp": "在躲猫猫小遊戲中知道哪些是人扮的方塊。\n用於Mineplex服務器的Prophunt(躲猫猫),其他服務器未必凑效。", From ea90a95413fe30d2c22ff14b510db559fede5b4f Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 13 May 2023 20:50:24 +0200 Subject: [PATCH 098/126] Update JSON syntax check --- .github/workflows/jsonsyntax.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/jsonsyntax.yml b/.github/workflows/jsonsyntax.yml index 6d413586..1daceaff 100644 --- a/.github/workflows/jsonsyntax.yml +++ b/.github/workflows/jsonsyntax.yml @@ -1,6 +1,10 @@ name: JSON syntax on: + push: + branches: [ "master" ] + paths: + - '**.json' pull_request: paths: - '**.json' @@ -9,8 +13,8 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: json-syntax-check - uses: limitusus/json-syntax-check@v1.0.3 + uses: limitusus/json-syntax-check@v2 with: pattern: "\\.json$" From f4716a5a0c75849a3c1010044413a197008cf937 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sun, 14 May 2023 21:16:16 +0200 Subject: [PATCH 099/126] Simplify how AutoFish's valid range is rendered --- .../net/wurstclient/hacks/AutoFishHack.java | 5 ++--- .../hacks/autofish/AutoFishDebugDraw.java | 21 ++++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFishHack.java b/src/main/java/net/wurstclient/hacks/AutoFishHack.java index e716ecf5..77073b01 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFishHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFishHack.java @@ -39,7 +39,8 @@ public final class AutoFishHack extends Hack private int castRodTimer; private int reelInTimer; - private final AutoFishDebugDraw debugDraw = new AutoFishDebugDraw(); + private final AutoFishDebugDraw debugDraw = + new AutoFishDebugDraw(validRange); private final AutoFishRodSelector rodSelector = new AutoFishRodSelector(); private boolean wasOpenWater; @@ -80,8 +81,6 @@ public final class AutoFishHack extends Hack @Override public void onUpdate() { - debugDraw.updateValidRange(validRange.getValue()); - if(reelInTimer > 0) reelInTimer--; diff --git a/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java b/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java index f34a8a57..eea9ca1d 100644 --- a/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java +++ b/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java @@ -30,6 +30,7 @@ import net.wurstclient.WurstClient; import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.ColorSetting; import net.wurstclient.settings.Setting; +import net.wurstclient.settings.SliderSetting; import net.wurstclient.util.RenderUtils; public final class AutoFishDebugDraw @@ -41,8 +42,13 @@ public final class AutoFishDebugDraw private final ColorSetting ddColor = new ColorSetting("DD color", "Color of the debug draw, if enabled.", Color.RED); + private final SliderSetting validRange; private Vec3d lastSoundPos; - private Box validRangeBox; + + public AutoFishDebugDraw(SliderSetting validRange) + { + this.validRange = validRange; + } public Stream getSettings() { @@ -52,13 +58,6 @@ public final class AutoFishDebugDraw public void reset() { lastSoundPos = null; - validRangeBox = null; - } - - public void updateValidRange(double validRange) - { - validRangeBox = new Box(-validRange, -1 / 16.0, -validRange, validRange, - 1 / 16.0, validRange); } public void updateSoundPos(PlaySoundS2CPacket sound) @@ -85,7 +84,7 @@ public final class AutoFishDebugDraw RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); FishingBobberEntity bobber = WurstClient.MC.player.fishHook; - if(bobber != null && validRangeBox != null) + if(bobber != null) drawValidRange(matrixStack, bobber, regionX, regionZ); if(lastSoundPos != null) @@ -109,7 +108,9 @@ public final class AutoFishDebugDraw float[] colorF = ddColor.getColorF(); RenderSystem.setShaderColor(colorF[0], colorF[1], colorF[2], 0.5F); - RenderUtils.drawOutlinedBox(validRangeBox, matrixStack); + double vr = validRange.getValue(); + Box vrBox = new Box(-vr, -1 / 16.0, -vr, vr, 1 / 16.0, vr); + RenderUtils.drawOutlinedBox(vrBox, matrixStack); matrixStack.pop(); } From c47f8b6bf803147e373e4f15c44c6c2664e8fd76 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 15 May 2023 12:54:48 +0200 Subject: [PATCH 100/126] Use InventoryUtils in AutoFishRodSelector No more scheduled window clicks! --- .../net/wurstclient/hacks/AutoFishHack.java | 10 +---- .../hacks/autofish/AutoFishRodSelector.java | 44 +------------------ .../net/wurstclient/util/InventoryUtils.java | 18 ++++++-- 3 files changed, 18 insertions(+), 54 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFishHack.java b/src/main/java/net/wurstclient/hacks/AutoFishHack.java index 77073b01..b2c1c209 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFishHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFishHack.java @@ -84,15 +84,6 @@ public final class AutoFishHack extends Hack if(reelInTimer > 0) reelInTimer--; - ClientPlayerEntity player = MC.player; - - if(rodSelector.hasScheduledClick()) - { - rodSelector.doScheduledClick(); - castRodTimer = 15; - return; - } - rodSelector.updateBestRod(); if(!rodSelector.hasARod()) @@ -116,6 +107,7 @@ public final class AutoFishHack extends Hack } // cast rod + ClientPlayerEntity player = MC.player; if(player.fishHook == null || player.fishHook.isRemoved()) { rightClick(); diff --git a/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java b/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java index 5329204e..50b9d436 100644 --- a/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java +++ b/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java @@ -14,34 +14,19 @@ import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.FishingRodItem; import net.minecraft.item.ItemStack; import net.wurstclient.WurstClient; -import net.wurstclient.mixinterface.IMinecraftClient; +import net.wurstclient.util.InventoryUtils; public final class AutoFishRodSelector { private static final MinecraftClient MC = WurstClient.MC; - private static final IMinecraftClient IMC = WurstClient.IMC; private int bestRodValue; private int bestRodSlot; - private int scheduledWindowClick; - public void reset() { bestRodValue = -1; bestRodSlot = -1; - scheduledWindowClick = -1; - } - - public boolean hasScheduledClick() - { - return scheduledWindowClick != -1; - } - - public void doScheduledClick() - { - IMC.getInteractionManager().windowClick_PICKUP(scheduledWindowClick); - scheduledWindowClick = -1; } public void updateBestRod() @@ -80,32 +65,7 @@ public final class AutoFishRodSelector public void selectBestRod() { - PlayerInventory inventory = MC.player.getInventory(); - - if(bestRodSlot < 9) - { - inventory.selectedSlot = bestRodSlot; - return; - } - - int firstEmptySlot = inventory.getEmptySlot(); - - if(firstEmptySlot != -1) - { - if(firstEmptySlot >= 9) - IMC.getInteractionManager() - .windowClick_QUICK_MOVE(36 + inventory.selectedSlot); - - IMC.getInteractionManager().windowClick_QUICK_MOVE(bestRodSlot); - - }else - { - IMC.getInteractionManager().windowClick_PICKUP(bestRodSlot); - IMC.getInteractionManager() - .windowClick_PICKUP(36 + inventory.selectedSlot); - - scheduledWindowClick = -bestRodSlot; - } + InventoryUtils.selectItem(bestRodSlot); } private int getRodValue(ItemStack stack) diff --git a/src/main/java/net/wurstclient/util/InventoryUtils.java b/src/main/java/net/wurstclient/util/InventoryUtils.java index 1968e625..2a89e566 100644 --- a/src/main/java/net/wurstclient/util/InventoryUtils.java +++ b/src/main/java/net/wurstclient/util/InventoryUtils.java @@ -79,7 +79,6 @@ public enum InventoryUtils int maxInvSlot, boolean takeFromOffhand) { PlayerInventory inventory = MC.player.getInventory(); - IClientPlayerInteractionManager im = IMC.getInteractionManager(); // create a stream of all slots that we want to search IntStream stream = IntStream.range(0, maxInvSlot); @@ -94,6 +93,21 @@ public enum InventoryUtils if(slot == -1) return false; + selectItem(slot); + return true; + } + + /** + * Moves the item in the given slot to {@code inventory.selectedSlot}. + * + * @param slot + * the slot of the item to select + */ + public static void selectItem(int slot) + { + PlayerInventory inventory = MC.player.getInventory(); + IClientPlayerInteractionManager im = IMC.getInteractionManager(); + // if the item is already in the hotbar, just select it if(slot < 9) inventory.selectedSlot = slot; @@ -104,7 +118,5 @@ public enum InventoryUtils // otherwise, swap with the currently selected item else im.windowClick_SWAP(slot, inventory.selectedSlot); - - return false; } } From 7108fa627d608096d93ae7da4d64ebd2592ab0bb Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 15 May 2023 14:03:59 +0200 Subject: [PATCH 101/126] Make selectItem(int) validate the slot number --- .../net/wurstclient/util/InventoryUtils.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/wurstclient/util/InventoryUtils.java b/src/main/java/net/wurstclient/util/InventoryUtils.java index 2a89e566..4c1b6f78 100644 --- a/src/main/java/net/wurstclient/util/InventoryUtils.java +++ b/src/main/java/net/wurstclient/util/InventoryUtils.java @@ -89,25 +89,29 @@ public enum InventoryUtils int slot = stream.filter(i -> predicate.test(inventory.getStack(i))) .findFirst().orElse(-1); - // if no item was found, return false - if(slot == -1) - return false; - - selectItem(slot); - return true; + return selectItem(slot); } /** - * Moves the item in the given slot to {@code inventory.selectedSlot}. + * Moves the item in the given slot to {@code inventory.selectedSlot}. If + * the given slot is negative, this method will do nothing and return + * {@code false}. * * @param slot * the slot of the item to select + * @return {@code true} if the item was moved. This does not necessarily + * mean that the item is now in the selected slot, it could still be + * on its way there. */ - public static void selectItem(int slot) + public static boolean selectItem(int slot) { PlayerInventory inventory = MC.player.getInventory(); IClientPlayerInteractionManager im = IMC.getInteractionManager(); + // if the slot is negative, abort and return false + if(slot < 0) + return false; + // if the item is already in the hotbar, just select it if(slot < 9) inventory.selectedSlot = slot; @@ -118,5 +122,7 @@ public enum InventoryUtils // otherwise, swap with the currently selected item else im.windowClick_SWAP(slot, inventory.selectedSlot); + + return true; } } From 60b14ff7ed5ea3ee652376d6f490b7013183e197 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 15 May 2023 15:25:03 +0200 Subject: [PATCH 102/126] Make AutoFish turning off when it runs out of fishing rods optional --- .../net/wurstclient/hacks/AutoFishHack.java | 25 +++++---- .../hacks/autofish/AutoFishRodSelector.java | 51 ++++++++++++++----- 2 files changed, 53 insertions(+), 23 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFishHack.java b/src/main/java/net/wurstclient/hacks/AutoFishHack.java index b2c1c209..54ec52cf 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFishHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFishHack.java @@ -41,17 +41,28 @@ public final class AutoFishHack extends Hack private final AutoFishDebugDraw debugDraw = new AutoFishDebugDraw(validRange); - private final AutoFishRodSelector rodSelector = new AutoFishRodSelector(); + private final AutoFishRodSelector rodSelector = + new AutoFishRodSelector(this); private boolean wasOpenWater; public AutoFishHack() { super("AutoFish"); - setCategory(Category.OTHER); + addSetting(validRange); debugDraw.getSettings().forEach(this::addSetting); + rodSelector.getSettings().forEach(this::addSetting); + } + + @Override + public String getRenderName() + { + if(!rodSelector.hasARod()) + return getName() + " [out of rods]"; + + return getName(); } @Override @@ -84,15 +95,7 @@ public final class AutoFishHack extends Hack if(reelInTimer > 0) reelInTimer--; - rodSelector.updateBestRod(); - - if(!rodSelector.hasARod()) - { - ChatUtils.message("AutoFish has run out of fishing rods."); - setEnabled(false); - return; - } - + // select fishing rod if(!rodSelector.isBestRodAlreadySelected()) { rodSelector.selectBestRod(); diff --git a/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java b/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java index 50b9d436..a8a8733d 100644 --- a/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java +++ b/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java @@ -7,6 +7,8 @@ */ package net.wurstclient.hacks.autofish; +import java.util.stream.Stream; + import net.minecraft.client.MinecraftClient; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; @@ -14,28 +16,53 @@ import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.FishingRodItem; import net.minecraft.item.ItemStack; import net.wurstclient.WurstClient; +import net.wurstclient.hacks.AutoFishHack; +import net.wurstclient.settings.CheckboxSetting; +import net.wurstclient.settings.Setting; +import net.wurstclient.util.ChatUtils; import net.wurstclient.util.InventoryUtils; public final class AutoFishRodSelector { private static final MinecraftClient MC = WurstClient.MC; + private final CheckboxSetting stopWhenOutOfRods = new CheckboxSetting( + "Stop when out of rods", + "If enabled, AutoFish will turn itself off when it runs out of fishing rods.", + false); + + private final AutoFishHack autoFish; private int bestRodValue; private int bestRodSlot; + public AutoFishRodSelector(AutoFishHack autoFish) + { + this.autoFish = autoFish; + } + + public Stream getSettings() + { + return Stream.of(stopWhenOutOfRods); + } + public void reset() { bestRodValue = -1; bestRodSlot = -1; } - public void updateBestRod() + public boolean hasARod() + { + return bestRodSlot != -1; + } + + public boolean isBestRodAlreadySelected() { PlayerInventory inventory = MC.player.getInventory(); int selectedSlot = inventory.selectedSlot; ItemStack selectedStack = inventory.getStack(selectedSlot); - // start with selected rod + // evaluate selected rod (or lack thereof) bestRodValue = getRodValue(selectedStack); bestRodSlot = bestRodValue > -1 ? selectedSlot : -1; @@ -51,20 +78,20 @@ public final class AutoFishRodSelector bestRodSlot = slot; } } - } - - public boolean hasARod() - { - return bestRodSlot != -1; - } - - public boolean isBestRodAlreadySelected() - { - return bestRodSlot == MC.player.getInventory().selectedSlot; + + // return true if selected rod is best rod + return bestRodSlot == selectedSlot; } public void selectBestRod() { + if(bestRodSlot == -1 && stopWhenOutOfRods.isChecked()) + { + ChatUtils.message("AutoFish has run out of fishing rods."); + autoFish.setEnabled(false); + return; + } + InventoryUtils.selectItem(bestRodSlot); } From 73e27eabc674b1853d7d41660fd5b3a9ffad113e Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 15 May 2023 16:13:15 +0200 Subject: [PATCH 103/126] Fix InventoryUtils not handling the offhand correctly --- .../net/wurstclient/util/InventoryUtils.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/wurstclient/util/InventoryUtils.java b/src/main/java/net/wurstclient/util/InventoryUtils.java index 4c1b6f78..02a3aad1 100644 --- a/src/main/java/net/wurstclient/util/InventoryUtils.java +++ b/src/main/java/net/wurstclient/util/InventoryUtils.java @@ -118,11 +118,29 @@ public enum InventoryUtils // if there is an empty slot in the hotbar, shift-click the item there // it will be selected in the next tick else if(inventory.getEmptySlot() > -1 && inventory.getEmptySlot() < 9) - im.windowClick_QUICK_MOVE(slot); + im.windowClick_QUICK_MOVE(toNetworkSlot(slot)); // otherwise, swap with the currently selected item else - im.windowClick_SWAP(slot, inventory.selectedSlot); + im.windowClick_SWAP(toNetworkSlot(slot), inventory.selectedSlot); return true; } + + private static int toNetworkSlot(int slot) + { + // hotbar + if(slot >= 0 && slot < 9) + return slot + 36; + + // armor + if(slot >= 36 && slot < 40) + return 44 - slot; + + // offhand + if(slot == 40) + return 45; + + // everything else + return slot; + } } From 15ce5ab8c8d8b4434d8e38631d7cdeb5087ae7e8 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 15 May 2023 16:23:06 +0200 Subject: [PATCH 104/126] Let AutoFishRodSelector see the offhand slot --- .../wurstclient/hacks/autofish/AutoFishRodSelector.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java b/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java index a8a8733d..7cd13707 100644 --- a/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java +++ b/src/main/java/net/wurstclient/hacks/autofish/AutoFishRodSelector.java @@ -7,6 +7,7 @@ */ package net.wurstclient.hacks.autofish; +import java.util.stream.IntStream; import java.util.stream.Stream; import net.minecraft.client.MinecraftClient; @@ -66,8 +67,12 @@ public final class AutoFishRodSelector bestRodValue = getRodValue(selectedStack); bestRodSlot = bestRodValue > -1 ? selectedSlot : -1; + // create a stream of all slots that we want to search + IntStream stream = IntStream.range(0, 36); + stream = IntStream.concat(stream, IntStream.of(40)); + // search inventory for better rod - for(int slot = 0; slot < 36; slot++) + for(int slot : stream.toArray()) { ItemStack stack = inventory.getStack(slot); int rodValue = getRodValue(stack); From 8daf38af68e87dd0834d6ba7bb39434ea3613ffd Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 15 May 2023 16:58:34 +0200 Subject: [PATCH 105/126] Interpolate AutoFishDebugDraw --- .../wurstclient/hacks/autofish/AutoFishDebugDraw.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java b/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java index eea9ca1d..469a0388 100644 --- a/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java +++ b/src/main/java/net/wurstclient/hacks/autofish/AutoFishDebugDraw.java @@ -31,6 +31,7 @@ import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.ColorSetting; import net.wurstclient.settings.Setting; import net.wurstclient.settings.SliderSetting; +import net.wurstclient.util.EntityUtils; import net.wurstclient.util.RenderUtils; public final class AutoFishDebugDraw @@ -85,7 +86,7 @@ public final class AutoFishDebugDraw FishingBobberEntity bobber = WurstClient.MC.player.fishHook; if(bobber != null) - drawValidRange(matrixStack, bobber, regionX, regionZ); + drawValidRange(matrixStack, partialTicks, bobber, regionX, regionZ); if(lastSoundPos != null) drawLastBite(matrixStack, regionX, regionZ); @@ -98,12 +99,13 @@ public final class AutoFishDebugDraw GL11.glDisable(GL11.GL_BLEND); } - private void drawValidRange(MatrixStack matrixStack, + private void drawValidRange(MatrixStack matrixStack, float partialTicks, FishingBobberEntity bobber, int regionX, int regionZ) { matrixStack.push(); - matrixStack.translate(bobber.getX() - regionX, bobber.getY(), - bobber.getZ() - regionZ); + Vec3d pos = EntityUtils.getLerpedPos(bobber, partialTicks); + matrixStack.translate(pos.getX() - regionX, pos.getY(), + pos.getZ() - regionZ); float[] colorF = ddColor.getColorF(); RenderSystem.setShaderColor(colorF[0], colorF[1], colorF[2], 0.5F); From f0a87b5cd789808d8bb5487c73216595bcba26fa Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 15 May 2023 17:20:15 +0200 Subject: [PATCH 106/126] Fix "Max tokens" description still claiming that stop sequences are broken in oobabooga webui They work fine as of 7eba22f51a3d770e617c9f0c589b830a6c8ed3fb. --- .../net/wurstclient/hacks/autocomplete/ModelSettings.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java index 9e84ef9c..701e51b8 100644 --- a/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java +++ b/src/main/java/net/wurstclient/hacks/autocomplete/ModelSettings.java @@ -66,10 +66,7 @@ public final class ModelSettings "The maximum number of tokens that the model can generate.\n\n" + "Higher values allow the model to predict longer chat messages," + " but also increase the time it takes to generate predictions.\n\n" - + "The default value of 16 is fine for most use cases.\n\n" - + "When using an API that doesn't support stop sequences (like the" - + " oobabooga web UI), higher values will result in a lot of wasted" - + " time and tokens.", + + "The default value of 16 is fine for most use cases.", 16, 1, 100, 1, ValueDisplay.INTEGER); public final SliderSetting temperature = new SliderSetting("Temperature", From a1925741df04db716a68b8755164e0760033697f Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 15 May 2023 18:14:09 +0200 Subject: [PATCH 107/126] Clean up AutoFishHack --- .../net/wurstclient/hacks/AutoFishHack.java | 87 +++++++++---------- 1 file changed, 42 insertions(+), 45 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFishHack.java b/src/main/java/net/wurstclient/hacks/AutoFishHack.java index 54ec52cf..b0dac667 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFishHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFishHack.java @@ -10,8 +10,7 @@ package net.wurstclient.hacks; import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.projectile.FishingBobberEntity; -import net.minecraft.item.FishingRodItem; -import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; import net.minecraft.sound.SoundEvents; import net.wurstclient.Category; @@ -27,7 +26,9 @@ import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; import net.wurstclient.util.ChatUtils; -@SearchTags({"FishBot", "auto fish", "fish bot", "fishing"}) +@SearchTags({"AutoFishing", "auto fishing", "AutoFisher", "auto fisher", + "AFKFishBot", "afk fish bot", "AFKFishingBot", "afk fishing bot", + "AFKFisherBot", "afk fisher bot"}) public final class AutoFishHack extends Hack implements UpdateListener, PacketInputListener, RenderListener { @@ -36,14 +37,14 @@ public final class AutoFishHack extends Hack + "Increase your range if bites are not being detected, decrease it if other people's bites are being detected as yours.", 1.5, 0.25, 8, 0.25, ValueDisplay.DECIMAL); - private int castRodTimer; - private int reelInTimer; - private final AutoFishDebugDraw debugDraw = new AutoFishDebugDraw(validRange); private final AutoFishRodSelector rodSelector = new AutoFishRodSelector(this); + private int castRodTimer; + private int reelInTimer; + private boolean wasOpenWater; public AutoFishHack() @@ -92,6 +93,9 @@ public final class AutoFishHack extends Hack @Override public void onUpdate() { + // update timers + if(castRodTimer > 0) + castRodTimer--; if(reelInTimer > 0) reelInTimer--; @@ -102,27 +106,23 @@ public final class AutoFishHack extends Hack return; } - // wait for timer - if(castRodTimer > 0) + // if not fishing, cast rod + if(!isFishing()) { - castRodTimer--; + if(castRodTimer > 0) + return; + + IMC.rightClick(); + castRodTimer = 15; + reelInTimer = 1200; return; } - // cast rod - ClientPlayerEntity player = MC.player; - if(player.fishHook == null || player.fishHook.isRemoved()) - { - rightClick(); - castRodTimer = 15; - reelInTimer = 1200; - } - - // reel in after 60s + // otherwise, reel in when it's time if(reelInTimer == 0) { reelInTimer--; - rightClick(); + IMC.rightClick(); castRodTimer = 15; } } @@ -130,10 +130,7 @@ public final class AutoFishHack extends Hack @Override public void onReceivedPacket(PacketInputEvent event) { - ClientPlayerEntity player = MC.player; - if(player == null || player.fishHook == null) - return; - + // check packet type if(!(event.getPacket() instanceof PlaySoundS2CPacket)) return; @@ -143,16 +140,26 @@ public final class AutoFishHack extends Hack .equals(sound.getSound().value())) return; + // check if player is fishing + if(!isFishing()) + return; + + // check if player is holding a fishing rod + ClientPlayerEntity player = MC.player; + if(!player.getMainHandStack().isOf(Items.FISHING_ROD)) + return; + debugDraw.updateSoundPos(sound); - // check position + // check sound position FishingBobberEntity bobber = player.fishHook; if(Math.abs(sound.getX() - bobber.getX()) > validRange.getValue() || Math.abs(sound.getZ() - bobber.getZ()) > validRange.getValue()) return; // check open water - boolean isOpenWater = isInOpenWater(bobber); + boolean isOpenWater = ((IFishingBobberEntity)bobber) + .checkOpenWaterAround(bobber.getBlockPos()); if(!isOpenWater && wasOpenWater) { ChatUtils.warning("You are currently fishing in shallow water."); @@ -162,28 +169,11 @@ public final class AutoFishHack extends Hack if(!WURST.getHax().openWaterEspHack.isEnabled()) ChatUtils.message("Use OpenWaterESP to find open water."); } + wasOpenWater = isOpenWater; // catch fish - rightClick(); + reelInTimer = 0; castRodTimer = 15; - wasOpenWater = isOpenWater; - } - - private boolean isInOpenWater(FishingBobberEntity bobber) - { - return ((IFishingBobberEntity)bobber) - .checkOpenWaterAround(bobber.getBlockPos()); - } - - private void rightClick() - { - // check held item - ItemStack stack = MC.player.getInventory().getMainHandStack(); - if(stack.isEmpty() || !(stack.getItem() instanceof FishingRodItem)) - return; - - // right click - IMC.rightClick(); } @Override @@ -191,4 +181,11 @@ public final class AutoFishHack extends Hack { debugDraw.render(matrixStack, partialTicks); } + + private boolean isFishing() + { + ClientPlayerEntity player = MC.player; + return player != null && player.fishHook != null + && !player.fishHook.isRemoved(); + } } From dd39d597cee99b510b624a546043ff5c047f1731 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 16 May 2023 12:35:30 +0200 Subject: [PATCH 108/126] Add catchDelay, retryDelay and patience sliders to AutoFish --- .../net/wurstclient/hacks/AutoFishHack.java | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFishHack.java b/src/main/java/net/wurstclient/hacks/AutoFishHack.java index b0dac667..06be48ec 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFishHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFishHack.java @@ -34,9 +34,23 @@ public final class AutoFishHack extends Hack { private final SliderSetting validRange = new SliderSetting("Valid range", "Any bites that occur outside of this range will be ignored.\n\n" - + "Increase your range if bites are not being detected, decrease it if other people's bites are being detected as yours.", + + "Increase your range if bites are not being detected, decrease it" + + " if other people's bites are being detected as yours.", 1.5, 0.25, 8, 0.25, ValueDisplay.DECIMAL); + private final SliderSetting catchDelay = new SliderSetting("Catch delay", + "How long AutoFish will wait after a bite before reeling in.", 0, 0, 60, + 1, ValueDisplay.INTEGER.withSuffix(" ticks")); + + private final SliderSetting retryDelay = new SliderSetting("Retry delay", + "If casting or reeling in the fishing rod fails, this is how long" + + " AutoFish will wait before trying again.", + 15, 0, 100, 1, ValueDisplay.INTEGER.withSuffix(" ticks")); + + private final SliderSetting patience = new SliderSetting("Patience", + "How long AutoFish will wait if it doesn't get a bite before reeling in.", + 60, 10, 120, 1, ValueDisplay.INTEGER.withSuffix("s")); + private final AutoFishDebugDraw debugDraw = new AutoFishDebugDraw(validRange); private final AutoFishRodSelector rodSelector = @@ -53,6 +67,9 @@ public final class AutoFishHack extends Hack setCategory(Category.OTHER); addSetting(validRange); + addSetting(catchDelay); + addSetting(retryDelay); + addSetting(patience); debugDraw.getSettings().forEach(this::addSetting); rodSelector.getSettings().forEach(this::addSetting); } @@ -113,17 +130,17 @@ public final class AutoFishHack extends Hack return; IMC.rightClick(); - castRodTimer = 15; - reelInTimer = 1200; + castRodTimer = retryDelay.getValueI(); + reelInTimer = 20 * patience.getValueI(); return; } // otherwise, reel in when it's time if(reelInTimer == 0) { - reelInTimer--; IMC.rightClick(); - castRodTimer = 15; + reelInTimer = retryDelay.getValueI(); + castRodTimer = retryDelay.getValueI(); } } @@ -172,8 +189,7 @@ public final class AutoFishHack extends Hack wasOpenWater = isOpenWater; // catch fish - reelInTimer = 0; - castRodTimer = 15; + reelInTimer = catchDelay.getValueI(); } @Override From 58250ee900dd7768f4b85e28dca49ea7594b4e9c Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 16 May 2023 17:01:23 +0200 Subject: [PATCH 109/126] Make AutoFish's shallow water warning optional --- .../net/wurstclient/hacks/AutoFishHack.java | 30 +++------- .../autofish/ShallowWaterWarningCheckbox.java | 56 +++++++++++++++++++ 2 files changed, 65 insertions(+), 21 deletions(-) create mode 100644 src/main/java/net/wurstclient/hacks/autofish/ShallowWaterWarningCheckbox.java diff --git a/src/main/java/net/wurstclient/hacks/AutoFishHack.java b/src/main/java/net/wurstclient/hacks/AutoFishHack.java index 06be48ec..1c8113e2 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFishHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFishHack.java @@ -21,10 +21,9 @@ import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; import net.wurstclient.hacks.autofish.AutoFishDebugDraw; import net.wurstclient.hacks.autofish.AutoFishRodSelector; -import net.wurstclient.mixinterface.IFishingBobberEntity; +import net.wurstclient.hacks.autofish.ShallowWaterWarningCheckbox; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; -import net.wurstclient.util.ChatUtils; @SearchTags({"AutoFishing", "auto fishing", "AutoFisher", "auto fisher", "AFKFishBot", "afk fish bot", "AFKFishingBot", "afk fishing bot", @@ -51,6 +50,9 @@ public final class AutoFishHack extends Hack "How long AutoFish will wait if it doesn't get a bite before reeling in.", 60, 10, 120, 1, ValueDisplay.INTEGER.withSuffix("s")); + private final ShallowWaterWarningCheckbox shallowWaterWarning = + new ShallowWaterWarningCheckbox(); + private final AutoFishDebugDraw debugDraw = new AutoFishDebugDraw(validRange); private final AutoFishRodSelector rodSelector = @@ -59,8 +61,6 @@ public final class AutoFishHack extends Hack private int castRodTimer; private int reelInTimer; - private boolean wasOpenWater; - public AutoFishHack() { super("AutoFish"); @@ -72,6 +72,7 @@ public final class AutoFishHack extends Hack addSetting(patience); debugDraw.getSettings().forEach(this::addSetting); rodSelector.getSettings().forEach(this::addSetting); + addSetting(shallowWaterWarning); } @Override @@ -89,10 +90,10 @@ public final class AutoFishHack extends Hack WURST.getHax().airPlaceHack.setEnabled(false); castRodTimer = 0; - reelInTimer = -1; + reelInTimer = 0; rodSelector.reset(); debugDraw.reset(); - wasOpenWater = true; + shallowWaterWarning.reset(); EVENTS.add(UpdateListener.class, this); EVENTS.add(PacketInputListener.class, this); @@ -148,11 +149,10 @@ public final class AutoFishHack extends Hack public void onReceivedPacket(PacketInputEvent event) { // check packet type - if(!(event.getPacket() instanceof PlaySoundS2CPacket)) + if(!(event.getPacket() instanceof PlaySoundS2CPacket sound)) return; // check sound type - PlaySoundS2CPacket sound = (PlaySoundS2CPacket)event.getPacket(); if(!SoundEvents.ENTITY_FISHING_BOBBER_SPLASH .equals(sound.getSound().value())) return; @@ -174,19 +174,7 @@ public final class AutoFishHack extends Hack || Math.abs(sound.getZ() - bobber.getZ()) > validRange.getValue()) return; - // check open water - boolean isOpenWater = ((IFishingBobberEntity)bobber) - .checkOpenWaterAround(bobber.getBlockPos()); - if(!isOpenWater && wasOpenWater) - { - ChatUtils.warning("You are currently fishing in shallow water."); - ChatUtils.message( - "You can't get any treasure items while fishing like this."); - - if(!WURST.getHax().openWaterEspHack.isEnabled()) - ChatUtils.message("Use OpenWaterESP to find open water."); - } - wasOpenWater = isOpenWater; + shallowWaterWarning.checkWaterAround(bobber); // catch fish reelInTimer = catchDelay.getValueI(); diff --git a/src/main/java/net/wurstclient/hacks/autofish/ShallowWaterWarningCheckbox.java b/src/main/java/net/wurstclient/hacks/autofish/ShallowWaterWarningCheckbox.java new file mode 100644 index 00000000..849324d5 --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/autofish/ShallowWaterWarningCheckbox.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks.autofish; + +import net.minecraft.entity.projectile.FishingBobberEntity; +import net.wurstclient.WurstClient; +import net.wurstclient.mixinterface.IFishingBobberEntity; +import net.wurstclient.settings.CheckboxSetting; +import net.wurstclient.util.ChatUtils; + +public class ShallowWaterWarningCheckbox extends CheckboxSetting +{ + private boolean hasAlreadyWarned; + + public ShallowWaterWarningCheckbox() + { + super("Shallow water warning", + "Displays a warning message in chat when you are fishing in shallow" + + " water.", + true); + } + + public void reset() + { + hasAlreadyWarned = false; + } + + public void checkWaterAround(FishingBobberEntity bobber) + { + boolean isOpenWater = ((IFishingBobberEntity)bobber) + .checkOpenWaterAround(bobber.getBlockPos()); + + if(isOpenWater) + { + hasAlreadyWarned = false; + return; + } + + if(isChecked() && !hasAlreadyWarned) + { + ChatUtils.warning("You are currently fishing in shallow water."); + ChatUtils.message( + "You can't get any treasure items while fishing like this."); + + if(!WurstClient.INSTANCE.getHax().openWaterEspHack.isEnabled()) + ChatUtils.message("Use OpenWaterESP to find open water."); + + hasAlreadyWarned = true; + } + } +} From 8ec62e72d057865ea7cdc72fb6e24ce120ba157c Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 18 May 2023 22:26:42 +0200 Subject: [PATCH 110/126] Add option to turn off AutoFish when inventory is full --- .../net/wurstclient/hacks/AutoFishHack.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/net/wurstclient/hacks/AutoFishHack.java b/src/main/java/net/wurstclient/hacks/AutoFishHack.java index 1c8113e2..6e4fe102 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFishHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFishHack.java @@ -22,8 +22,10 @@ import net.wurstclient.hack.Hack; import net.wurstclient.hacks.autofish.AutoFishDebugDraw; import net.wurstclient.hacks.autofish.AutoFishRodSelector; import net.wurstclient.hacks.autofish.ShallowWaterWarningCheckbox; +import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; +import net.wurstclient.util.ChatUtils; @SearchTags({"AutoFishing", "auto fishing", "AutoFisher", "auto fisher", "AFKFishBot", "afk fish bot", "AFKFishingBot", "afk fishing bot", @@ -50,6 +52,11 @@ public final class AutoFishHack extends Hack "How long AutoFish will wait if it doesn't get a bite before reeling in.", 60, 10, 120, 1, ValueDisplay.INTEGER.withSuffix("s")); + private final CheckboxSetting stopWhenInvFull = new CheckboxSetting( + "Stop when inv full", + "If enabled, AutoFish will turn itself off when your inventory is full.", + false); + private final ShallowWaterWarningCheckbox shallowWaterWarning = new ShallowWaterWarningCheckbox(); @@ -72,6 +79,7 @@ public final class AutoFishHack extends Hack addSetting(patience); debugDraw.getSettings().forEach(this::addSetting); rodSelector.getSettings().forEach(this::addSetting); + addSetting(stopWhenInvFull); addSetting(shallowWaterWarning); } @@ -117,6 +125,16 @@ public final class AutoFishHack extends Hack if(reelInTimer > 0) reelInTimer--; + // check if inventory is full + if(stopWhenInvFull.isChecked() + && MC.player.getInventory().getEmptySlot() == -1) + { + ChatUtils.message( + "AutoFish has stopped because your inventory is full."); + setEnabled(false); + return; + } + // select fishing rod if(!rodSelector.isBestRodAlreadySelected()) { From bb00afa3ab1ca446dd6c23cd158db3c8b4a327f1 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 18 May 2023 22:38:45 +0200 Subject: [PATCH 111/126] Change version to 7.35 --- gradle.properties | 2 +- src/main/java/net/wurstclient/WurstClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5ef3bc12..6b47e69f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ loader_version=0.14.19 fabric_version=0.80.0+1.19.4 # Mod Properties -mod_version = v7.34-MC1.19.4 +mod_version = v7.35-MC1.19.4 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index 443d8650..fe5abe63 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -56,7 +56,7 @@ public enum WurstClient public static MinecraftClient MC; public static IMinecraftClient IMC; - public static final String VERSION = "7.34"; + public static final String VERSION = "7.35"; public static final String MC_VERSION = "1.19.4"; private WurstAnalytics analytics; From f0064f433be62be557039ab1b896711f539b8b55 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 19 May 2023 00:45:51 +0200 Subject: [PATCH 112/126] Use OverlayRenderer in AutoLibrarianHack --- .../wurstclient/hacks/AutoLibrarianHack.java | 58 +++---------------- 1 file changed, 7 insertions(+), 51 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java b/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java index 33a8610d..08534e16 100644 --- a/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoLibrarianHack.java @@ -51,15 +51,9 @@ import net.wurstclient.settings.BookOffersSetting; import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; -import net.wurstclient.util.BlockBreaker; +import net.wurstclient.util.*; import net.wurstclient.util.BlockBreaker.BlockBreakingParams; -import net.wurstclient.util.BlockPlacer; import net.wurstclient.util.BlockPlacer.BlockPlacingParams; -import net.wurstclient.util.BlockUtils; -import net.wurstclient.util.ChatUtils; -import net.wurstclient.util.InventoryUtils; -import net.wurstclient.util.RenderUtils; -import net.wurstclient.util.RotationUtils; @SearchTags({"auto librarian", "AutoVillager", "auto villager", "VillagerTrainer", "villager trainer", "LibrarianTrainer", @@ -104,6 +98,7 @@ public final class AutoLibrarianHack extends Hack + "Can be adjusted from 0 (off) to 100.", 1, 0, 100, 1, ValueDisplay.INTEGER.withLabel(0, "off")); + private final OverlayRenderer overlay = new OverlayRenderer(); private final HashSet experiencedVillagers = new HashSet<>(); @@ -112,8 +107,6 @@ public final class AutoLibrarianHack extends Hack private boolean placingJobSite; private boolean breakingJobSite; - private float progress; - private float prevProgress; public AutoLibrarianHack() { @@ -148,8 +141,7 @@ public final class AutoLibrarianHack extends Hack breakingJobSite = false; } - progress = 0; - prevProgress = 0; + overlay.resetProgress(); villager = null; jobSite = null; placingJobSite = false; @@ -290,19 +282,7 @@ public final class AutoLibrarianHack extends Hack swingHand.getSelected().swing(Hand.MAIN_HAND); // update progress - if(MC.player.getAbilities().creativeMode - || BlockUtils.getHardness(jobSite) >= 1) - { - progress = 1; - prevProgress = 1; - return; - } - - prevProgress = progress; - progress = IMC.getInteractionManager().getCurrentBreakingProgress(); - - if(progress < prevProgress) - prevProgress = progress; + overlay.updateProgress(); } private void placeJobSite() @@ -550,38 +530,14 @@ public final class AutoLibrarianHack extends Hack RenderUtils.drawCrossBox(box, matrixStack); } - if(breakingJobSite && jobSite != null) - { - matrixStack.push(); - - Box box = new Box(BlockPos.ORIGIN); - float p = prevProgress + (progress - prevProgress) * partialTicks; - float red = p * 2F; - float green = 2 - red; - - matrixStack.translate(jobSite.getX() - regionX, jobSite.getY(), - jobSite.getZ() - regionZ); - if(p < 1) - { - matrixStack.translate(0.5, 0.5, 0.5); - matrixStack.scale(p, p, p); - matrixStack.translate(-0.5, -0.5, -0.5); - } - - RenderSystem.setShaderColor(red, green, 0, 0.25F); - RenderUtils.drawSolidBox(box, matrixStack); - - RenderSystem.setShaderColor(red, green, 0, 0.5F); - RenderUtils.drawOutlinedBox(box, matrixStack); - - matrixStack.pop(); - } - matrixStack.pop(); // GL resets RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); + + if(breakingJobSite) + overlay.render(matrixStack, partialTicks, jobSite); } } From 4fa783dd6f1956f1b1bcf0a320de68e78f87e3ef Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 19 May 2023 13:40:27 +0200 Subject: [PATCH 113/126] Use square & ceil helpers for AutoFarm range --- src/main/java/net/wurstclient/hacks/AutoFarmHack.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index 4b1de48b..de28b627 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -120,8 +120,8 @@ public final class AutoFarmHack extends Hack currentBlock = null; Vec3d eyesVec = RotationUtils.getEyesPos().subtract(0.5, 0.5, 0.5); BlockPos eyesBlock = BlockPos.ofFloored(RotationUtils.getEyesPos()); - double rangeSq = Math.pow(range.getValue(), 2); - int blockRange = (int)Math.ceil(range.getValue()); + double rangeSq = range.getValueSq(); + int blockRange = range.getValueCeil(); List blocks = getBlockStream(eyesBlock, blockRange) .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) From e370b9e46feaddeaa7ab40b625499bba50d03933 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 19 May 2023 17:08:41 +0200 Subject: [PATCH 114/126] Update Fabric API --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 6b47e69f..747a5ca9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.19.4+build.2 loader_version=0.14.19 #Fabric api -fabric_version=0.80.0+1.19.4 +fabric_version=0.81.1+1.19.4 # Mod Properties mod_version = v7.35-MC1.19.4 From 880809f0c39323df926648c1a5f1db66e95b198d Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 20 May 2023 21:16:48 +0200 Subject: [PATCH 115/126] Use OverlayRenderer in AutoFarmHack --- .../net/wurstclient/hacks/AutoFarmHack.java | 70 +++++-------------- .../net/wurstclient/util/OverlayRenderer.java | 5 +- 2 files changed, 18 insertions(+), 57 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index de28b627..3be8ee1c 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -49,6 +49,7 @@ import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; import net.wurstclient.util.BlockBreaker; import net.wurstclient.util.BlockUtils; +import net.wurstclient.util.OverlayRenderer; import net.wurstclient.util.RenderUtils; import net.wurstclient.util.RotationUtils; @@ -66,9 +67,8 @@ public final class AutoFarmHack extends Hack private final ArrayDeque> prevBlocks = new ArrayDeque<>(); private BlockPos currentBlock; - private float progress; - private float prevProgress; + private final OverlayRenderer overlay = new OverlayRenderer(); private VertexBuffer greenBuffer; private VertexBuffer cyanBuffer; private VertexBuffer redBuffer; @@ -107,6 +107,7 @@ public final class AutoFarmHack extends Hack } prevBlocks.clear(); + overlay.resetProgress(); busy = false; Stream.of(greenBuffer, cyanBuffer, redBuffer).filter(Objects::nonNull) @@ -187,9 +188,6 @@ public final class AutoFarmHack extends Hack @Override public void onRender(MatrixStack matrixStack, float partialTicks) { - if(WurstClient.MC.getBlockEntityRenderDispatcher().camera == null) - return; - // GL settings GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); @@ -232,39 +230,14 @@ public final class AutoFarmHack extends Hack VertexBuffer.unbind(); } - if(currentBlock != null) - { - matrixStack.push(); - - Box box = new Box(BlockPos.ORIGIN); - float p = prevProgress + (progress - prevProgress) * partialTicks; - float red = p * 2F; - float green = 2 - red; - - matrixStack.translate(currentBlock.getX() - regionX, - currentBlock.getY(), currentBlock.getZ() - regionZ); - if(p < 1) - { - matrixStack.translate(0.5, 0.5, 0.5); - matrixStack.scale(p, p, p); - matrixStack.translate(-0.5, -0.5, -0.5); - } - - RenderSystem.setShaderColor(red, green, 0, 0.25F); - RenderUtils.drawSolidBox(box, matrixStack); - - RenderSystem.setShaderColor(red, green, 0, 0.5F); - RenderUtils.drawOutlinedBox(box, matrixStack); - - matrixStack.pop(); - } - matrixStack.pop(); // GL resets RenderSystem.setShaderColor(1, 1, 1, 1); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glDisable(GL11.GL_BLEND); + + overlay.render(matrixStack, partialTicks, currentBlock); } private Stream getBlockStream(BlockPos center, int range) @@ -467,23 +440,21 @@ public final class AutoFarmHack extends Hack { if(MC.player.getAbilities().creativeMode) { - Stream stream3 = blocksToHarvest.parallelStream(); + Stream stream = blocksToHarvest.parallelStream(); for(Set set : prevBlocks) - stream3 = stream3.filter(pos -> !set.contains(pos)); - List blocksToHarvest2 = - stream3.collect(Collectors.toList()); + stream = stream.filter(pos -> !set.contains(pos)); + List filteredBlocks = stream.collect(Collectors.toList()); - prevBlocks.addLast(new HashSet<>(blocksToHarvest2)); + prevBlocks.addLast(new HashSet<>(filteredBlocks)); while(prevBlocks.size() > 5) prevBlocks.removeFirst(); - if(!blocksToHarvest2.isEmpty()) - currentBlock = blocksToHarvest2.get(0); + if(!filteredBlocks.isEmpty()) + currentBlock = filteredBlocks.get(0); MC.interactionManager.cancelBlockBreaking(); - progress = 1; - prevProgress = 1; - BlockBreaker.breakBlocksWithPacketSpam(blocksToHarvest2); + overlay.resetProgress(); + BlockBreaker.breakBlocksWithPacketSpam(filteredBlocks); return; } @@ -498,18 +469,9 @@ public final class AutoFarmHack extends Hack MC.interactionManager.cancelBlockBreaking(); if(currentBlock != null && BlockUtils.getHardness(currentBlock) < 1) - { - prevProgress = progress; - progress = IMC.getInteractionManager().getCurrentBreakingProgress(); - - if(progress < prevProgress) - prevProgress = progress; - - }else - { - progress = 1; - prevProgress = 1; - } + overlay.updateProgress(); + else + overlay.resetProgress(); } private void updateVertexBuffers(List blocksToHarvest, diff --git a/src/main/java/net/wurstclient/util/OverlayRenderer.java b/src/main/java/net/wurstclient/util/OverlayRenderer.java index a11ab189..74635686 100644 --- a/src/main/java/net/wurstclient/util/OverlayRenderer.java +++ b/src/main/java/net/wurstclient/util/OverlayRenderer.java @@ -74,9 +74,8 @@ public final class OverlayRenderer pos.getZ() - regionZ); // get interpolated progress - boolean breaksInstantly = (MC.player.getAbilities().creativeMode - || BlockUtils.getHardness(pos) >= 1) - && BlockUtils.canBeClicked(pos); + boolean breaksInstantly = MC.player.getAbilities().creativeMode + || BlockUtils.getHardness(pos) >= 1; float p = breaksInstantly ? 1 : MathHelper.lerp(partialTicks, prevProgress, progress); From 68bb8cb95ca561da810386b28478d1964f69ca22 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 22 May 2023 17:36:21 +0200 Subject: [PATCH 116/126] Refactor NukerLegit to use BlockBreaker --- .../net/wurstclient/hacks/NukerLegitHack.java | 99 +++++-------------- 1 file changed, 25 insertions(+), 74 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java index c1567a15..cd2a9205 100644 --- a/src/main/java/net/wurstclient/hacks/NukerLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/NukerLegitHack.java @@ -14,16 +14,12 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; -import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.Material; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.Vec3i; -import net.minecraft.util.shape.VoxelShape; import net.wurstclient.Category; import net.wurstclient.SearchTags; import net.wurstclient.events.LeftClickListener; @@ -36,6 +32,8 @@ import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.EnumSetting; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; +import net.wurstclient.util.BlockBreaker; +import net.wurstclient.util.BlockBreaker.BlockBreakingParams; import net.wurstclient.util.BlockUtils; import net.wurstclient.util.OverlayRenderer; import net.wurstclient.util.RotationUtils; @@ -168,7 +166,7 @@ public final class NukerLegitHack extends Hack } // get valid blocks - Iterable validBlocks = getValidBlocks(range.getValue(), + Iterable validBlocks = getValidBlocks(range.getValueI(), mode.getSelected().getValidator(this)); // find closest valid block @@ -193,92 +191,45 @@ public final class NukerLegitHack extends Hack renderer.updateProgress(); } - private ArrayList getValidBlocks(double range, + private ArrayList getValidBlocks(int range, Predicate validator) { - Vec3d eyesVec = RotationUtils.getEyesPos().subtract(0.5, 0.5, 0.5); - double rangeSq = Math.pow(range + 0.5, 2); - int rangeI = (int)Math.ceil(range); + Vec3d eyesVec = RotationUtils.getEyesPos(); + BlockPos center = BlockPos.ofFloored(eyesVec); - BlockPos center = BlockPos.ofFloored(RotationUtils.getEyesPos()); - BlockPos min = center.add(-rangeI, -rangeI, -rangeI); - BlockPos max = center.add(rangeI, rangeI, rangeI); - - return BlockUtils.getAllInBox(min, max).stream() - .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) + return BlockUtils.getAllInBoxStream(center, range) .filter(BlockUtils::canBeClicked).filter(validator) .sorted(Comparator.comparingDouble( - pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)))) + pos -> eyesVec.squaredDistanceTo(Vec3d.ofCenter(pos)))) .collect(Collectors.toCollection(ArrayList::new)); } private boolean breakBlockExtraLegit(BlockPos pos) { - Direction[] sides = Direction.values(); - - BlockState state = BlockUtils.getState(pos); - VoxelShape shape = state.getOutlineShape(MC.world, pos); - if(shape.isEmpty()) + BlockBreakingParams params = BlockBreaker.getBlockBreakingParams(pos); + if(!params.lineOfSight() || params.distanceSq() > range.getValueSq()) return false; - Vec3d eyesPos = RotationUtils.getEyesPos(); - Vec3d relCenter = shape.getBoundingBox().getCenter(); - Vec3d center = Vec3d.of(pos).add(relCenter); + // face block + WURST.getRotationFaker().faceVectorClient(params.hitVec()); - Vec3d[] hitVecs = new Vec3d[sides.length]; - for(int i = 0; i < sides.length; i++) + WURST.getHax().autoToolHack.equipIfEnabled(pos); + + if(!MC.interactionManager.isBreakingBlock()) + MC.interactionManager.attackBlock(pos, params.side()); + + // if attack key is down but nothing happens, + // release it for one tick + if(MC.options.attackKey.isPressed() + && !MC.interactionManager.isBreakingBlock()) { - Vec3i dirVec = sides[i].getVector(); - Vec3d relHitVec = new Vec3d(relCenter.x * dirVec.getX(), - relCenter.y * dirVec.getY(), relCenter.z * dirVec.getZ()); - hitVecs[i] = center.add(relHitVec); - } - - double distanceSqToCenter = eyesPos.squaredDistanceTo(center); - - for(Direction side : sides) - { - Vec3d hitVec = hitVecs[side.ordinal()]; - double distanceSqHitVec = eyesPos.squaredDistanceTo(hitVec); - - // check if hitVec is within range (4.25 blocks) - if(distanceSqHitVec > 18.0625) - continue; - - // check if side is facing towards player - if(distanceSqHitVec >= distanceSqToCenter) - continue; - - // check line of sight - if(MC.world.raycastBlock(eyesPos, hitVec, pos, shape, - state) != null) - continue; - - // face block - WURST.getRotationFaker().faceVectorClient(hitVec); - - if(currentBlock != null) - WURST.getHax().autoToolHack.equipIfEnabled(currentBlock); - - if(!MC.interactionManager.isBreakingBlock()) - MC.interactionManager.attackBlock(pos, side); - - // if attack key is down but nothing happens, - // release it for one tick - if(MC.options.attackKey.isPressed() - && !MC.interactionManager.isBreakingBlock()) - { - MC.options.attackKey.setPressed(false); - return true; - } - - // damage block - MC.options.attackKey.setPressed(true); - + MC.options.attackKey.setPressed(false); return true; } - return false; + // damage block + MC.options.attackKey.setPressed(true); + return true; } @Override From ee57b3027df5b69b9c4551fed20bee41d198f645 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 24 May 2023 12:01:32 +0200 Subject: [PATCH 117/126] Fix relHitVec calculation The previous code assumed that the center of a block is the same as its size divided by two, which works for most blocks but not all of them. For example, an upside down slab has its center on the Y axis at 0.75, but half of its height is only 0.25. Breaking a slab from the top with the old code would place relHitVec's Y coordinate at 0.75+0.75=1.5 (floating half a block above the slab's top surface), with the new code it's 0.75+0.25=1 (exactly on the surface where it should be). --- src/main/java/net/wurstclient/util/BlockBreaker.java | 11 +++++++---- src/main/java/net/wurstclient/util/BlockPlacer.java | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/wurstclient/util/BlockBreaker.java b/src/main/java/net/wurstclient/util/BlockBreaker.java index 2f416792..16398f6f 100644 --- a/src/main/java/net/wurstclient/util/BlockBreaker.java +++ b/src/main/java/net/wurstclient/util/BlockBreaker.java @@ -16,6 +16,7 @@ import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket.Action; import net.minecraft.util.Hand; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; @@ -66,15 +67,17 @@ public enum BlockBreaker return null; Vec3d eyesPos = RotationUtils.getEyesPos(); - Vec3d relCenter = shape.getBoundingBox().getCenter(); - Vec3d center = Vec3d.of(pos).add(relCenter); + Box box = shape.getBoundingBox(); + Vec3d halfSize = new Vec3d(box.maxX - box.minX, box.maxY - box.minY, + box.maxZ - box.minZ).multiply(0.5); + Vec3d center = Vec3d.of(pos).add(box.getCenter()); Vec3d[] hitVecs = new Vec3d[sides.length]; for(int i = 0; i < sides.length; i++) { Vec3i dirVec = sides[i].getVector(); - Vec3d relHitVec = new Vec3d(relCenter.x * dirVec.getX(), - relCenter.y * dirVec.getY(), relCenter.z * dirVec.getZ()); + Vec3d relHitVec = new Vec3d(halfSize.x * dirVec.getX(), + halfSize.y * dirVec.getY(), halfSize.z * dirVec.getZ()); hitVecs[i] = center.add(relHitVec); } diff --git a/src/main/java/net/wurstclient/util/BlockPlacer.java b/src/main/java/net/wurstclient/util/BlockPlacer.java index 91144943..60231d1b 100644 --- a/src/main/java/net/wurstclient/util/BlockPlacer.java +++ b/src/main/java/net/wurstclient/util/BlockPlacer.java @@ -12,6 +12,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.hit.HitResult; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3i; @@ -87,12 +88,14 @@ public enum BlockPlacer if(shape.isEmpty() || state.getMaterial().isReplaceable()) continue; - Vec3d relCenter = shape.getBoundingBox().getCenter(); - Vec3d center = Vec3d.of(neighbor).add(relCenter); + Box box = shape.getBoundingBox(); + Vec3d halfSize = new Vec3d(box.maxX - box.minX, box.maxY - box.minY, + box.maxZ - box.minZ).multiply(0.5); + Vec3d center = Vec3d.of(neighbor).add(box.getCenter()); Vec3i dirVec = sides[i].getOpposite().getVector(); - Vec3d relHitVec = new Vec3d(relCenter.x * dirVec.getX(), - relCenter.y * dirVec.getY(), relCenter.z * dirVec.getZ()); + Vec3d relHitVec = new Vec3d(halfSize.x * dirVec.getX(), + halfSize.y * dirVec.getY(), halfSize.z * dirVec.getZ()); hitVecs[i] = center.add(relHitVec); } From 542d7b23526e355a6a9bf7fc2a3080a3c7d4995d Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 25 May 2023 13:29:57 +0200 Subject: [PATCH 118/126] Remove AutoFarmHack.getBlockStream() --- .../java/net/wurstclient/hacks/AutoFarmHack.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index 3be8ee1c..58b7a72f 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -124,7 +124,8 @@ public final class AutoFarmHack extends Hack double rangeSq = range.getValueSq(); int blockRange = range.getValueCeil(); - List blocks = getBlockStream(eyesBlock, blockRange) + List blocks = BlockUtils + .getAllInBoxStream(eyesBlock, blockRange) .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) .filter(BlockUtils::canBeClicked).collect(Collectors.toList()); @@ -175,7 +176,7 @@ public final class AutoFarmHack extends Hack private List getBlocksToReplant(Vec3d eyesVec, BlockPos eyesBlock, double rangeSq, int blockRange) { - return getBlockStream(eyesBlock, blockRange) + return BlockUtils.getAllInBoxStream(eyesBlock, blockRange) .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) .filter( pos -> BlockUtils.getState(pos).getMaterial().isReplaceable()) @@ -240,14 +241,6 @@ public final class AutoFarmHack extends Hack overlay.render(matrixStack, partialTicks, currentBlock); } - private Stream getBlockStream(BlockPos center, int range) - { - BlockPos min = center.add(-range, -range, -range); - BlockPos max = center.add(range, range, range); - - return BlockUtils.getAllInBox(min, max).stream(); - } - private boolean shouldBeHarvested(BlockPos pos) { Block block = BlockUtils.getBlock(pos); From d84ef2939ececf41ec4ad3c0d43502b6df0f59a3 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Thu, 25 May 2023 17:39:11 +0200 Subject: [PATCH 119/126] Use BlockPlacer in AutoFarmHack --- .../net/wurstclient/hacks/AutoFarmHack.java | 76 +++++-------------- 1 file changed, 18 insertions(+), 58 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index 58b7a72f..c283d81d 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -32,12 +32,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.HandSwingC2SPacket; import net.minecraft.registry.tag.BlockTags; +import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; -import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; -import net.minecraft.util.shape.VoxelShape; import net.wurstclient.Category; import net.wurstclient.SearchTags; import net.wurstclient.WurstClient; @@ -48,6 +47,8 @@ import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; import net.wurstclient.util.BlockBreaker; +import net.wurstclient.util.BlockPlacer; +import net.wurstclient.util.BlockPlacer.BlockPlacingParams; import net.wurstclient.util.BlockUtils; import net.wurstclient.util.OverlayRenderer; import net.wurstclient.util.RenderUtils; @@ -357,75 +358,34 @@ public final class AutoFarmHack extends Hack private void placeBlockSimple(BlockPos pos) { - Direction side = null; - Direction[] sides = Direction.values(); - - Vec3d eyesPos = RotationUtils.getEyesPos(); - Vec3d posVec = Vec3d.ofCenter(pos); - double distanceSqPosVec = eyesPos.squaredDistanceTo(posVec); - - Vec3d[] hitVecs = new Vec3d[sides.length]; - for(int i = 0; i < sides.length; i++) - hitVecs[i] = - posVec.add(Vec3d.of(sides[i].getVector()).multiply(0.5)); - - for(int i = 0; i < sides.length; i++) - { - // check if neighbor can be right clicked - BlockPos neighbor = pos.offset(sides[i]); - if(!BlockUtils.canBeClicked(neighbor)) - continue; - - // check line of sight - BlockState neighborState = BlockUtils.getState(neighbor); - VoxelShape neighborShape = - neighborState.getOutlineShape(MC.world, neighbor); - if(MC.world.raycastBlock(eyesPos, hitVecs[i], neighbor, - neighborShape, neighborState) != null) - continue; - - side = sides[i]; - break; - } - - if(side == null) - for(int i = 0; i < sides.length; i++) - { - // check if neighbor can be right clicked - if(!BlockUtils.canBeClicked(pos.offset(sides[i]))) - continue; - - // check if side is facing away from player - if(distanceSqPosVec > eyesPos.squaredDistanceTo(hitVecs[i])) - continue; - - side = sides[i]; - break; - } - - if(side == null) + // should never happen, but just in case + if(!BlockUtils.getState(pos).isReplaceable()) return; - Vec3d hitVec = hitVecs[side.ordinal()]; + BlockPlacingParams params = BlockPlacer.getBlockPlacingParams(pos); + if(params == null || params.distanceSq() > range.getValueSq()) + return; // face block - WURST.getRotationFaker().faceVectorPacket(hitVec); - if(RotationUtils.getAngleToLastReportedLookVec(hitVec) > 1) + WURST.getRotationFaker().faceVectorPacket(params.hitVec()); + if(RotationUtils.getAngleToLastReportedLookVec(params.hitVec()) > 1) return; - // check timer + // check cooldown if(IMC.getItemUseCooldown() > 0) return; + Hand hand = Hand.MAIN_HAND; + // place block - IMC.getInteractionManager().rightClickBlock(pos.offset(side), - side.getOpposite(), hitVec); + ActionResult result = MC.interactionManager.interactBlock(MC.player, + hand, params.toHitResult()); // swing arm - MC.player.networkHandler - .sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND)); + if(result.isAccepted() && result.shouldSwingHand()) + MC.player.networkHandler.sendPacket(new HandSwingC2SPacket(hand)); - // reset timer + // reset cooldown IMC.setItemUseCooldown(4); } From c65f6da123091cfb1427fad98f010d7186ce6988 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Fri, 26 May 2023 19:58:23 +0200 Subject: [PATCH 120/126] Move AutoFarm rendering to a separate class --- .../net/wurstclient/hacks/AutoFarmHack.java | 165 ++-------------- .../hacks/autofarm/AutoFarmRenderer.java | 184 ++++++++++++++++++ 2 files changed, 198 insertions(+), 151 deletions(-) create mode 100644 src/main/java/net/wurstclient/hacks/autofarm/AutoFarmRenderer.java diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index c283d81d..fb102e0d 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -7,25 +7,18 @@ */ package net.wurstclient.hacks; -import java.util.*; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import org.joml.Matrix4f; -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.systems.RenderSystem; - import net.minecraft.block.*; -import net.minecraft.client.gl.ShaderProgram; -import net.minecraft.client.gl.VertexBuffer; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.render.BufferBuilder; -import net.minecraft.client.render.BufferBuilder.BuiltBuffer; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.Tessellator; -import net.minecraft.client.render.VertexFormat; -import net.minecraft.client.render.VertexFormats; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -35,14 +28,13 @@ import net.minecraft.registry.tag.BlockTags; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; import net.wurstclient.Category; import net.wurstclient.SearchTags; -import net.wurstclient.WurstClient; import net.wurstclient.events.RenderListener; import net.wurstclient.events.UpdateListener; import net.wurstclient.hack.Hack; +import net.wurstclient.hacks.autofarm.AutoFarmRenderer; import net.wurstclient.settings.CheckboxSetting; import net.wurstclient.settings.SliderSetting; import net.wurstclient.settings.SliderSetting.ValueDisplay; @@ -51,7 +43,6 @@ import net.wurstclient.util.BlockPlacer; import net.wurstclient.util.BlockPlacer.BlockPlacingParams; import net.wurstclient.util.BlockUtils; import net.wurstclient.util.OverlayRenderer; -import net.wurstclient.util.RenderUtils; import net.wurstclient.util.RotationUtils; @SearchTags({"auto farm", "AutoHarvest", "auto harvest"}) @@ -65,14 +56,11 @@ public final class AutoFarmHack extends Hack new CheckboxSetting("Replant", true); private final HashMap plants = new HashMap<>(); - private final ArrayDeque> prevBlocks = new ArrayDeque<>(); private BlockPos currentBlock; + private final AutoFarmRenderer renderer = new AutoFarmRenderer(); private final OverlayRenderer overlay = new OverlayRenderer(); - private VertexBuffer greenBuffer; - private VertexBuffer cyanBuffer; - private VertexBuffer redBuffer; private boolean busy; @@ -111,9 +99,7 @@ public final class AutoFarmHack extends Hack overlay.resetProgress(); busy = false; - Stream.of(greenBuffer, cyanBuffer, redBuffer).filter(Objects::nonNull) - .forEach(VertexBuffer::close); - greenBuffer = cyanBuffer = redBuffer = null; + renderer.reset(); } @Override @@ -162,7 +148,9 @@ public final class AutoFarmHack extends Hack harvest(blocksToHarvest); busy = !blocksToHarvest.isEmpty() || !blocksToReplant.isEmpty(); - updateVertexBuffers(blocksToHarvest, blocksToReplant); + + renderer.updateVertexBuffers(blocksToHarvest, plants.keySet(), + blocksToReplant); } private List getBlocksToHarvest(Vec3d eyesVec, @@ -190,55 +178,7 @@ public final class AutoFarmHack extends Hack @Override public void onRender(MatrixStack matrixStack, float partialTicks) { - // GL settings - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_DEPTH_TEST); - - matrixStack.push(); - - BlockPos camPos = RenderUtils.getCameraBlockPos(); - int regionX = (camPos.getX() >> 9) * 512; - int regionZ = (camPos.getZ() >> 9) * 512; - RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); - - RenderSystem.setShader(GameRenderer::getPositionProgram); - Matrix4f viewMatrix = matrixStack.peek().getPositionMatrix(); - Matrix4f projMatrix = RenderSystem.getProjectionMatrix(); - ShaderProgram shader = RenderSystem.getShader(); - - if(greenBuffer != null) - { - RenderSystem.setShaderColor(0, 1, 0, 0.5F); - greenBuffer.bind(); - greenBuffer.draw(viewMatrix, projMatrix, shader); - VertexBuffer.unbind(); - } - - if(cyanBuffer != null) - { - RenderSystem.setShaderColor(0, 1, 1, 0.5F); - cyanBuffer.bind(); - cyanBuffer.draw(viewMatrix, projMatrix, shader); - VertexBuffer.unbind(); - } - - if(redBuffer != null) - { - RenderSystem.setShaderColor(1, 0, 0, 0.5F); - redBuffer.bind(); - redBuffer.draw(viewMatrix, projMatrix, shader); - VertexBuffer.unbind(); - } - - matrixStack.pop(); - - // GL resets - RenderSystem.setShaderColor(1, 1, 1, 1); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDisable(GL11.GL_BLEND); - + renderer.render(matrixStack); overlay.render(matrixStack, partialTicks, currentBlock); } @@ -427,83 +367,6 @@ public final class AutoFarmHack extends Hack overlay.resetProgress(); } - private void updateVertexBuffers(List blocksToHarvest, - List blocksToReplant) - { - if(WurstClient.MC.getBlockEntityRenderDispatcher().camera == null) - return; - - Tessellator tessellator = RenderSystem.renderThreadTesselator(); - BufferBuilder bufferBuilder = tessellator.getBuffer(); - - BlockPos camPos = RenderUtils.getCameraBlockPos(); - int regionX = (camPos.getX() >> 9) * 512; - int regionZ = (camPos.getZ() >> 9) * 512; - - if(greenBuffer != null) - greenBuffer.close(); - - greenBuffer = new VertexBuffer(); - - bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, - VertexFormats.POSITION); - - double boxMin = 1 / 16.0; - double boxMax = 15 / 16.0; - Box box = new Box(boxMin, boxMin, boxMin, boxMax, boxMax, boxMax); - - for(BlockPos pos : blocksToHarvest) - { - Box renderBox = box.offset(pos).offset(-regionX, 0, -regionZ); - RenderUtils.drawOutlinedBox(renderBox, bufferBuilder); - } - - BuiltBuffer buffer = bufferBuilder.end(); - greenBuffer.bind(); - greenBuffer.upload(buffer); - VertexBuffer.unbind(); - - if(cyanBuffer != null) - cyanBuffer.close(); - - cyanBuffer = new VertexBuffer(); - - bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, - VertexFormats.POSITION); - - Box node = new Box(0.25, 0.25, 0.25, 0.75, 0.75, 0.75); - - for(BlockPos pos : plants.keySet()) - { - Box renderNode = node.offset(pos).offset(-regionX, 0, -regionZ); - RenderUtils.drawNode(renderNode, bufferBuilder); - } - - buffer = bufferBuilder.end(); - cyanBuffer.bind(); - cyanBuffer.upload(buffer); - VertexBuffer.unbind(); - - if(redBuffer != null) - redBuffer.close(); - - redBuffer = new VertexBuffer(); - - bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, - VertexFormats.POSITION); - - for(BlockPos pos : blocksToReplant) - { - Box renderBox = box.offset(pos).offset(-regionX, 0, -regionZ); - RenderUtils.drawOutlinedBox(renderBox, bufferBuilder); - } - - buffer = bufferBuilder.end(); - redBuffer.bind(); - redBuffer.upload(buffer); - VertexBuffer.unbind(); - } - /** * Returns true if AutoFarm is currently harvesting or replanting something. */ diff --git a/src/main/java/net/wurstclient/hacks/autofarm/AutoFarmRenderer.java b/src/main/java/net/wurstclient/hacks/autofarm/AutoFarmRenderer.java new file mode 100644 index 00000000..5915f0fe --- /dev/null +++ b/src/main/java/net/wurstclient/hacks/autofarm/AutoFarmRenderer.java @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2014-2023 Wurst-Imperium and contributors. + * + * 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.hacks.autofarm; + +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Stream; + +import org.joml.Matrix4f; +import org.lwjgl.opengl.GL11; + +import com.mojang.blaze3d.systems.RenderSystem; + +import net.minecraft.client.gl.ShaderProgram; +import net.minecraft.client.gl.VertexBuffer; +import net.minecraft.client.render.BufferBuilder; +import net.minecraft.client.render.BufferBuilder.BuiltBuffer; +import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.VertexFormat; +import net.minecraft.client.render.VertexFormats; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.Vec3d; +import net.wurstclient.util.RenderUtils; + +public final class AutoFarmRenderer +{ + private VertexBuffer greenBuffer; + private VertexBuffer cyanBuffer; + private VertexBuffer redBuffer; + + public void reset() + { + Stream.of(greenBuffer, cyanBuffer, redBuffer).filter(Objects::nonNull) + .forEach(VertexBuffer::close); + greenBuffer = cyanBuffer = redBuffer = null; + } + + public void render(MatrixStack matrixStack) + { + // GL settings + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_DEPTH_TEST); + + matrixStack.push(); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; + RenderUtils.applyRegionalRenderOffset(matrixStack, regionX, regionZ); + + RenderSystem.setShader(GameRenderer::getPositionProgram); + Matrix4f viewMatrix = matrixStack.peek().getPositionMatrix(); + Matrix4f projMatrix = RenderSystem.getProjectionMatrix(); + ShaderProgram shader = RenderSystem.getShader(); + + if(greenBuffer != null) + { + RenderSystem.setShaderColor(0, 1, 0, 0.5F); + greenBuffer.bind(); + greenBuffer.draw(viewMatrix, projMatrix, shader); + VertexBuffer.unbind(); + } + + if(cyanBuffer != null) + { + RenderSystem.setShaderColor(0, 1, 1, 0.5F); + cyanBuffer.bind(); + cyanBuffer.draw(viewMatrix, projMatrix, shader); + VertexBuffer.unbind(); + } + + if(redBuffer != null) + { + RenderSystem.setShaderColor(1, 0, 0, 0.5F); + redBuffer.bind(); + redBuffer.draw(viewMatrix, projMatrix, shader); + VertexBuffer.unbind(); + } + + matrixStack.pop(); + + // GL resets + RenderSystem.setShaderColor(1, 1, 1, 1); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDisable(GL11.GL_BLEND); + } + + public void updateVertexBuffers(List blocksToHarvest, + Set plants, List blocksToReplant) + { + BufferBuilder bufferBuilder = + RenderSystem.renderThreadTesselator().getBuffer(); + + BlockPos camPos = RenderUtils.getCameraBlockPos(); + int regionX = (camPos.getX() >> 9) * 512; + int regionZ = (camPos.getZ() >> 9) * 512; + Vec3d regionOffset = new Vec3d(-regionX, 0, -regionZ); + + double boxMin = 1 / 16.0; + double boxMax = 15 / 16.0; + Box box = new Box(boxMin, boxMin, boxMin, boxMax, boxMax, boxMax); + Box node = new Box(0.25, 0.25, 0.25, 0.75, 0.75, 0.75); + + updateGreenBuffer(blocksToHarvest, bufferBuilder, box, regionOffset); + updateCyanBuffer(plants, bufferBuilder, node, regionOffset); + updateRedBuffer(blocksToReplant, bufferBuilder, box, regionOffset); + } + + private void updateGreenBuffer(List blocksToHarvest, + BufferBuilder bufferBuilder, Box box, Vec3d regionOffset) + { + if(greenBuffer != null) + greenBuffer.close(); + + greenBuffer = new VertexBuffer(); + bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, + VertexFormats.POSITION); + + for(BlockPos pos : blocksToHarvest) + { + Box renderBox = box.offset(pos).offset(regionOffset); + RenderUtils.drawOutlinedBox(renderBox, bufferBuilder); + } + + BuiltBuffer buffer = bufferBuilder.end(); + greenBuffer.bind(); + greenBuffer.upload(buffer); + VertexBuffer.unbind(); + } + + private void updateCyanBuffer(Set plants, + BufferBuilder bufferBuilder, Box node, Vec3d regionOffset) + { + if(cyanBuffer != null) + cyanBuffer.close(); + + cyanBuffer = new VertexBuffer(); + bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, + VertexFormats.POSITION); + + for(BlockPos pos : plants) + { + Box renderNode = node.offset(pos).offset(regionOffset); + RenderUtils.drawNode(renderNode, bufferBuilder); + } + + BuiltBuffer buffer = bufferBuilder.end(); + cyanBuffer.bind(); + cyanBuffer.upload(buffer); + VertexBuffer.unbind(); + } + + private void updateRedBuffer(List blocksToReplant, + BufferBuilder bufferBuilder, Box box, Vec3d regionOffset) + { + if(redBuffer != null) + redBuffer.close(); + + redBuffer = new VertexBuffer(); + bufferBuilder.begin(VertexFormat.DrawMode.DEBUG_LINES, + VertexFormats.POSITION); + + for(BlockPos pos : blocksToReplant) + { + Box renderBox = box.offset(pos).offset(regionOffset); + RenderUtils.drawOutlinedBox(renderBox, bufferBuilder); + } + + BuiltBuffer buffer = bufferBuilder.end(); + redBuffer.bind(); + redBuffer.upload(buffer); + VertexBuffer.unbind(); + } +} From 78ab5bdcbda23c7019c203f8bc4ffb6c0b415c22 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 27 May 2023 10:44:45 +0200 Subject: [PATCH 121/126] Re-order AutoFarm's methods --- .../net/wurstclient/hacks/AutoFarmHack.java | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index fb102e0d..1d255478 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -153,6 +153,39 @@ public final class AutoFarmHack extends Hack blocksToReplant); } + @Override + public void onRender(MatrixStack matrixStack, float partialTicks) + { + renderer.render(matrixStack); + overlay.render(matrixStack, partialTicks, currentBlock); + } + + /** + * Returns true if AutoFarm is currently harvesting or replanting something. + */ + public boolean isBusy() + { + return busy; + } + + private void registerPlants(List blocks) + { + HashMap seeds = new HashMap<>(); + seeds.put(Blocks.WHEAT, Items.WHEAT_SEEDS); + seeds.put(Blocks.CARROTS, Items.CARROT); + seeds.put(Blocks.POTATOES, Items.POTATO); + seeds.put(Blocks.BEETROOTS, Items.BEETROOT_SEEDS); + seeds.put(Blocks.PUMPKIN_STEM, Items.PUMPKIN_SEEDS); + seeds.put(Blocks.MELON_STEM, Items.MELON_SEEDS); + seeds.put(Blocks.NETHER_WART, Items.NETHER_WART); + seeds.put(Blocks.COCOA, Items.COCOA_BEANS); + + plants.putAll(blocks.parallelStream() + .filter(pos -> seeds.containsKey(BlockUtils.getBlock(pos))) + .collect(Collectors.toMap(pos -> pos, + pos -> seeds.get(BlockUtils.getBlock(pos))))); + } + private List getBlocksToHarvest(Vec3d eyesVec, List blocks) { @@ -162,26 +195,6 @@ public final class AutoFarmHack extends Hack .collect(Collectors.toList()); } - private List getBlocksToReplant(Vec3d eyesVec, BlockPos eyesBlock, - double rangeSq, int blockRange) - { - return BlockUtils.getAllInBoxStream(eyesBlock, blockRange) - .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) - .filter( - pos -> BlockUtils.getState(pos).getMaterial().isReplaceable()) - .filter(pos -> plants.containsKey(pos)).filter(this::canBeReplanted) - .sorted(Comparator.comparingDouble( - pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)))) - .collect(Collectors.toList()); - } - - @Override - public void onRender(MatrixStack matrixStack, float partialTicks) - { - renderer.render(matrixStack); - overlay.render(matrixStack, partialTicks, currentBlock); - } - private boolean shouldBeHarvested(BlockPos pos) { Block block = BlockUtils.getBlock(pos); @@ -213,22 +226,17 @@ public final class AutoFarmHack extends Hack return false; } - private void registerPlants(List blocks) + private List getBlocksToReplant(Vec3d eyesVec, BlockPos eyesBlock, + double rangeSq, int blockRange) { - HashMap seeds = new HashMap<>(); - seeds.put(Blocks.WHEAT, Items.WHEAT_SEEDS); - seeds.put(Blocks.CARROTS, Items.CARROT); - seeds.put(Blocks.POTATOES, Items.POTATO); - seeds.put(Blocks.BEETROOTS, Items.BEETROOT_SEEDS); - seeds.put(Blocks.PUMPKIN_STEM, Items.PUMPKIN_SEEDS); - seeds.put(Blocks.MELON_STEM, Items.MELON_SEEDS); - seeds.put(Blocks.NETHER_WART, Items.NETHER_WART); - seeds.put(Blocks.COCOA, Items.COCOA_BEANS); - - plants.putAll(blocks.parallelStream() - .filter(pos -> seeds.containsKey(BlockUtils.getBlock(pos))) - .collect(Collectors.toMap(pos -> pos, - pos -> seeds.get(BlockUtils.getBlock(pos))))); + return BlockUtils.getAllInBoxStream(eyesBlock, blockRange) + .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) + .filter( + pos -> BlockUtils.getState(pos).getMaterial().isReplaceable()) + .filter(pos -> plants.containsKey(pos)).filter(this::canBeReplanted) + .sorted(Comparator.comparingDouble( + pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)))) + .collect(Collectors.toList()); } private boolean canBeReplanted(BlockPos pos) @@ -366,12 +374,4 @@ public final class AutoFarmHack extends Hack else overlay.resetProgress(); } - - /** - * Returns true if AutoFarm is currently harvesting or replanting something. - */ - public boolean isBusy() - { - return busy; - } } From f3eef8cea2c2ed16ff8fc37fb4735cafd63a00ed Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Sat, 27 May 2023 14:26:47 +0200 Subject: [PATCH 122/126] Further clean up AutoFarm --- .../net/wurstclient/hacks/AutoFarmHack.java | 56 +++++++++++-------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index 1d255478..dc21084e 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -55,6 +55,18 @@ public final class AutoFarmHack extends Hack private final CheckboxSetting replant = new CheckboxSetting("Replant", true); + private final HashMap seeds = new HashMap<>(); + { + seeds.put(Blocks.WHEAT, Items.WHEAT_SEEDS); + seeds.put(Blocks.CARROTS, Items.CARROT); + seeds.put(Blocks.POTATOES, Items.POTATO); + seeds.put(Blocks.BEETROOTS, Items.BEETROOT_SEEDS); + seeds.put(Blocks.PUMPKIN_STEM, Items.PUMPKIN_SEEDS); + seeds.put(Blocks.MELON_STEM, Items.MELON_SEEDS); + seeds.put(Blocks.NETHER_WART, Items.NETHER_WART); + seeds.put(Blocks.COCOA, Items.COCOA_BEANS); + } + private final HashMap plants = new HashMap<>(); private final ArrayDeque> prevBlocks = new ArrayDeque<>(); private BlockPos currentBlock; @@ -116,7 +128,7 @@ public final class AutoFarmHack extends Hack .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) .filter(BlockUtils::canBeClicked).collect(Collectors.toList()); - registerPlants(blocks); + updatePlants(blocks); List blocksToHarvest = new ArrayList<>(); List blocksToReplant = new ArrayList<>(); @@ -168,22 +180,16 @@ public final class AutoFarmHack extends Hack return busy; } - private void registerPlants(List blocks) + private void updatePlants(List blocks) { - HashMap seeds = new HashMap<>(); - seeds.put(Blocks.WHEAT, Items.WHEAT_SEEDS); - seeds.put(Blocks.CARROTS, Items.CARROT); - seeds.put(Blocks.POTATOES, Items.POTATO); - seeds.put(Blocks.BEETROOTS, Items.BEETROOT_SEEDS); - seeds.put(Blocks.PUMPKIN_STEM, Items.PUMPKIN_SEEDS); - seeds.put(Blocks.MELON_STEM, Items.MELON_SEEDS); - seeds.put(Blocks.NETHER_WART, Items.NETHER_WART); - seeds.put(Blocks.COCOA, Items.COCOA_BEANS); - - plants.putAll(blocks.parallelStream() - .filter(pos -> seeds.containsKey(BlockUtils.getBlock(pos))) - .collect(Collectors.toMap(pos -> pos, - pos -> seeds.get(BlockUtils.getBlock(pos))))); + for(BlockPos pos : blocks) + { + Item seed = seeds.get(BlockUtils.getBlock(pos)); + if(seed == null) + continue; + + plants.put(pos, seed); + } } private List getBlocksToHarvest(Vec3d eyesVec, @@ -202,26 +208,33 @@ public final class AutoFarmHack extends Hack if(block instanceof CropBlock) return ((CropBlock)block).isMature(state); + + if(block instanceof NetherWartBlock) + return state.get(NetherWartBlock.AGE) >= 3; + + if(block instanceof CocoaBlock) + return state.get(CocoaBlock.AGE) >= 2; + if(block instanceof GourdBlock) return true; + if(block instanceof SugarCaneBlock) return BlockUtils.getBlock(pos.down()) instanceof SugarCaneBlock && !(BlockUtils .getBlock(pos.down(2)) instanceof SugarCaneBlock); + if(block instanceof CactusBlock) return BlockUtils.getBlock(pos.down()) instanceof CactusBlock && !(BlockUtils.getBlock(pos.down(2)) instanceof CactusBlock); + if(block instanceof KelpPlantBlock) return BlockUtils.getBlock(pos.down()) instanceof KelpPlantBlock && !(BlockUtils .getBlock(pos.down(2)) instanceof KelpPlantBlock); - if(block instanceof NetherWartBlock) - return state.get(NetherWartBlock.AGE) >= 3; + if(block instanceof BambooBlock) return BlockUtils.getBlock(pos.down()) instanceof BambooBlock && !(BlockUtils.getBlock(pos.down(2)) instanceof BambooBlock); - if(block instanceof CocoaBlock) - return state.get(CocoaBlock.AGE) >= 2; return false; } @@ -231,8 +244,7 @@ public final class AutoFarmHack extends Hack { return BlockUtils.getAllInBoxStream(eyesBlock, blockRange) .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) - .filter( - pos -> BlockUtils.getState(pos).getMaterial().isReplaceable()) + .filter(pos -> BlockUtils.getState(pos).isReplaceable()) .filter(pos -> plants.containsKey(pos)).filter(this::canBeReplanted) .sorted(Comparator.comparingDouble( pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)))) From 28448c934ffd9cce63881640a446337dada5b518 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 29 May 2023 13:01:30 +0200 Subject: [PATCH 123/126] Add InventoryUtils.indexOf() methods Not currently used anywhere, but useful to have for debugging, as PlayerInventory.indexOf() and PlayerInventory.getSlotWithStack() don't quite do the same thing. --- .../net/wurstclient/util/InventoryUtils.java | 70 +++++++++++++++---- 1 file changed, 58 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/wurstclient/util/InventoryUtils.java b/src/main/java/net/wurstclient/util/InventoryUtils.java index 02a3aad1..de414746 100644 --- a/src/main/java/net/wurstclient/util/InventoryUtils.java +++ b/src/main/java/net/wurstclient/util/InventoryUtils.java @@ -25,6 +25,63 @@ public enum InventoryUtils private static final MinecraftClient MC = WurstClient.MC; private static final IMinecraftClient IMC = WurstClient.IMC; + public static int indexOf(Item item) + { + return indexOf(stack -> stack.isOf(item), 36, false); + } + + public static int indexOf(Item item, int maxInvSlot) + { + return indexOf(stack -> stack.isOf(item), maxInvSlot, false); + } + + public static int indexOf(Item item, int maxInvSlot, boolean includeOffhand) + { + return indexOf(stack -> stack.isOf(item), maxInvSlot, includeOffhand); + } + + public static int indexOf(Predicate predicate) + { + return indexOf(predicate, 36, false); + } + + public static int indexOf(Predicate predicate, int maxInvSlot) + { + return indexOf(predicate, maxInvSlot, false); + } + + /** + * Searches the player's inventory from slot 0 to {@code maxInvSlot-1} for + * the first item that matches the given predicate and returns its slot, or + * -1 if no such item was found. + * + * @param predicate + * checks if an item is the one you want + * @param maxInvSlot + * the maximum slot to search (exclusive), usually 9 for the + * hotbar or 36 for the whole inventory + * @param includeOffhand + * also search the offhand (slot 40), even if maxInvSlot is lower + * @return + * the slot of the item, or -1 if no such item was found + */ + public static int indexOf(Predicate predicate, int maxInvSlot, + boolean includeOffhand) + { + PlayerInventory inventory = MC.player.getInventory(); + + // create a stream of all slots that we want to search + IntStream stream = IntStream.range(0, maxInvSlot); + if(includeOffhand) + stream = IntStream.concat(stream, IntStream.of(40)); + + // find the slot of the item we want + int slot = stream.filter(i -> predicate.test(inventory.getStack(i))) + .findFirst().orElse(-1); + + return slot; + } + public static boolean selectItem(Item item) { return selectItem(stack -> stack.isOf(item), 36, false); @@ -78,18 +135,7 @@ public enum InventoryUtils public static boolean selectItem(Predicate predicate, int maxInvSlot, boolean takeFromOffhand) { - PlayerInventory inventory = MC.player.getInventory(); - - // create a stream of all slots that we want to search - IntStream stream = IntStream.range(0, maxInvSlot); - if(takeFromOffhand) - stream = IntStream.concat(stream, IntStream.of(40)); - - // find the slot of the item we want - int slot = stream.filter(i -> predicate.test(inventory.getStack(i))) - .findFirst().orElse(-1); - - return selectItem(slot); + return selectItem(indexOf(predicate, maxInvSlot, takeFromOffhand)); } /** From 7a8ce6b70f9ff862219b561c240baf01ffeb43c8 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 29 May 2023 13:05:52 +0200 Subject: [PATCH 124/126] Clean up AutoFarm's replanting logic --- .../net/wurstclient/hacks/AutoFarmHack.java | 202 ++++++++---------- 1 file changed, 92 insertions(+), 110 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java index dc21084e..6de6c021 100644 --- a/src/main/java/net/wurstclient/hacks/AutoFarmHack.java +++ b/src/main/java/net/wurstclient/hacks/AutoFarmHack.java @@ -7,21 +7,13 @@ */ package net.wurstclient.hacks; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; import net.minecraft.block.*; -import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.HandSwingC2SPacket; import net.minecraft.registry.tag.BlockTags; @@ -42,6 +34,7 @@ import net.wurstclient.util.BlockBreaker; import net.wurstclient.util.BlockPlacer; import net.wurstclient.util.BlockPlacer.BlockPlacingParams; import net.wurstclient.util.BlockUtils; +import net.wurstclient.util.InventoryUtils; import net.wurstclient.util.OverlayRenderer; import net.wurstclient.util.RotationUtils; @@ -69,7 +62,7 @@ public final class AutoFarmHack extends Hack private final HashMap plants = new HashMap<>(); private final ArrayDeque> prevBlocks = new ArrayDeque<>(); - private BlockPos currentBlock; + private BlockPos currentlyHarvesting; private final AutoFarmRenderer renderer = new AutoFarmRenderer(); private final OverlayRenderer overlay = new OverlayRenderer(); @@ -100,11 +93,11 @@ public final class AutoFarmHack extends Hack EVENTS.remove(UpdateListener.class, this); EVENTS.remove(RenderListener.class, this); - if(currentBlock != null) + if(currentlyHarvesting != null) { IMC.getInteractionManager().setBreakingBlock(true); MC.interactionManager.cancelBlockBreaking(); - currentBlock = null; + currentlyHarvesting = null; } prevBlocks.clear(); @@ -117,50 +110,48 @@ public final class AutoFarmHack extends Hack @Override public void onUpdate() { - currentBlock = null; + currentlyHarvesting = null; Vec3d eyesVec = RotationUtils.getEyesPos().subtract(0.5, 0.5, 0.5); BlockPos eyesBlock = BlockPos.ofFloored(RotationUtils.getEyesPos()); double rangeSq = range.getValueSq(); int blockRange = range.getValueCeil(); - List blocks = BlockUtils + // get nearby, non-empty blocks + ArrayList blocks = BlockUtils .getAllInBoxStream(eyesBlock, blockRange) .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) - .filter(BlockUtils::canBeClicked).collect(Collectors.toList()); + .filter(BlockUtils::canBeClicked) + .collect(Collectors.toCollection(ArrayList::new)); + // check for any new plants and add them to the map updatePlants(blocks); - List blocksToHarvest = new ArrayList<>(); - List blocksToReplant = new ArrayList<>(); + ArrayList blocksToHarvest = new ArrayList<>(); + ArrayList blocksToReplant = new ArrayList<>(); + // don't place or break any blocks while Freecam is enabled if(!WURST.getHax().freecamHack.isEnabled()) { + // check which of the nearby blocks can be harvested blocksToHarvest = getBlocksToHarvest(eyesVec, blocks); + // do a new search to find empty blocks that can be replanted if(replant.isChecked()) blocksToReplant = getBlocksToReplant(eyesVec, eyesBlock, rangeSq, blockRange); } - boolean replanting = false; - while(!blocksToReplant.isEmpty()) - { - BlockPos pos = blocksToReplant.get(0); - Item neededItem = plants.get(pos); - if(tryToReplant(pos, neededItem)) - { - replanting = true; - break; - } - - blocksToReplant.removeIf(p -> plants.get(p) == neededItem); - } + // first, try to replant + boolean replanting = replant(blocksToReplant); + // if we can't replant, harvest instead if(!replanting) harvest(blocksToHarvest); - busy = !blocksToHarvest.isEmpty() || !blocksToReplant.isEmpty(); + // upate busy state + busy = replanting || currentlyHarvesting != null; + // update renderer renderer.updateVertexBuffers(blocksToHarvest, plants.keySet(), blocksToReplant); } @@ -169,7 +160,7 @@ public final class AutoFarmHack extends Hack public void onRender(MatrixStack matrixStack, float partialTicks) { renderer.render(matrixStack); - overlay.render(matrixStack, partialTicks, currentBlock); + overlay.render(matrixStack, partialTicks, currentlyHarvesting); } /** @@ -192,13 +183,13 @@ public final class AutoFarmHack extends Hack } } - private List getBlocksToHarvest(Vec3d eyesVec, - List blocks) + private ArrayList getBlocksToHarvest(Vec3d eyesVec, + ArrayList blocks) { return blocks.parallelStream().filter(this::shouldBeHarvested) .sorted(Comparator.comparingDouble( pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)))) - .collect(Collectors.toList()); + .collect(Collectors.toCollection(ArrayList::new)); } private boolean shouldBeHarvested(BlockPos pos) @@ -239,8 +230,8 @@ public final class AutoFarmHack extends Hack return false; } - private List getBlocksToReplant(Vec3d eyesVec, BlockPos eyesBlock, - double rangeSq, int blockRange) + private ArrayList getBlocksToReplant(Vec3d eyesVec, + BlockPos eyesBlock, double rangeSq, int blockRange) { return BlockUtils.getAllInBoxStream(eyesBlock, blockRange) .filter(pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)) <= rangeSq) @@ -248,7 +239,7 @@ public final class AutoFarmHack extends Hack .filter(pos -> plants.containsKey(pos)).filter(this::canBeReplanted) .sorted(Comparator.comparingDouble( pos -> eyesVec.squaredDistanceTo(Vec3d.of(pos)))) - .collect(Collectors.toList()); + .collect(Collectors.toCollection(ArrayList::new)); } private boolean canBeReplanted(BlockPos pos) @@ -272,81 +263,71 @@ public final class AutoFarmHack extends Hack return false; } - private boolean tryToReplant(BlockPos pos, Item neededItem) + private boolean replant(List blocksToReplant) { - ClientPlayerEntity player = MC.player; - ItemStack heldItem = player.getMainHandStack(); - - if(!heldItem.isEmpty() && heldItem.getItem() == neededItem) - { - placeBlockSimple(pos); - return IMC.getItemUseCooldown() <= 0; - } - - for(int slot = 0; slot < 36; slot++) - { - if(slot == player.getInventory().selectedSlot) - continue; - - ItemStack stack = player.getInventory().getStack(slot); - if(stack.isEmpty() || stack.getItem() != neededItem) - continue; - - if(slot < 9) - player.getInventory().selectedSlot = slot; - else if(player.getInventory().getEmptySlot() < 9) - IMC.getInteractionManager().windowClick_QUICK_MOVE(slot); - else if(player.getInventory().getEmptySlot() != -1) - { - IMC.getInteractionManager().windowClick_QUICK_MOVE( - player.getInventory().selectedSlot + 36); - IMC.getInteractionManager().windowClick_QUICK_MOVE(slot); - }else - { - IMC.getInteractionManager().windowClick_PICKUP( - player.getInventory().selectedSlot + 36); - IMC.getInteractionManager().windowClick_PICKUP(slot); - IMC.getInteractionManager().windowClick_PICKUP( - player.getInventory().selectedSlot + 36); - } - - return true; - } - - return false; - } - - private void placeBlockSimple(BlockPos pos) - { - // should never happen, but just in case - if(!BlockUtils.getState(pos).isReplaceable()) - return; - - BlockPlacingParams params = BlockPlacer.getBlockPlacingParams(pos); - if(params == null || params.distanceSq() > range.getValueSq()) - return; - - // face block - WURST.getRotationFaker().faceVectorPacket(params.hitVec()); - if(RotationUtils.getAngleToLastReportedLookVec(params.hitVec()) > 1) - return; - // check cooldown if(IMC.getItemUseCooldown() > 0) - return; + return false; - Hand hand = Hand.MAIN_HAND; + // check if already holding one of the seeds needed for blocksToReplant + Optional heldSeed = blocksToReplant.stream().map(plants::get) + .distinct().filter(item -> MC.player.isHolding(item)).findFirst(); - // place block - ActionResult result = MC.interactionManager.interactBlock(MC.player, - hand, params.toHitResult()); + // if so, try to replant the blocks that need that seed + if(heldSeed.isPresent()) + { + // get the seed and the hand that is holding it + Item item = heldSeed.get(); + Hand hand = MC.player.getMainHandStack().isOf(item) ? Hand.MAIN_HAND + : Hand.OFF_HAND; + + // filter out blocks that need a different seed + ArrayList blocksToReplantWithHeldSeed = + blocksToReplant.stream().filter(pos -> plants.get(pos) == item) + .collect(Collectors.toCollection(ArrayList::new)); + + for(BlockPos pos : blocksToReplantWithHeldSeed) + { + // skip over blocks that we can't reach + BlockPlacingParams params = + BlockPlacer.getBlockPlacingParams(pos); + if(params == null || params.distanceSq() > range.getValueSq()) + continue; + + // face block + WURST.getRotationFaker().faceVectorPacket(params.hitVec()); + + // place seed + ActionResult result = MC.interactionManager + .interactBlock(MC.player, hand, params.toHitResult()); + + // swing arm + if(result.isAccepted() && result.shouldSwingHand()) + MC.player.networkHandler + .sendPacket(new HandSwingC2SPacket(hand)); + + // reset cooldown + IMC.setItemUseCooldown(4); + return true; + } + } - // swing arm - if(result.isAccepted() && result.shouldSwingHand()) - MC.player.networkHandler.sendPacket(new HandSwingC2SPacket(hand)); + // otherwise, find a block that we can reach and have seeds for + for(BlockPos pos : blocksToReplant) + { + // skip over blocks that we can't reach + BlockPlacingParams params = BlockPlacer.getBlockPlacingParams(pos); + if(params == null || params.distanceSq() > range.getValueSq()) + continue; + + // try to select the seed (returns false if we don't have it) + Item item = plants.get(pos); + if(InventoryUtils.selectItem(item)) + return true; + } - // reset cooldown - IMC.setItemUseCooldown(4); + // if we couldn't replant anything, return false + return false; } private void harvest(List blocksToHarvest) @@ -363,7 +344,7 @@ public final class AutoFarmHack extends Hack prevBlocks.removeFirst(); if(!filteredBlocks.isEmpty()) - currentBlock = filteredBlocks.get(0); + currentlyHarvesting = filteredBlocks.get(0); MC.interactionManager.cancelBlockBreaking(); overlay.resetProgress(); @@ -374,14 +355,15 @@ public final class AutoFarmHack extends Hack for(BlockPos pos : blocksToHarvest) if(BlockBreaker.breakOneBlock(pos)) { - currentBlock = pos; + currentlyHarvesting = pos; break; } - if(currentBlock == null) + if(currentlyHarvesting == null) MC.interactionManager.cancelBlockBreaking(); - if(currentBlock != null && BlockUtils.getHardness(currentBlock) < 1) + if(currentlyHarvesting != null + && BlockUtils.getHardness(currentlyHarvesting) < 1) overlay.updateProgress(); else overlay.resetProgress(); From ae410456c5bcb15b7574243bfb36f43219cdf82f Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 30 May 2023 11:29:19 +0200 Subject: [PATCH 125/126] Change version to 7.35.1 --- gradle.properties | 2 +- src/main/java/net/wurstclient/WurstClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 747a5ca9..b13ad16a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,7 +12,7 @@ loader_version=0.14.19 fabric_version=0.81.1+1.19.4 # Mod Properties -mod_version = v7.35-MC1.19.4 +mod_version = v7.35.1-MC1.19.4 maven_group = net.wurstclient archives_base_name = Wurst-Client diff --git a/src/main/java/net/wurstclient/WurstClient.java b/src/main/java/net/wurstclient/WurstClient.java index fe5abe63..1282fec5 100644 --- a/src/main/java/net/wurstclient/WurstClient.java +++ b/src/main/java/net/wurstclient/WurstClient.java @@ -56,7 +56,7 @@ public enum WurstClient public static MinecraftClient MC; public static IMinecraftClient IMC; - public static final String VERSION = "7.35"; + public static final String VERSION = "7.35.1"; public static final String MC_VERSION = "1.19.4"; private WurstAnalytics analytics; From b0fb08ff710534410d10958c436f523520125517 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Tue, 30 May 2023 11:34:31 +0200 Subject: [PATCH 126/126] Update Fabric stuff --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index b13ad16a..d4abd810 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,10 +6,10 @@ org.gradle.jvmargs=-Xmx1G # https://www.curseforge.com/minecraft/mc-mods/fabric-api minecraft_version=1.19.4 yarn_mappings=1.19.4+build.2 -loader_version=0.14.19 +loader_version=0.14.21 #Fabric api -fabric_version=0.81.1+1.19.4 +fabric_version=0.82.0+1.19.4 # Mod Properties mod_version = v7.35.1-MC1.19.4