Skip to content

Commit 21711c7

Browse files
feat: added armor displays in the museum
Took 59 minutes
1 parent 31910a4 commit 21711c7

17 files changed

Lines changed: 660 additions & 231 deletions

configuration/items/armor/mineroutfit.yml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
items:
2-
- id: MINER_OUTFIT_BOOTS
2+
- id: MINERS_OUTFIT_BOOTS
33
rarity: COMMON
44
default_statistics:
55
defense: 15.0
@@ -14,7 +14,10 @@ items:
1414
b: '100'
1515
- id: SELLABLE
1616
value: 320.0
17-
- id: MINER_OUTFIT_CHESTPLATE
17+
- id: TRACKED_UNIQUE
18+
- id: MUSEUM
19+
museum_category: ARMOR_SETS
20+
- id: MINERS_OUTFIT_CHESTPLATE
1821
rarity: COMMON
1922
default_statistics:
2023
defense: 40.0
@@ -29,7 +32,10 @@ items:
2932
b: '100'
3033
- id: SELLABLE
3134
value: 640.0
32-
- id: MINER_OUTFIT_HELMET
35+
- id: TRACKED_UNIQUE
36+
- id: MUSEUM
37+
museum_category: ARMOR_SETS
38+
- id: MINERS_OUTFIT_HELMET
3339
rarity: COMMON
3440
default_statistics:
3541
defense: 15.0
@@ -44,7 +50,10 @@ items:
4450
b: '100'
4551
- id: SELLABLE
4652
value: 400.0
47-
- id: MINER_OUTFIT_LEGGINGS
53+
- id: TRACKED_UNIQUE
54+
- id: MUSEUM
55+
museum_category: ARMOR_SETS
56+
- id: MINERS_OUTFIT_LEGGINGS
4857
rarity: COMMON
4958
default_statistics:
5059
defense: 30.0
@@ -59,3 +68,6 @@ items:
5968
b: '100'
6069
- id: SELLABLE
6170
value: 560.0
71+
- id: TRACKED_UNIQUE
72+
- id: MUSEUM
73+
museum_category: ARMOR_SETS

type.generic/src/main/java/net/swofty/types/generic/SkyBlockGenericLoader.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -516,18 +516,6 @@ public void initialize(MinecraftServer server) {
516516
MuseumableItemCategory.addItem(museumComponent.getCategory(), itemType);
517517
}
518518
});
519-
Arrays.stream(ArmorSetRegistry.values()).forEach(armorSet -> {
520-
try {
521-
if (armorSet.getClazz().newInstance() instanceof MuseumableSet) {
522-
MuseumableItemCategory.addItem(MuseumableItemCategory.ARMOR_SETS, armorSet.getHelmet());
523-
MuseumableItemCategory.addItem(MuseumableItemCategory.ARMOR_SETS, armorSet.getChestplate());
524-
MuseumableItemCategory.addItem(MuseumableItemCategory.ARMOR_SETS, armorSet.getLeggings());
525-
MuseumableItemCategory.addItem(MuseumableItemCategory.ARMOR_SETS, armorSet.getBoots());
526-
}
527-
} catch (InstantiationException | IllegalAccessException e) {
528-
throw new RuntimeException(e);
529-
}
530-
});
531519

