Skip to content

Commit abf1338

Browse files
committed
fix(1.8): map modern icon materials to legacy substitutes instead of STONE
1 parent 0e33d63 commit abf1338

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

src/main/java/io/ncbpfluffybear/fluffymachines/utils/MaterialCompat.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,46 @@ private MaterialCompat() {}
1818
@Nonnull
1919
public static Material safe(@Nonnull XMaterial material) {
2020
Material resolved = material.parseMaterial();
21+
if (resolved == null) {
22+
resolved = substitute(material);
23+
}
2124
return resolved != null ? resolved : Material.STONE;
2225
}
26+
27+
// Sensible legacy substitutes for materials that don't exist on older servers (e.g. on 1.8),
28+
// so an icon resolves to something recognisable instead of STONE.
29+
private static final java.util.Map<XMaterial, XMaterial> LEGACY_SUBSTITUTES = buildLegacySubstitutes();
30+
31+
private static java.util.Map<XMaterial, XMaterial> buildLegacySubstitutes() {
32+
java.util.Map<XMaterial, XMaterial> m = new java.util.EnumMap<>(XMaterial.class);
33+
m.put(XMaterial.NETHERITE_BLOCK, XMaterial.DIAMOND_BLOCK);
34+
m.put(XMaterial.NETHERITE_INGOT, XMaterial.DIAMOND);
35+
m.put(XMaterial.NETHERITE_SCRAP, XMaterial.IRON_NUGGET);
36+
m.put(XMaterial.ANCIENT_DEBRIS, XMaterial.NETHERRACK);
37+
m.put(XMaterial.BEEHIVE, XMaterial.DISPENSER);
38+
m.put(XMaterial.BEE_NEST, XMaterial.DISPENSER);
39+
m.put(XMaterial.HONEY_BLOCK, XMaterial.SLIME_BLOCK);
40+
m.put(XMaterial.BARREL, XMaterial.CHEST);
41+
m.put(XMaterial.BLAST_FURNACE, XMaterial.FURNACE);
42+
m.put(XMaterial.SMOKER, XMaterial.FURNACE);
43+
m.put(XMaterial.CAMPFIRE, XMaterial.NETHERRACK);
44+
m.put(XMaterial.SMITHING_TABLE, XMaterial.CRAFTING_TABLE);
45+
m.put(XMaterial.CARTOGRAPHY_TABLE, XMaterial.CRAFTING_TABLE);
46+
m.put(XMaterial.FLETCHING_TABLE, XMaterial.CRAFTING_TABLE);
47+
m.put(XMaterial.LOOM, XMaterial.CRAFTING_TABLE);
48+
m.put(XMaterial.STONECUTTER, XMaterial.CRAFTING_TABLE);
49+
m.put(XMaterial.GRINDSTONE, XMaterial.ANVIL);
50+
m.put(XMaterial.LANTERN, XMaterial.GLOWSTONE);
51+
m.put(XMaterial.COMPOSTER, XMaterial.CHEST);
52+
m.put(XMaterial.MAGMA_BLOCK, XMaterial.NETHERRACK);
53+
m.put(XMaterial.LODESTONE, XMaterial.IRON_BLOCK);
54+
m.put(XMaterial.BLACKSTONE, XMaterial.COBBLESTONE);
55+
m.put(XMaterial.OBSERVER, XMaterial.PISTON);
56+
return m;
57+
}
58+
59+
private static Material substitute(XMaterial xMaterial) {
60+
XMaterial sub = LEGACY_SUBSTITUTES.get(xMaterial);
61+
return sub != null ? sub.parseMaterial() : null;
62+
}
2363
}

0 commit comments

Comments
 (0)