Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class SkinCategory {
private boolean isItem;
private List<SkinSet> sets = new ArrayList<>();
private Optional<String> permission = Optional.empty();
private boolean hiddenFromCatalog;

public SkinCategory(String key, ConfigurationSection config) {
this.id = key;
Expand All @@ -24,6 +25,7 @@ public SkinCategory(String key, ConfigurationSection config) {
this.permission = Optional.of(config.getString("permission"));
}
isItem = config.getBoolean("is-item", false);
hiddenFromCatalog = !config.getBoolean("catalog", true);
}

public String getId() {
Expand All @@ -49,6 +51,11 @@ public boolean hasPermission() {
return permission.isPresent();
}

/** catalog: false keeps the category off the website catalog sync, e.g. a hidden class's skins. */
public boolean isHiddenFromCatalog() {
return hiddenFromCatalog;
}

public List<SkinSet> getSets(){
return sets;
}
Expand All @@ -63,5 +70,6 @@ public SkinCategory(SkinCategory another) {
this.item = another.getItem();
this.permission = another.permission;
this.isItem = another.isItem();
this.hiddenFromCatalog = another.hiddenFromCatalog;
}
}
7 changes: 7 additions & 0 deletions src/main/java/net/tfminecraft/armourshop/objects/SkinSet.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public class SkinSet {
private Optional<String> item = Optional.empty();
private boolean addName;
private String permission;
private boolean hiddenFromCatalog;

public SkinSet(String key, ConfigurationSection config) {
this.id = key;
Expand Down Expand Up @@ -59,6 +60,12 @@ public SkinSet(String key, ConfigurationSection config) {
addName = false;
}
permission = config.getString("permission", "none");
hiddenFromCatalog = !config.getBoolean("catalog", true);
}

/** catalog: false keeps the skin off the website catalog sync. */
public boolean isHiddenFromCatalog() {
return hiddenFromCatalog;
}

public boolean hasPermission() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public static String buildPayloadJson() {
sb.append("{\"categories\":[");
boolean firstCat = true;
for (SkinCategory cat : CategoryLoader.get()) {
if (cat == null || cat.getId() == null || cat.getId().isBlank()) {
if (cat == null || cat.getId() == null || cat.getId().isBlank() || cat.isHiddenFromCatalog()) {
continue;
}
if (!firstCat) {
Expand All @@ -50,7 +50,7 @@ public static String buildPayloadJson() {
List<SkinSet> sets = cat.getSets();
if (sets != null) {
for (SkinSet set : sets) {
if (set == null || set.getId() == null || set.getId().isBlank()) {
if (set == null || set.getId() == null || set.getId().isBlank() || set.isHiddenFromCatalog()) {
continue;
}
if (!firstSet) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,14 @@ ItemStack crafted(String metal) {
@Test void copyingPublicCategoriesPreservesTheirLackOfPermission() {
var config = new YamlConfiguration(); config.set("name", "Public"); config.set("item", "v.STONE");
SkinCategory copy = assertDoesNotThrow(() -> new SkinCategory(new SkinCategory("public", config)));
assertFalse(copy.hasPermission()); assertEquals("Public", copy.getName());
assertFalse(copy.hasPermission()); assertEquals("Public", copy.getName()); assertFalse(copy.isHiddenFromCatalog());
assertFalse(new SkinSet("public", config).isHiddenFromCatalog());
}

@Test void catalogFalseHidesCategoriesAndSkinsFromTheCatalog() {
var config = new YamlConfiguration(); config.set("name", "Hidden"); config.set("catalog", false);
assertTrue(new SkinCategory(new SkinCategory("hidden", config)).isHiddenFromCatalog());
assertTrue(new SkinSet("hidden", config).isHiddenFromCatalog());
}

@Test void pieceSuffixesAreIndependentOfServerLocale() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,20 @@ private static PermissionGroupDefinition group(String id, String permission, Str
}
private static JsonObject payload() { return JsonParser.parseString(CatalogSyncService.buildPayloadJson()).getAsJsonObject(); }

@Test void categoriesAndSkinsHiddenFromTheCatalogAreLeftOut() {
var hiddenSkin = skin("secret"); when(hiddenSkin.isHiddenFromCatalog()).thenReturn(true);
var inside = skin("inside");
var shown = skin("shown");
var hiddenCategory = category("hidden", "Hidden", false, List.of(inside));
when(hiddenCategory.isHiddenFromCatalog()).thenReturn(true);
var armor = category("armor", "Armor", false, List.of(shown, hiddenSkin));
categories.when(CategoryLoader::get).thenReturn(List.of(hiddenCategory, armor));
var listed = payload().getAsJsonArray("categories");
assertEquals(1, listed.size());
assertEquals("armor", listed.get(0).getAsJsonObject().get("id").getAsString());
assertEquals(JsonParser.parseString("[\"shown\"]"), listed.get(0).getAsJsonObject().get("skin_sets"));
}

@Test void serializesCategoriesScrollsAndEntitlementsWhileSkippingInvalidRows() {
var rows = Arrays.asList(null, category(null, "invalid", false, null),
category(" ", "invalid", false, null), category("armor", "§aArmor", false, Arrays.asList(null, skin(null), skin(" "), skin("first"), skin("second"))),
Expand Down
Loading