Skip to content

Commit eb55fa1

Browse files
Merge pull request #627 from aunncodes/morebugfixes
Lots of bug fixes
2 parents 6c66cec + 730805a commit eb55fa1

7 files changed

Lines changed: 44 additions & 33 deletions

File tree

type.lobby/src/main/java/net/swofty/type/lobby/ServerInfoCache.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class ServerInfoCache {
2121
* Get all servers, using cache if available.
2222
*/
2323
public static CompletableFuture<List<UnderstandableProxyServer>> getServers() {
24-
if (System.currentTimeMillis() - lastCacheTime < CACHE_TTL_MS && !cachedServers.isEmpty()) {
24+
if (!isCacheStale()) {
2525
return CompletableFuture.completedFuture(new ArrayList<>(cachedServers));
2626
}
2727
return refreshCache();

type.lobby/src/main/java/net/swofty/type/lobby/gui/GUILobbySelector.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,10 @@ private void loadLobbies(HypixelPlayer player) {
7878
}
7979

8080
private void populateLobbies(HypixelPlayer player) {
81-
// Clear all slots first
81+
items.clear();
8282
for (int i = 0; i < 18; i++) {
8383
getInventory().setItemStack(i, ItemStack.AIR);
8484
}
85-
items.clear();
8685

8786
UUID currentServer = HypixelConst.getServerUUID();
8887

@@ -106,7 +105,7 @@ public void run(InventoryPreClickEvent e, HypixelPlayer p) {
106105
for (int i = 0; i < lobbies.size() && i < 18; i++) {
107106
UnderstandableProxyServer lobby = lobbies.get(i);
108107
boolean isCurrentServer = lobby.uuid().equals(currentServer);
109-
int lobbyNumber = extractLobbyNumber(lobby.shortName());
108+
int lobbyNumber = i + 1;
110109

111110
set(new GUIClickableItem(i) {
112111
@Override
@@ -121,7 +120,7 @@ public ItemStack.Builder getItem(HypixelPlayer p) {
121120
return ItemStackCreator.getStack(
122121
titleColor + lobbyName + " #" + lobbyNumber,
123122
material,
124-
Math.max(1, lobbyNumber),
123+
lobbyNumber,
125124
"§7Players: " + players + "/" + max,
126125
"",
127126
statusLine

type.lobby/src/main/java/net/swofty/type/lobby/gui/GUIQuestsChallenges.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ public ItemStack.Builder getItem(HypixelPlayer player) {
490490

491491
@Override
492492
public void run(InventoryPreClickEvent e, HypixelPlayer player) {
493-
player.closeInventory();
493+
new GUIMyProfile().open(player);
494494
}
495495
});
496496

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/item/ActionItemRightUse.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,6 @@
1212
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
1313

1414
public class ActionItemRightUse implements HypixelEventClass {
15-
16-
@SneakyThrows
17-
@HypixelEvent(node = EventNodes.PLAYER, requireDataLoaded = true)
18-
public void run(PlayerUseItemOnBlockEvent event) {
19-
ItemStack itemStack = event.getPlayer().getItemInMainHand();
20-
SkyBlockItem item = new SkyBlockItem(itemStack);
21-
SkyBlockPlayer player = (SkyBlockPlayer) event.getPlayer();
22-
23-
if (item.hasComponent(InteractableComponent.class)) {
24-
InteractableComponent interactableComponent = item.getComponent(InteractableComponent.class);
25-
interactableComponent.onRightClick(player, item);
26-
}
27-
}
28-
2915
@SneakyThrows
3016
@HypixelEvent(node = EventNodes.PLAYER, requireDataLoaded = true)
3117
public void run(PlayerUseItemEvent event) {

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/gui/inventories/sbmenu/GUICrafting.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,24 @@ public class GUICrafting extends HypixelInventoryGUI implements RefreshingGUI {
3232
private static final ItemStack.Builder RECIPE_REQUIRED = ItemStackCreator.getStack("§cRecipe Required", Material.BARRIER, 1, "§7Add the items for a valid", "§7recipe in the crafting grid", "§7to the left!");
3333
private static final int[] CRAFT_SLOTS = new int[]{10, 11, 12, 19, 20, 21, 28, 29, 30};
3434
private static final int RESULT_SLOT = 23;
35+
private int lastGridHash = 0;
36+
private SkyBlockRecipe<?> lastParsedRecipe = null;
3537

3638
public GUICrafting() {
3739
super("Craft Item", InventoryType.CHEST_6_ROW);
3840
}
3941

42+
private int computeGridHash(Inventory inv) { // TODO: Account for metadata
43+
int h = 1;
44+
for (int slot : CRAFT_SLOTS) {
45+
ItemStack it = inv.getItemStack(slot);
46+
h = 31 * h + it.material().id();
47+
h = 31 * h + it.amount();
48+
}
49+
return h;
50+
}
51+
52+
4053
@Override
4154
public void onOpen(InventoryGUIOpenEvent e) {
4255
fill(ItemStackCreator.createNamedItemStack(Material.BLACK_STAINED_GLASS_PANE), 13, 34);
@@ -76,7 +89,16 @@ public void onBottomClick(InventoryPreClickEvent e) {
7689
@Override
7790
public void refreshItems(HypixelPlayer player) {
7891
Inventory inventory = getInventory();
79-
SkyBlockRecipe<?> recipe = SkyBlockRecipe.parseRecipe(getCurrentRecipe(inventory));
92+
int gridHash = computeGridHash(inventory);
93+
SkyBlockRecipe<?> recipe;
94+
95+
if (gridHash == lastGridHash) {
96+
recipe = lastParsedRecipe;
97+
} else {
98+
lastGridHash = gridHash;
99+
recipe = SkyBlockRecipe.parseRecipe(getCurrentRecipe(inventory));
100+
lastParsedRecipe = recipe;
101+
}
80102

81103
fill(ItemStackCreator.createNamedItemStack(Material.BLACK_STAINED_GLASS_PANE), 13, 34);
82104
border(ItemStackCreator.createNamedItemStack(Material.RED_STAINED_GLASS_PANE));

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/item/handlers/ability/abilities/BuildersWandAbility.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515

1616
public class BuildersWandAbility extends RegisteredAbility {
1717

18-
@SuppressWarnings("preview")
1918
public BuildersWandAbility() {
2019
super("GRAND_ARCHITECT", "Grand Architect",
2120
"Right-click the face of a block to extend all connected block faces.",

velocity.extension/src/main/java/net/swofty/velocity/gamemanager/GameManager.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -125,19 +125,24 @@ FromProxyChannels.PING_SERVER, new JSONObject()
125125
}
126126

127127
private static int getNextAvailableDisplayName() {
128-
if (servers.isEmpty()) return 1;
129-
if (servers.values().stream().allMatch(ArrayList::isEmpty)) return 1;
130-
131-
List<GameServer> gameServers = new ArrayList<>();
132-
servers.values().forEach(gameServers::addAll);
133-
134-
int highestDisplayName = (gameServers.stream().mapToInt(server -> {
135-
String displayName = server.displayName().replaceAll("[^0-9]", "");
136-
return Integer.parseInt(displayName);
137-
}).max().getAsInt());
138-
return highestDisplayName + 1;
128+
Set<Integer> used = new HashSet<>();
129+
for (ArrayList<GameServer> list : servers.values()) {
130+
for (GameServer gs : list) {
131+
String digits = gs.displayName().replaceAll("[^0-9]", "");
132+
if (!digits.isEmpty()) {
133+
try {
134+
int n = Integer.parseInt(digits);
135+
if (n > 0) used.add(n);
136+
} catch (NumberFormatException ignored) {}
137+
}
138+
}
139+
}
140+
int candidate = 1;
141+
while (used.contains(candidate)) candidate++;
142+
return candidate;
139143
}
140144

145+
141146
private static int getNextAvailablePort() {
142147
if (servers.isEmpty()) return 20000;
143148
if (servers.values().stream().allMatch(ArrayList::isEmpty)) return 20000;

0 commit comments

Comments
 (0)