Restore ClickPlan double-simulation

This is used in some autocrafting situations. Oops.
This commit is contained in:
Camotoy 2022-02-08 23:15:41 -05:00
parent 0eed6025a6
commit 0479af7cd3
No known key found for this signature in database
GPG key ID: 7EEFB66FE798081F

View file

@ -75,6 +75,11 @@ public final class ClickPlan {
gridSize = translator.getGridSize();
}
private void resetSimulation() {
this.simulatedItems.clear();
this.simulatedCursor = session.getPlayerInventory().getCursor().copy();
}
public void add(Click click, int slot) {
add(click, slot, false);
}
@ -89,10 +94,14 @@ public final class ClickPlan {
ClickAction action = new ClickAction(click, slot, force);
plan.add(action);
// RUNNING THE SIMULATION HERE IS IMPORTANT. The contents of the simulation are used in complex, multi-stage tasks
// such as autocrafting.
simulateAction(action);
}
public void execute(boolean refresh) {
//update geyser inventory after simulation to avoid net id desync
resetSimulation();
ListIterator<ClickAction> planIter = plan.listIterator();
while (planIter.hasNext()) {
ClickAction action = planIter.next();
@ -190,7 +199,9 @@ public final class ClickPlan {
* Does not need to be called for the cursor
*/
private void onSlotItemChange(int slot, GeyserItemStack itemStack) {
changedItems.put(slot, itemStack.getItemStack());
if (changedItems != null) {
changedItems.put(slot, itemStack.getItemStack());
}
}
private void simulateAction(ClickAction action) {