blob: 796c80ee5fa7089f6cb2be87a8ac9a2283174587 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
package de.hysky.skyblocker.skyblock.experiment;
import de.hysky.skyblocker.config.configs.HelperConfig;
import de.hysky.skyblocker.utils.render.gui.ColorHighlight;
import de.hysky.skyblocker.utils.container.AbstractContainerSolver;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.GenericContainerScreen;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack;
import java.util.ArrayList;
import java.util.List;
public final class UltrasequencerSolver extends ExperimentSolver {
public static final UltrasequencerSolver INSTANCE = new UltrasequencerSolver();
private int ultrasequencerNextSlot;
private UltrasequencerSolver() {
super("^Ultrasequencer \\(\\w+\\)$");
}
public int getUltrasequencerNextSlot() {
return ultrasequencerNextSlot;
}
public void setUltrasequencerNextSlot(int ultrasequencerNextSlot) {
this.ultrasequencerNextSlot = ultrasequencerNextSlot;
}
@Override
protected boolean isEnabled(HelperConfig.Experiments experimentsConfig) {
return experimentsConfig.enableUltrasequencerSolver;
}
@Override
protected void tick(Screen screen) {
if (isEnabled() && screen instanceof GenericContainerScreen genericContainerScreen && genericContainerScreen.getTitle().getString().startsWith("Ultrasequencer (")) {
switch (getState()) {
case REMEMBER -> {
Inventory inventory = genericContainerScreen.getScreenHandler().getInventory();
if (inventory.getStack(49).getName().getString().equals("Remember the pattern!")) {
for (int index = 9; index < 45; index++) {
ItemStack itemStack = inventory.getStack(index);
String name = itemStack.getName().getString();
if (name.matches("\\d+")) {
if (name.equals("1")) {
ultrasequencerNextSlot = index;
}
getSlots().put(index, itemStack);
}
}
setState(State.WAIT);
}
}
case WAIT -> {
if (genericContainerScreen.getScreenHandler().getInventory().getStack(49).getName().getString().startsWith("Timer: ")) {
setState(State.SHOW);
AbstractContainerSolver.markHighlightsDirty();
}
}
case END -> {
String name = genericContainerScreen.getScreenHandler().getInventory().getStack(49).getName().getString();
if (!name.startsWith("Timer: ")) {
if (name.equals("Remember the pattern!")) {
getSlots().clear();
setState(State.REMEMBER);
} else {
reset();
}
}
}
}
} else {
reset();
}
}
@Override
public List<ColorHighlight> getColors(Int2ObjectMap<ItemStack> slots) {
return getState() == State.SHOW && ultrasequencerNextSlot != 0 ? List.of(ColorHighlight.green(ultrasequencerNextSlot)) : new ArrayList<>();
}
}
|