Skip to content

Commit

Permalink
Fixed not getting minecraft names correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
OmerBenGera committed Sep 30, 2023
1 parent 0a81f81 commit 90c2255
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 23 deletions.
Expand Up @@ -291,7 +291,7 @@ private static TemplateItem getItemStackUnsafe(String fileName, ConfigurationSec
try {
String materialType = section.getString("type");
materialType = MinecraftNamesMapper.getMinecraftName(materialType)
.flatMap(minecraftKey -> NAMES_MAPPER.get().getMappedName(Material.class, minecraftKey))
.map(minecraftKey -> NAMES_MAPPER.get().getMappedName(Material.class, minecraftKey).orElse(minecraftKey))
.orElse(materialType);
if (materialType.contains(":")) {
String[] materialSections = materialType.toUpperCase(Locale.ENGLISH).split(":");
Expand Down Expand Up @@ -410,15 +410,18 @@ public List<Integer> parseButtonSlots(ConfigurationSection section, String key,
}

private static <E extends Enum<E>> E getMinecraftEnum(Class<E> type, String name) throws IllegalArgumentException {
return MinecraftNamesMapper.getMinecraftName(name)
.flatMap(minecraftKey -> NAMES_MAPPER.get().mapName(type, minecraftKey))
.orElseGet(() -> Enum.valueOf(type, name.toUpperCase(Locale.ENGLISH)));
String mappedName = MinecraftNamesMapper.getMinecraftName(name)
.map(minecraftKey -> NAMES_MAPPER.get().getMappedName(type, minecraftKey).orElse(minecraftKey))
.orElse(name);

return Enum.valueOf(type, mappedName.toUpperCase(Locale.ENGLISH));
}

private static <T> T getMinecraftEnum(Class<T> type, String name, Function<String, T> enumCreator) throws IllegalArgumentException {
String mappedName = MinecraftNamesMapper.getMinecraftName(name)
.flatMap(minecraftKey -> NAMES_MAPPER.get().getMappedName(type, minecraftKey))
.map(minecraftKey -> NAMES_MAPPER.get().getMappedName(type, minecraftKey).orElse(minecraftKey))
.orElse(name);

return Optional.ofNullable(enumCreator.apply(mappedName.toUpperCase(Locale.ENGLISH)))
.orElseThrow(() -> new IllegalArgumentException("No enum constant " + type.getCanonicalName() + "." + name));
}
Expand Down
Expand Up @@ -36,24 +36,6 @@ public MinecraftNamesMapper() {
this.enumNamesMapping = fetchEnumNamesMapping();
}

public <E extends Enum<E>> Optional<E> mapName(Class<E> expectedEnumClass, String name) {
return Optional.ofNullable(getMappedName(expectedEnumClass, name)
.map(mappedName -> {
try {
return Enum.valueOf(expectedEnumClass, mappedName.toUpperCase(Locale.ENGLISH));
} catch (IllegalArgumentException error) {
return null;
}
})
.orElseGet(() -> {
try {
return Enum.valueOf(expectedEnumClass, name.toUpperCase(Locale.ENGLISH));
} catch (IllegalArgumentException error) {
return null;
}
}));
}

public Optional<String> getMappedName(Class<?> expectedEnumClass, String name) {
return Optional.ofNullable(enumNamesMapping.get(expectedEnumClass))
.map(mappings -> mappings.get(name));
Expand Down

0 comments on commit 90c2255

Please sign in to comment.