mirror of
https://github.com/BlueMap-Minecraft/BlueMap.git
synced 2024-11-25 03:55:26 +01:00
Make TextureVariable references align with game behaviour (#525)
While the current implementation of reference handling in this class was the correct way to go (only handling texture names starting with # as references), the game is happy to accept references without a leading hashtag, since it just chops it off and continues on the same code path regardless. This commit makes the reference handling in BlueMap align with this behaviour, potentially allowing "broken" models to render as they do in game. This method works for reference resolving, since if a string passed into the texture field contains a ':' then it must be a namespaced key, and if it contains a '/' it has to be a resource key, because the 'minecraft' namespace is implied in these cases. The other way around, if someone were to pass in a string like 'oak_planks', it is safe to assume it is a reference, since the implied resource key would be 'minecraft:oak_planks', but textures aren't at the root level in that namespace.
This commit is contained in:
parent
9fca7b9361
commit
10fb88df4b
@ -140,13 +140,16 @@ public void write(JsonWriter out, TextureVariable value) throws IOException {
|
||||
public TextureVariable read(JsonReader in) throws IOException {
|
||||
String value = in.nextString();
|
||||
if (value.isEmpty()) throw new IOException("Can't parse an empty String into a TextureVariable");
|
||||
|
||||
if (value.charAt(0) == '#') {
|
||||
return new TextureVariable(value.substring(1));
|
||||
} else {
|
||||
if (!(value.contains(":") || value.contains("/"))) {
|
||||
return new TextureVariable(value);
|
||||
}
|
||||
|
||||
return new TextureVariable(new ResourcePath<>(value));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user