Skip to content

Commit 48b5104

Browse files
committed
More fixes for model parsing
1 parent d53cba1 commit 48b5104

File tree

22 files changed

+330
-133
lines changed

22 files changed

+330
-133
lines changed

core/src/main/java/org/dynmapblockscan/core/AbstractBlockScanBase.java

Lines changed: 196 additions & 83 deletions
Large diffs are not rendered by default.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package org.dynmapblockscan.core;
2+
3+
public interface BlockScanLog {
4+
public void debug(String s);
5+
public void info(String s);
6+
public void severe(Throwable t);
7+
public void severe(String s);
8+
public void severe(String s, Throwable t);
9+
public void verboseinfo(String s);
10+
public void warning(String s);
11+
public void warning(String s, Throwable t);
12+
}
13+
14+

core/src/main/java/org/dynmapblockscan/core/blockstate/BSBlockState.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.Set;
1010
import java.util.Map.Entry;
1111

12+
import org.dynmapblockscan.core.AbstractBlockScanBase;
1213
import org.dynmapblockscan.core.blockstate.BSBlockState;
1314
import org.dynmapblockscan.core.model.BlockModel;
1415

@@ -43,10 +44,22 @@ public class BSBlockState {
4344
public String toString() {
4445
StringBuilder sb = new StringBuilder();
4546
if (variants != null) {
46-
sb.append("variants={").append(variants).append("}");
47+
sb.append("variants={").append(variants).append("} ");
4748
}
4849
if (multipart != null) {
49-
sb.append("multipart=[").append(multipart).append("]");
50+
sb.append("multipart=[").append(multipart).append("] ");
51+
}
52+
if (nestedProp != null) {
53+
sb.append("nestedProp=" + nestedProp + " ");
54+
}
55+
if (nestedValueMap != null) {
56+
sb.append("nestedValueMap=[").append(nestedValueMap).append("] ");
57+
}
58+
if (defaults != null) {
59+
sb.append("defaults=").append(defaults).append(" ");
60+
}
61+
if (forge_variants != null) {
62+
sb.append("forge_variants=[").append(forge_variants).append("] ");
5063
}
5164
return sb.toString();
5265
}
@@ -155,8 +168,11 @@ public BSBlockState deserialize(JsonElement element, Type type, JsonDeserializat
155168
BSBlockState bs = new BSBlockState();
156169
// See if we have forge marker
157170
JsonObject obj = element.getAsJsonObject();
171+
bs.forge_marker = 0;
158172
if (obj.has("forge_marker")) {
159173
bs.forge_marker = obj.get("forge_marker").getAsInt();
174+
}
175+
if (bs.forge_marker == 1) {
160176
if (obj.has("defaults")) {
161177
bs.defaults = context.deserialize(obj.getAsJsonObject("defaults"), ForgeVariantV1.class);
162178
}

core/src/main/java/org/dynmapblockscan/core/blockstate/BaseCondition.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.dynmapblockscan.core.blockstate;
22

3+
import java.util.Arrays;
34
import java.util.HashMap;
45
import java.util.Map;
56
import java.util.Set;
@@ -23,7 +24,7 @@ public BaseCondition(Map<String, String> v) {
2324
if (bld == null) {
2425
bld = new HashMap<String, String[]>();
2526
}
26-
bld.put(ent.getKey(), entval.split("|"));
27+
bld.put(ent.getKey(), entval.split("\\|"));
2728
}
2829
}
2930
if (bld != null) {

core/src/main/java/org/dynmapblockscan/core/blockstate/ModelRotation.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@ public static ModelRotation getModelRotation(int x, int y) {
131131
}
132132
return rot;
133133
}
134+
135+
public String toString() {
136+
return String.format("{ x: %d, y: %s }", this.quartersX * 90, this.quartersY * 90);
137+
}
134138

135139
static {
136140
for (ModelRotation modelrotation : values()) {

core/src/main/java/org/dynmapblockscan/core/blockstate/Variant.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.List;
66
import java.util.Map;
77

8+
import org.dynmapblockscan.core.AbstractBlockScanBase;
89
import org.dynmapblockscan.core.blockstate.Variant;
910
import org.dynmapblockscan.core.model.BlockElement;
1011
import org.dynmapblockscan.core.model.BlockModel;
@@ -51,6 +52,10 @@ public boolean generateElements(Map<String, BlockModel> models) {
5152
// Find topmost elements
5253
BlockModel elemmod = basemod;
5354
while (elemmod.elements.isEmpty()) {
55+
// Assert: if parent is defined, needs to have parentModel
56+
if ((basemod.parent != null) && (elemmod.parentModel == null)) {
57+
AbstractBlockScanBase.logger.info("ERROR: modelID=" + modelID + " has parent=" + basemod.parent + " but no parentModel");
58+
}
5459
elemmod = elemmod.parentModel; // Get parent model
5560
if (elemmod == null) { // Not found, we've got no elements
5661
break;

core/src/main/java/org/dynmapblockscan/core/model/BlockElement.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222

2323
// Container for parsed JSON elements from block model
2424
public class BlockElement {
25-
public float[] from;
26-
public float[] to;
25+
public double[] from;
26+
public double[] to;
2727
public ElementRotation rotation = null;
2828
public Map<ElementFace, BlockFace> faces = Collections.emptyMap();
2929
public boolean shade = true;
@@ -69,12 +69,12 @@ public BlockElement(BlockElement src, TextureReferences txtrefs, ModelRotation m
6969
mrot.transformVector(tovec);
7070
fromvec.add(centervect); // Shift back
7171
tovec.add(centervect);
72-
from[0] = (float) Math.min(fromvec.x, tovec.x);
73-
from[1] = (float) Math.min(fromvec.y, tovec.y);
74-
from[2] = (float) Math.min(fromvec.z, tovec.z);
75-
to[0] = (float) Math.max(fromvec.x, tovec.x);
76-
to[1] = (float) Math.max(fromvec.y, tovec.y);
77-
to[2] = (float) Math.max(fromvec.z, tovec.z);
72+
from[0] = Math.min(fromvec.x, tovec.x);
73+
from[1] = Math.min(fromvec.y, tovec.y);
74+
from[2] = Math.min(fromvec.z, tovec.z);
75+
to[0] = Math.max(fromvec.x, tovec.x);
76+
to[1] = Math.max(fromvec.y, tovec.y);
77+
to[2] = Math.max(fromvec.z, tovec.z);
7878

7979
this.uvlock = uvlock; // Remember uvlock
8080
}
@@ -119,10 +119,10 @@ public BlockElement deserialize(JsonElement element, Type type, JsonDeserializat
119119
BlockElement be = new BlockElement();
120120
JsonObject obj = element.getAsJsonObject();
121121
if (obj.has("from")) {
122-
be.from = context.deserialize(obj.get("from"), float[].class);
122+
be.from = context.deserialize(obj.get("from"), double[].class);
123123
}
124124
if (obj.has("to")) {
125-
be.to = context.deserialize(obj.get("to"), float[].class);
125+
be.to = context.deserialize(obj.get("to"), double[].class);
126126
}
127127
if (obj.has("rotation")) {
128128
be.rotation = context.deserialize(obj.get("rotation"), ElementRotation.class);

core/src/main/java/org/dynmapblockscan/core/model/BlockFace.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class BlockFace {
88
public String cullface = null;
99
public int tintindex = -1;
1010
public String texture;
11-
public float[] uv = null;
11+
public double[] uv = null;
1212
public int rotation = 0;
1313

1414
// From transforms

core/src/main/java/org/dynmapblockscan/core/model/ElementRotation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import org.dynmapblockscan.core.model.ElementRotation;
66

77
public class ElementRotation {
8-
public float[] origin = { 8.0f, 8.0f, 8.0f };
8+
public double[] origin = { 8.0f, 8.0f, 8.0f };
99
public String axis = "x";
10-
public float angle = 0.0f;
10+
public double angle = 0.0f;
1111
public boolean rescale = false;
1212

1313
public ElementRotation() {}

forge-1.14.4/build.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@ apply plugin: 'net.minecraftforge.gradle'
1212
apply plugin: 'eclipse'
1313
apply plugin: 'com.github.johnrengelman.shadow'
1414

15+
eclipse {
16+
project {
17+
name = "${parent.name}-forge-1.14.4"
18+
}
19+
}
20+
1521
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = JavaLanguageVersion.of(8) // Need this here so eclipse task generates correctly.
1622

1723
println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))

0 commit comments

Comments
 (0)