Skip to content

Commit

Permalink
Pre Renders Bow #4765
Browse files Browse the repository at this point in the history
  • Loading branch information
AnandBhasme committed Jul 24, 2024
1 parent 271a0e5 commit 89b58fd
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ public class Trajectories extends Module {
.build()
);

private final Setting<Boolean> 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<Boolean> otherPlayers = sgGeneral.add(new BoolSetting.Builder()
.name("other-players")
.description("Calculates trajectories for other players.")
Expand Down Expand Up @@ -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();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down

0 comments on commit 89b58fd

Please sign in to comment.