diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java index aabafb6beb..e55326542b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Trajectories.java @@ -46,6 +46,14 @@ public class Trajectories extends Module { .build() ); + private final Setting preRender = sgGeneral.add(new BoolSetting.Builder() // Render the trajectory + // beforehand + .name("Pre-render") + .description("Calculates and renders trajectories for Bow and Crossbow even before charging them") + .defaultValue(false) + .build() + ); + private final Setting otherPlayers = sgGeneral.add(new BoolSetting.Builder() .name("other-players") .description("Calculates trajectories for other players.") @@ -147,14 +155,15 @@ private void calculatePath(PlayerEntity player, double tickDelta) { } // Calculate paths - if (!simulator.set(player, itemStack, 0, accurate.get(), tickDelta)) return; + //Added one more parameter to the set method + if (!simulator.set(player, itemStack, preRender.get(), 0, accurate.get(), tickDelta)) return; getEmptyPath().calculate(); if (itemStack.getItem() instanceof CrossbowItem && Utils.hasEnchantment(itemStack, Enchantments.MULTISHOT)) { - if (!simulator.set(player, itemStack, MULTISHOT_OFFSET, accurate.get(), tickDelta)) return; // left multishot arrow + if (!simulator.set(player, itemStack, preRender.get(), MULTISHOT_OFFSET, accurate.get(), tickDelta)) return; // left multishot arrow getEmptyPath().calculate(); - if (!simulator.set(player, itemStack, -MULTISHOT_OFFSET, accurate.get(), tickDelta)) return; // right multishot arrow + if (!simulator.set(player, itemStack, preRender.get(), -MULTISHOT_OFFSET, accurate.get(), tickDelta)) return; // right multishot arrow getEmptyPath().calculate(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/utils/entity/ProjectileEntitySimulator.java b/src/main/java/meteordevelopment/meteorclient/utils/entity/ProjectileEntitySimulator.java index c0346a4ab4..1c31f76c2c 100644 --- a/src/main/java/meteordevelopment/meteorclient/utils/entity/ProjectileEntitySimulator.java +++ b/src/main/java/meteordevelopment/meteorclient/utils/entity/ProjectileEntitySimulator.java @@ -40,12 +40,15 @@ public class ProjectileEntitySimulator { // held items - public boolean set(Entity user, ItemStack itemStack, double simulated, boolean accurate, double tickDelta) { + public boolean set(Entity user, ItemStack itemStack, boolean prerender, double simulated, boolean accurate, double tickDelta) { Item item = itemStack.getItem(); if (item instanceof BowItem) { double charge = BowItem.getPullProgress(mc.player.getItemUseTime()); - if (charge <= 0) return false; + if (charge <= 0 && !prerender) + return false; + else if (charge == 0 && prerender) + charge = 1; // render fully charged bow set(user, 0, charge * 3, simulated, 0.05000000074505806, 0.6, accurate, tickDelta); }