532520
/**
533521
* Handle ConnectionManager

type.generic/src/main/java/net/swofty/types/generic/data/DataHandler.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,10 @@ public enum Data {
364364
MUSEUM_DATA("museum_data", false, false, false, DatapointMuseum.class, new DatapointMuseum("museum_data"), (player, datapoint) -> {
365365
}, (player, datapoint) -> {
366366
DatapointMuseum.MuseumData data = (DatapointMuseum.MuseumData) datapoint.getValue();
367-
data.setCurrentlyViewing(Map.entry(player.getUuid(), player.getProfiles().getCurrentlySelected()));
367+
data.setCurrentlyViewing(new DatapointMuseum.ViewingInfo(
368+
player.getUuid(),
369+
player.getProfiles().getCurrentlySelected()
370+
));
368371
}),
369372
SKIN_SIGNATURE("skin_signature", false, false, false, DatapointString.class, new DatapointString("skin_signature", "null"), (player, datapoint) -> {
370373
}, (player, datapoint) -> {

type.generic/src/main/java/net/swofty/types/generic/data/datapoints/DatapointMuseum.java

Lines changed: 235 additions & 69 deletions
Large diffs are not rendered by default.

type.generic/src/main/java/net/swofty/types/generic/gui/inventory/SkyBlockInventoryGUI.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,10 @@ public void open(SkyBlockPlayer player) {
332332
afterOpen(openEvent);
333333
}
334334

335+
protected void setTitle(String title) {
336+
inventory.setTitle(Component.text(title));
337+
}
338+
335339
/**
336340
* Method to allow people to hotkey items into the GUI or not
337341
*

type.generic/src/main/java/net/swofty/types/generic/gui/inventory/inventories/museum/GUIMuseumArmorCategory.java

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,7 @@ public void onBottomClick(InventoryPreClickEvent e) {
4848
e.setCancelled(true);
4949

5050
ItemStack item = e.getClickedItem();
51-
5251
SkyBlockItem skyBlockItem = new SkyBlockItem(item);
53-
UnderstandableSkyBlockItem serializableItem = skyBlockItem.toUnderstandable();
54-
String serialized = serializableItem.toString();
5552

5653
if (skyBlockItem.getAttributeHandler().getPotentialType() == null) {
5754
return;
@@ -60,7 +57,7 @@ public void onBottomClick(InventoryPreClickEvent e) {
6057
SkyBlockPlayer player = (SkyBlockPlayer) e.getPlayer();
6158
DatapointMuseum.MuseumData data = player.getMuseumData();
6259

63-
if (data.getTypeInMuseum(skyBlockItem.getAttributeHandler().getPotentialType()) != null) {
60+
if (data.getItemInMuseum(skyBlockItem.getAttributeHandler().getPotentialType()) != null) {
6461
player.sendMessage("§cYou already have a " + skyBlockItem.getAttributeHandler().getPotentialType().getDisplayName() + " in your Museum!");
6562
return;
6663
}
@@ -70,10 +67,10 @@ public void onBottomClick(InventoryPreClickEvent e) {
7067
if (armorSetRegistry == null)
7168
return;
7269

73-
boolean hasTakenItOut = data.getTypePreviouslyInMuseum(skyBlockItem.getAttributeHandler().getPotentialType()) != null;
70+
boolean hasTakenItOut = data.getItemPreviouslyInMuseum(skyBlockItem.getAttributeHandler().getPotentialType()) != null;
7471
if (hasTakenItOut) {
7572
UUID uuidOfAlreadyInMuseum = UUID.fromString(
76-
data.getTypePreviouslyInMuseum(skyBlockItem.getAttributeHandler().getPotentialType())
73+
data.getItemPreviouslyInMuseum(skyBlockItem.getAttributeHandler().getPotentialType())
7774
.getAttributeHandler().getUniqueTrackedID());
7875
UUID uuidOfNew = UUID.fromString(skyBlockItem.getAttributeHandler().getUniqueTrackedID());
7976

@@ -109,7 +106,7 @@ public void onBottomClick(InventoryPreClickEvent e) {
109106
// Make sure that the item is the same as the one that was taken out
110107
UUID uuidOfPotentialItem = UUID.fromString(potentialItem.getAttributeHandler().getUniqueTrackedID());
111108
UUID uuidOfAlreadyInMuseum = UUID.fromString(
112-
data.getTypePreviouslyInMuseum(potentialItem.getAttributeHandler().getPotentialType())
109+
data.getItemPreviouslyInMuseum(potentialItem.getAttributeHandler().getPotentialType())
113110
.getAttributeHandler().getUniqueTrackedID());
114111

115112
if (uuidOfPotentialItem.equals(uuidOfAlreadyInMuseum)) {
@@ -206,7 +203,9 @@ public void performSearch(SkyBlockPlayer player, String query, int page, int max
206203
TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage message = new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(
207204
UUID.fromString(item.getAttributeHandler().getUniqueTrackedID())
208205
);
209-
TrackedItem trackedItem = (TrackedItem) new ProxyService(ServiceType.ITEM_TRACKER).handleRequest(message).join();
206+
ProxyService proxyService = new ProxyService(ServiceType.ITEM_TRACKER);
207+
TrackedItemRetrieveProtocolObject.TrackedItemResponse trackedItemResponse = (TrackedItemRetrieveProtocolObject.TrackedItemResponse) proxyService.handleRequest(message).join();
208+
TrackedItem trackedItem = trackedItemResponse.trackedItem();
210209

211210
ItemStack.Builder toReturn = item.getItemStackBuilder();
212211
toReturn.set(ItemComponent.CUSTOM_DATA, item.getItemStack().get(ItemComponent.CUSTOM_DATA));
@@ -260,9 +259,7 @@ public void run(InventoryPreClickEvent e, SkyBlockPlayer player) {
260259

261260
List<SkyBlockItem> set = List.of(helmet, chestplate, leggings, boots);
262261
set.forEach(item -> {
263-
data.getPreviouslyInMuseum().add(item);
264-
data.getCurrentlyInMuseum().remove(item);
265-
data.getMuseumDisplay().remove(UUID.fromString(item.getAttributeHandler().getUniqueTrackedID()));
262+
data.moveToRetrieved(item);
266263
player.addAndUpdateItem(item);
267264
});
268265

@@ -284,17 +281,20 @@ public ItemStack.Builder getItem(SkyBlockPlayer player) {
284281
"§7Museum");
285282
}
286283

287-
288284
ProxyService itemTracker = new ProxyService(ServiceType.ITEM_TRACKER);
289285
UUID helmetUUID = UUID.fromString(helmet.getAttributeHandler().getUniqueTrackedID());
290286
UUID chestplateUUID = UUID.fromString(chestplate.getAttributeHandler().getUniqueTrackedID());
291287
UUID leggingsUUID = UUID.fromString(leggings.getAttributeHandler().getUniqueTrackedID());
292288
UUID bootsUUID = UUID.fromString(boots.getAttributeHandler().getUniqueTrackedID());
293289

294-
TrackedItem trackedHelmet = (TrackedItem) itemTracker.handleRequest(new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(helmetUUID)).join();
295-
TrackedItem trackedChestplate = (TrackedItem) itemTracker.handleRequest(new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(chestplateUUID)).join();
296-
TrackedItem trackedLeggings = (TrackedItem) itemTracker.handleRequest(new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(leggingsUUID)).join();
297-
TrackedItem trackedBoots = (TrackedItem) itemTracker.handleRequest(new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(bootsUUID)).join();
290+
TrackedItemRetrieveProtocolObject.TrackedItemResponse helmetResponse = (TrackedItemRetrieveProtocolObject.TrackedItemResponse) itemTracker.handleRequest(new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(helmetUUID)).join();
291+
TrackedItem trackedHelmet = helmetResponse.trackedItem();
292+
TrackedItemRetrieveProtocolObject.TrackedItemResponse chestplateResponse = (TrackedItemRetrieveProtocolObject.TrackedItemResponse) itemTracker.handleRequest(new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(chestplateUUID)).join();
293+
TrackedItem trackedChestplate = chestplateResponse.trackedItem();
294+
TrackedItemRetrieveProtocolObject.TrackedItemResponse leggingsResponse = (TrackedItemRetrieveProtocolObject.TrackedItemResponse) itemTracker.handleRequest(new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(leggingsUUID)).join();
295+
TrackedItem trackedLeggings = leggingsResponse.trackedItem();
296+
TrackedItemRetrieveProtocolObject.TrackedItemResponse bootsResponse = (TrackedItemRetrieveProtocolObject.TrackedItemResponse) itemTracker.handleRequest(new TrackedItemRetrieveProtocolObject.TrackedItemRetrieveMessage(bootsUUID)).join();
297+
TrackedItem trackedBoots = bootsResponse.trackedItem();
298298

299299
int helmetValue = new ItemPriceCalculator(helmet).calculateCleanPrice().intValue();
300300
int chestplateValue = new ItemPriceCalculator(chestplate).calculateCleanPrice().intValue();
@@ -357,4 +357,4 @@ public void onClose(InventoryCloseEvent e, CloseReason reason) {
357357
player, DataHandler.Data.INVENTORY.onQuit.apply(player)
358358
);
359359
}
360-
}
360+
}

type.generic/src/main/java/net/swofty/types/generic/gui/inventory/inventories/museum/GUIMuseumCategory.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ public void onBottomClick(InventoryPreClickEvent e) {
5858
SkyBlockPlayer player = (SkyBlockPlayer) e.getPlayer();
5959
DatapointMuseum.MuseumData data = player.getMuseumData();
6060

61-
if (data.getTypeInMuseum(skyBlockItem.getAttributeHandler().getPotentialType()) != null) {
61+
if (data.getItemInMuseum(skyBlockItem.getAttributeHandler().getPotentialType()) != null) {
6262
player.sendMessage("§cYou already have a " + skyBlockItem.getDisplayName() + " §cin your Museum!");
6363
return;
6464
}
6565

66-
if (data.getTypePreviouslyInMuseum(skyBlockItem.getAttributeHandler().getPotentialType()) != null) {
66+
if (data.getItemPreviouslyInMuseum(skyBlockItem.getAttributeHandler().getPotentialType()) != null) {
6767
UUID trackedItemUUID = UUID.fromString(skyBlockItem.getAttributeHandler().getUniqueTrackedID());
6868
UUID previouslyInMuseumUUID = UUID.fromString(
69-
data.getTypePreviouslyInMuseum(skyBlockItem.getAttributeHandler().getPotentialType())
69+
data.getItemPreviouslyInMuseum(skyBlockItem.getAttributeHandler().getPotentialType())
7070
.getAttributeHandler().getUniqueTrackedID()
7171
);
7272

@@ -175,9 +175,7 @@ public void run(InventoryPreClickEvent e, SkyBlockPlayer player) {
175175
player.sendMessage("§aYou retrieved your " + item.getDisplayName() + " from the Museum. It still counts towards your Museum progress, but not towards your total item value.");
176176
player.sendMessage("§aYou can return or replace the item in your Museum at any time!");
177177

178-
data.getPreviouslyInMuseum().add(skyBlockItem);
179-
data.getCurrentlyInMuseum().remove(skyBlockItem);
180-
data.getMuseumDisplay().remove(UUID.fromString(skyBlockItem.getAttributeHandler().getUniqueTrackedID()));
178+
data.moveToRetrieved(skyBlockItem);
181179
player.setMuseumData(data);
182180
MuseumDisplays.updateDisplay(player);
183181

@@ -221,10 +219,9 @@ public ItemStack.Builder getItem(SkyBlockPlayer player) {
221219
}
222220
lore.add(" ");
223221
lore.add("§7Display Slot");
224-
if (data.getCurrentlyInMuseum().contains(skyBlockItem)
225-
&& data.getMuseumDisplay().get(trackedItemUUID) != null) {
226-
lore.add("§9" + data.getMuseumDisplay().get(trackedItemUUID).getKey()
227-
+ " Slot #" + (data.getMuseumDisplay().get(trackedItemUUID).getValue() + 1));
222+
DatapointMuseum.DisplayPlacement placement = data.getDisplayHandler().getItemDisplayPlacement(skyBlockItem);
223+
if (data.getCurrentlyInMuseum().contains(skyBlockItem) && placement != null) {
224+
lore.add("§9" + placement.display() + " Slot #" + (placement.slot() + 1));
228225
} else {
229226
lore.add("§cNot In Display");
230227
}
@@ -239,7 +236,7 @@ public ItemStack.Builder getItem(SkyBlockPlayer player) {
239236
}
240237

241238
return ItemStackCreator.getStack("§a" + item.getDisplayName(),
242-
hasTakenItOut ? Material.LIME_DYE : item.material, 1, lore);
239+
hasTakenItOut ? Material.LIME_DYE : item.material, 1, lore);
243240
}
244241
};
245242
}
@@ -252,4 +249,4 @@ public void onClose(InventoryCloseEvent e, CloseReason reason) {
252249
player, DataHandler.Data.INVENTORY.onQuit.apply(player)
253250
);
254251
}
255-
}
252+
}

0 commit comments

Comments
 (0)