Skip to content

Commit 4e5f900

Browse files
committed
Re-implement dragon head model with BoxModelBuilder and fix incorrect dimensions and jaw angle.
1 parent 089c356 commit 4e5f900

File tree

1 file changed

+43
-200
lines changed

1 file changed

+43
-200
lines changed

chunky/src/java/se/llbit/chunky/entity/SkullEntity.java

+43-200
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
import se.llbit.chunky.world.material.TextureMaterial;
2626
import se.llbit.json.JsonObject;
2727
import se.llbit.json.JsonValue;
28-
import se.llbit.math.*;
28+
import se.llbit.math.Quad;
29+
import se.llbit.math.QuickMath;
30+
import se.llbit.math.Transform;
31+
import se.llbit.math.Vector3;
2932
import se.llbit.math.primitive.Box;
3033
import se.llbit.math.primitive.Primitive;
3134

@@ -51,205 +54,45 @@ public enum Kind {
5154

5255
//#region Dragon head
5356
//String dragonHeadJson = "{\"elements\":[{\"from\":[2,0,2],\"to\":[14,12,14],\"faces\":{\"up\":{\"uv\":[8,2.875,9,1.875],\"texture\":\"entity/enderdragon/dragon\"},\"down\":{\"uv\":[8.9375,1.875,10,2.875],\"texture\":\"entity/enderdragon/dragon\"},\"east\":{\"uv\":[7,2.875,8,3.875],\"texture\":\"entity/enderdragon/dragon\"},\"west\":{\"uv\":[9,2.875,10,3.875],\"texture\":\"entity/enderdragon/dragon\"},\"north\":{\"uv\":[8,2.875,9,3.875],\"texture\":\"entity/enderdragon/dragon\"},\"south\":{\"uv\":[10,2.875,11,3.875],\"texture\":\"entity/enderdragon/dragon\"}}},{\"from\":[4,3,-8],\"to\":[12,6.5,3],\"faces\":{\"up\":{\"uv\":[12.75,3.75,12,2.75],\"texture\":\"entity/enderdragon/dragon\"},\"down\":{\"uv\":[12.8125,2.6875,13.4375,3.625],\"texture\":\"entity/enderdragon/dragon\"},\"east\":{\"uv\":[11,3.75,12.0625,4.0625],\"texture\":\"entity/enderdragon/dragon\"},\"west\":{\"uv\":[12.75,3.75,13.75,4.0625],\"texture\":\"entity/enderdragon/dragon\"},\"north\":{\"uv\":[12,3.75,12.75,4.0625],\"texture\":\"entity/enderdragon/dragon\"},\"south\":{\"uv\":[13.75,3.75,14.5,4.0625],\"texture\":\"entity/enderdragon/dragon\"}}},{\"from\":[4,0,-8],\"to\":[12,2.5,3],\"faces\":{\"up\":{\"uv\":[12.75,5.0625,12,4.0625],\"texture\":\"entity/enderdragon/dragon\"},\"down\":{\"uv\":[13.5,4.0625,12.75,5.0625],\"texture\":\"entity/enderdragon/dragon\"},\"east\":{\"uv\":[11,5.0625,12,5.3125],\"texture\":\"entity/enderdragon/dragon\"},\"west\":{\"uv\":[12.75,5.0625,13.75,5.3125],\"texture\":\"entity/enderdragon/dragon\"},\"north\":{\"uv\":[12,5.0625,12.75,5.3125],\"texture\":\"entity/enderdragon/dragon\"},\"south\":{\"uv\":[13.75,5.0625,14.5,5.3125],\"texture\":\"entity/enderdragon/dragon\"}}},{\"from\":[10.3,12,6.6],\"to\":[11.7,15,10.9],\"faces\":{\"up\":{\"uv\":[0.375,0.375,0.5,0],\"texture\":\"entity/enderdragon/dragon\"},\"east\":{\"uv\":[0.875,0.625,0.5,0.375],\"texture\":\"entity/enderdragon/dragon\"},\"west\":{\"uv\":[0.375,0.375,0,0.625],\"texture\":\"entity/enderdragon/dragon\"},\"north\":{\"uv\":[0.5,0.375,0.375,0.625],\"texture\":\"entity/enderdragon/dragon\"},\"south\":{\"uv\":[1,0.375,0.875,0.625],\"texture\":\"entity/enderdragon/dragon\"}}},{\"from\":[4.3,12,6.6],\"to\":[5.7,15,10.9],\"faces\":{\"up\":{\"uv\":[0.5,0.375,0.375,0],\"texture\":\"entity/enderdragon/dragon\"},\"east\":{\"uv\":[0,0.375,0.375,0.625],\"texture\":\"entity/enderdragon/dragon\"},\"west\":{\"uv\":[0.5,0.375,0.875,0.625],\"texture\":\"entity/enderdragon/dragon\"},\"north\":{\"uv\":[0.375,0.375,0.5,0.625],\"texture\":\"entity/enderdragon/dragon\"},\"south\":{\"uv\":[0.875,0.375,1,0.625],\"texture\":\"entity/enderdragon/dragon\"}}},{\"from\":[10.3,6.5,-5],\"to\":[11.7,8,-2],\"faces\":{\"up\":{\"uv\":[7.375,0,7.25,0.25],\"texture\":\"entity/enderdragon/dragon\"},\"east\":{\"uv\":[7.625,0.25,7.375,0.375],\"texture\":\"entity/enderdragon/dragon\"},\"west\":{\"uv\":[7.25,0.25,7,0.375],\"texture\":\"entity/enderdragon/dragon\"},\"north\":{\"uv\":[7.375,0.25,7.25,0.375],\"texture\":\"entity/enderdragon/dragon\"},\"south\":{\"uv\":[7.75,0.25,7.625,0.375],\"texture\":\"entity/enderdragon/dragon\"}}},{\"from\":[4.3,6.5,-5],\"to\":[5.7,8,-2],\"faces\":{\"up\":{\"uv\":[7.25,0,7.375,0.25],\"texture\":\"entity/enderdragon/dragon\"},\"east\":{\"uv\":[7,0.25,7.25,0.375],\"texture\":\"entity/enderdragon/dragon\"},\"west\":{\"uv\":[7.375,0.25,7.625,0.375],\"texture\":\"entity/enderdragon/dragon\"},\"north\":{\"uv\":[7.25,0.25,7.375,0.375],\"texture\":\"entity/enderdragon/dragon\"},\"south\":{\"uv\":[7.625,0.25,7.75,0.375],\"texture\":\"entity/enderdragon/dragon\"}}}]}";
54-
private static final Quad[] dragonHead = {
55-
// face
56-
new Quad(
57-
new Vector3(2 / 16.0, 12 / 16.0, 14 / 16.0),
58-
new Vector3(14 / 16.0, 12 / 16.0, 14 / 16.0),
59-
new Vector3(2 / 16.0, 12 / 16.0, 2 / 16.0),
60-
new Vector4(8 / 16.0, 9 / 16.0, 14.125 / 16.0, 13.125 / 16.0)),
61-
new Quad(
62-
new Vector3(2 / 16.0, 0, 2 / 16.0),
63-
new Vector3(14 / 16.0, 0, 2 / 16.0),
64-
new Vector3(2 / 16.0, 0, 14 / 16.0),
65-
new Vector4(8.9375 / 16.0, 10 / 16.0, 13.125 / 16.0, 14.125 / 16.0)),
66-
new Quad(
67-
new Vector3(14 / 16.0, 0, 14 / 16.0),
68-
new Vector3(14 / 16.0, 0, 2 / 16.0),
69-
new Vector3(14 / 16.0, 12 / 16.0, 14 / 16.0),
70-
new Vector4(7 / 16.0, 8 / 16.0, 12.125 / 16.0, 13.125 / 16.0)),
71-
new Quad(
72-
new Vector3(2 / 16.0, 0, 2 / 16.0),
73-
new Vector3(2 / 16.0, 0, 14 / 16.0),
74-
new Vector3(2 / 16.0, 12 / 16.0, 2 / 16.0),
75-
new Vector4(9 / 16.0, 10 / 16.0, 12.125 / 16.0, 13.125 / 16.0)),
76-
new Quad(
77-
new Vector3(14 / 16.0, 0, 2 / 16.0),
78-
new Vector3(2 / 16.0, 0, 2 / 16.0),
79-
new Vector3(14 / 16.0, 12 / 16.0, 2 / 16.0),
80-
new Vector4(8 / 16.0, 9 / 16.0, 12.125 / 16.0, 13.125 / 16.0)),
81-
new Quad(
82-
new Vector3(2 / 16.0, 0, 14 / 16.0),
83-
new Vector3(14 / 16.0, 0, 14 / 16.0),
84-
new Vector3(2 / 16.0, 12 / 16.0, 14 / 16.0),
85-
new Vector4(10 / 16.0, 11 / 16.0, 12.125 / 16.0, 13.125 / 16.0)),
86-
// mouth_upper
87-
new Quad(
88-
new Vector3(4 / 16.0, 6.5 / 16.0, 3 / 16.0),
89-
new Vector3(12 / 16.0, 6.5 / 16.0, 3 / 16.0),
90-
new Vector3(4 / 16.0, 6.5 / 16.0, -8 / 16.0),
91-
new Vector4(12.75 / 16.0, 12 / 16.0, 13.25 / 16.0, 12.25 / 16.0)),
92-
new Quad(
93-
new Vector3(4 / 16.0, 3 / 16.0, -8 / 16.0),
94-
new Vector3(12 / 16.0, 3 / 16.0, -8 / 16.0),
95-
new Vector3(4 / 16.0, 3 / 16.0, 3 / 16.0),
96-
new Vector4(12.8125 / 16.0, 13.4375 / 16.0, 12.375 / 16.0, 13.3125 / 16.0)),
97-
new Quad(
98-
new Vector3(12 / 16.0, 3 / 16.0, 3 / 16.0),
99-
new Vector3(12 / 16.0, 3 / 16.0, -8 / 16.0),
100-
new Vector3(12 / 16.0, 6.5 / 16.0, 3 / 16.0),
101-
new Vector4(11 / 16.0, 12.0625 / 16.0, 11.9375 / 16.0, 12.25 / 16.0)),
102-
new Quad(
103-
new Vector3(4 / 16.0, 3 / 16.0, -8 / 16.0),
104-
new Vector3(4 / 16.0, 3 / 16.0, 3 / 16.0),
105-
new Vector3(4 / 16.0, 6.5 / 16.0, -8 / 16.0),
106-
new Vector4(12.75 / 16.0, 13.75 / 16.0, 11.9375 / 16.0, 12.25 / 16.0)),
107-
new Quad(
108-
new Vector3(12 / 16.0, 3 / 16.0, -8 / 16.0),
109-
new Vector3(4 / 16.0, 3 / 16.0, -8 / 16.0),
110-
new Vector3(12 / 16.0, 6.5 / 16.0, -8 / 16.0),
111-
new Vector4(12 / 16.0, 12.75 / 16.0, 11.9375 / 16.0, 12.25 / 16.0)),
112-
new Quad(
113-
new Vector3(4 / 16.0, 3 / 16.0, 3 / 16.0),
114-
new Vector3(12 / 16.0, 3 / 16.0, 3 / 16.0),
115-
new Vector3(4 / 16.0, 6.5 / 16.0, 3 / 16.0),
116-
new Vector4(13.75 / 16.0, 14.5 / 16.0, 11.9375 / 16.0, 12.25 / 16.0)),
117-
// mouth_lower
118-
new Quad(
119-
new Vector3(4 / 16.0, 2.5 / 16.0, 3 / 16.0),
120-
new Vector3(12 / 16.0, 2.5 / 16.0, 3 / 16.0),
121-
new Vector3(4 / 16.0, 2.5 / 16.0, -8 / 16.0),
122-
new Vector4(12.75 / 16.0, 12 / 16.0, 11.9375 / 16.0, 10.9375 / 16.0)),
123-
new Quad(
124-
new Vector3(4 / 16.0, 0, -8 / 16.0),
125-
new Vector3(12 / 16.0, 0, -8 / 16.0),
126-
new Vector3(4 / 16.0, 0, 3 / 16.0),
127-
new Vector4(13.5 / 16.0, 12.75 / 16.0, 10.9375 / 16.0, 11.9375 / 16.0)),
128-
new Quad(
129-
new Vector3(12 / 16.0, 0, 3 / 16.0),
130-
new Vector3(12 / 16.0, 0, -8 / 16.0),
131-
new Vector3(12 / 16.0, 2.5 / 16.0, 3 / 16.0),
132-
new Vector4(11 / 16.0, 12 / 16.0, 10.6875 / 16.0, 10.9375 / 16.0)),
133-
new Quad(
134-
new Vector3(4 / 16.0, 0, -8 / 16.0),
135-
new Vector3(4 / 16.0, 0, 3 / 16.0),
136-
new Vector3(4 / 16.0, 2.5 / 16.0, -8 / 16.0),
137-
new Vector4(12.75 / 16.0, 13.75 / 16.0, 10.6875 / 16.0, 10.9375 / 16.0)),
138-
new Quad(
139-
new Vector3(12 / 16.0, 0, -8 / 16.0),
140-
new Vector3(4 / 16.0, 0, -8 / 16.0),
141-
new Vector3(12 / 16.0, 2.5 / 16.0, -8 / 16.0),
142-
new Vector4(12 / 16.0, 12.75 / 16.0, 10.6875 / 16.0, 10.9375 / 16.0)),
143-
new Quad(
144-
new Vector3(4 / 16.0, 0, 3 / 16.0),
145-
new Vector3(12 / 16.0, 0, 3 / 16.0),
146-
new Vector3(4 / 16.0, 2.5 / 16.0, 3 / 16.0),
147-
new Vector4(13.75 / 16.0, 14.5 / 16.0, 10.6875 / 16.0, 10.9375 / 16.0)),
148-
// ear_right
149-
new Quad(
150-
new Vector3(10.3 / 16.0, 15 / 16.0, 10.9 / 16.0),
151-
new Vector3(11.7 / 16.0, 15 / 16.0, 10.9 / 16.0),
152-
new Vector3(10.3 / 16.0, 15 / 16.0, 6.6 / 16.0),
153-
new Vector4(0.375 / 16.0, 0.5 / 16.0, 16 / 16.0, 15.625 / 16.0)),
154-
new Quad(
155-
new Vector3(11.7 / 16.0, 12 / 16.0, 10.9 / 16.0),
156-
new Vector3(11.7 / 16.0, 12 / 16.0, 6.6 / 16.0),
157-
new Vector3(11.7 / 16.0, 15 / 16.0, 10.9 / 16.0),
158-
new Vector4(0.875 / 16.0, 0.5 / 16.0, 15.625 / 16.0, 15.375 / 16.0)),
159-
new Quad(
160-
new Vector3(10.3 / 16.0, 12 / 16.0, 6.6 / 16.0),
161-
new Vector3(10.3 / 16.0, 12 / 16.0, 10.9 / 16.0),
162-
new Vector3(10.3 / 16.0, 15 / 16.0, 6.6 / 16.0),
163-
new Vector4(0.375 / 16.0, 0, 15.375 / 16.0, 15.625 / 16.0)),
164-
new Quad(
165-
new Vector3(11.7 / 16.0, 12 / 16.0, 6.6 / 16.0),
166-
new Vector3(10.3 / 16.0, 12 / 16.0, 6.6 / 16.0),
167-
new Vector3(11.7 / 16.0, 15 / 16.0, 6.6 / 16.0),
168-
new Vector4(0.5 / 16.0, 0.375 / 16.0, 15.375 / 16.0, 15.625 / 16.0)),
169-
new Quad(
170-
new Vector3(10.3 / 16.0, 12 / 16.0, 10.9 / 16.0),
171-
new Vector3(11.7 / 16.0, 12 / 16.0, 10.9 / 16.0),
172-
new Vector3(10.3 / 16.0, 15 / 16.0, 10.9 / 16.0),
173-
new Vector4(1 / 16.0, 0.875 / 16.0, 15.375 / 16.0, 15.625 / 16.0)),
174-
// ear_left
175-
new Quad(
176-
new Vector3(4.3 / 16.0, 15 / 16.0, 10.9 / 16.0),
177-
new Vector3(5.7 / 16.0, 15 / 16.0, 10.9 / 16.0),
178-
new Vector3(4.3 / 16.0, 15 / 16.0, 6.6 / 16.0),
179-
new Vector4(0.5 / 16.0, 0.375 / 16.0, 16 / 16.0, 15.625 / 16.0)),
180-
new Quad(
181-
new Vector3(5.7 / 16.0, 12 / 16.0, 10.9 / 16.0),
182-
new Vector3(5.7 / 16.0, 12 / 16.0, 6.6 / 16.0),
183-
new Vector3(5.7 / 16.0, 15 / 16.0, 10.9 / 16.0),
184-
new Vector4(0, 0.375 / 16.0, 15.375 / 16.0, 15.625 / 16.0)),
185-
new Quad(
186-
new Vector3(4.3 / 16.0, 12 / 16.0, 6.6 / 16.0),
187-
new Vector3(4.3 / 16.0, 12 / 16.0, 10.9 / 16.0),
188-
new Vector3(4.3 / 16.0, 15 / 16.0, 6.6 / 16.0),
189-
new Vector4(0.5 / 16.0, 0.875 / 16.0, 15.375 / 16.0, 15.625 / 16.0)),
190-
new Quad(
191-
new Vector3(5.7 / 16.0, 12 / 16.0, 6.6 / 16.0),
192-
new Vector3(4.3 / 16.0, 12 / 16.0, 6.6 / 16.0),
193-
new Vector3(5.7 / 16.0, 15 / 16.0, 6.6 / 16.0),
194-
new Vector4(0.375 / 16.0, 0.5 / 16.0, 15.375 / 16.0, 15.625 / 16.0)),
195-
new Quad(
196-
new Vector3(4.3 / 16.0, 12 / 16.0, 10.9 / 16.0),
197-
new Vector3(5.7 / 16.0, 12 / 16.0, 10.9 / 16.0),
198-
new Vector3(4.3 / 16.0, 15 / 16.0, 10.9 / 16.0),
199-
new Vector4(0.875 / 16.0, 1 / 16.0, 15.375 / 16.0, 15.625 / 16.0)),
200-
// nose right
201-
new Quad(
202-
new Vector3(10.3 / 16.0, 8 / 16.0, -2 / 16.0),
203-
new Vector3(11.7 / 16.0, 8 / 16.0, -2 / 16.0),
204-
new Vector3(10.3 / 16.0, 8 / 16.0, -5 / 16.0),
205-
new Vector4(7.375 / 16.0, 7.25 / 16.0, 15.75 / 16.0, 16 / 16.0)),
206-
new Quad(
207-
new Vector3(11.7 / 16.0, 6.5 / 16.0, -2 / 16.0),
208-
new Vector3(11.7 / 16.0, 6.5 / 16.0, -5 / 16.0),
209-
new Vector3(11.7 / 16.0, 8 / 16.0, -2 / 16.0),
210-
new Vector4(7.625 / 16.0, 7.375 / 16.0, 15.625 / 16.0, 15.75 / 16.0)),
211-
new Quad(
212-
new Vector3(10.3 / 16.0, 6.5 / 16.0, -5 / 16.0),
213-
new Vector3(10.3 / 16.0, 6.5 / 16.0, -2 / 16.0),
214-
new Vector3(10.3 / 16.0, 8 / 16.0, -5 / 16.0),
215-
new Vector4(7.25 / 16.0, 7 / 16.0, 15.625 / 16.0, 15.75 / 16.0)),
216-
new Quad(
217-
new Vector3(11.7 / 16.0, 6.5 / 16.0, -5 / 16.0),
218-
new Vector3(10.3 / 16.0, 6.5 / 16.0, -5 / 16.0),
219-
new Vector3(11.7 / 16.0, 8 / 16.0, -5 / 16.0),
220-
new Vector4(7.375 / 16.0, 7.25 / 16.0, 15.625 / 16.0, 15.75 / 16.0)),
221-
new Quad(
222-
new Vector3(10.3 / 16.0, 6.5 / 16.0, -2 / 16.0),
223-
new Vector3(11.7 / 16.0, 6.5 / 16.0, -2 / 16.0),
224-
new Vector3(10.3 / 16.0, 8 / 16.0, -2 / 16.0),
225-
new Vector4(7.75 / 16.0, 7.625 / 16.0, 15.625 / 16.0, 15.75 / 16.0)),
226-
// nose_left
227-
new Quad(
228-
new Vector3(4.3 / 16.0, 8 / 16.0, -2 / 16.0),
229-
new Vector3(5.7 / 16.0, 8 / 16.0, -2 / 16.0),
230-
new Vector3(4.3 / 16.0, 8 / 16.0, -5 / 16.0),
231-
new Vector4(7.25 / 16.0, 7.375 / 16.0, 15.75 / 16.0, 16 / 16.0)),
232-
new Quad(
233-
new Vector3(5.7 / 16.0, 6.5 / 16.0, -2 / 16.0),
234-
new Vector3(5.7 / 16.0, 6.5 / 16.0, -5 / 16.0),
235-
new Vector3(5.7 / 16.0, 8 / 16.0, -2 / 16.0),
236-
new Vector4(7 / 16.0, 7.25 / 16.0, 15.625 / 16.0, 15.75 / 16.0)),
237-
new Quad(
238-
new Vector3(4.3 / 16.0, 6.5 / 16.0, -5 / 16.0),
239-
new Vector3(4.3 / 16.0, 6.5 / 16.0, -2 / 16.0),
240-
new Vector3(4.3 / 16.0, 8 / 16.0, -5 / 16.0),
241-
new Vector4(7.375 / 16.0, 7.625 / 16.0, 15.625 / 16.0, 15.75 / 16.0)),
242-
new Quad(
243-
new Vector3(5.7 / 16.0, 6.5 / 16.0, -5 / 16.0),
244-
new Vector3(4.3 / 16.0, 6.5 / 16.0, -5 / 16.0),
245-
new Vector3(5.7 / 16.0, 8 / 16.0, -5 / 16.0),
246-
new Vector4(7.25 / 16.0, 7.375 / 16.0, 15.625 / 16.0, 15.75 / 16.0)),
247-
new Quad(
248-
new Vector3(4.3 / 16.0, 6.5 / 16.0, -2 / 16.0),
249-
new Vector3(5.7 / 16.0, 6.5 / 16.0, -2 / 16.0),
250-
new Vector3(4.3 / 16.0, 8 / 16.0, -2 / 16.0),
251-
new Vector4(7.625 / 16.0, 7.75 / 16.0, 15.625 / 16.0, 15.75 / 16.0)),
252-
};
57+
private static final Quad[] dragonHead = new BoxModelBuilder()
58+
// head
59+
.addBox(new Vector3(2 / 16., 0, 2 / 16.), new Vector3(14 / 16., 12 / 16., 14 / 16.), box ->
60+
box.withBoxTextureDimensions(16, 16, 16)
61+
.forTextureSize(Texture.dragon, 256, 256).atUVCoordinates(112, 30)
62+
.addTopFace().addBottomFace().addFrontFace().addBackFace().addLeftFace().addRightFace())
63+
// jaw
64+
.addBox(new Vector3(3.5 / 16., 3 / 16., -8.5 / 16.), new Vector3(12.5 / 16., 6.75 / 16., 3.5 / 16.), box ->
65+
box.withBoxTextureDimensions(12, 5, 16)
66+
.forTextureSize(Texture.dragon, 256, 256).atUVCoordinates(176, 44)
67+
.addTopFace().addBottomFace(UVMapHelper.Side::flipY).addFrontFace().addBackFace().addLeftFace().addRightFace())
68+
.addBox(new Vector3(3.5 / 16., 0 / 16., -8.5 / 16.), new Vector3(12.5 / 16., 3 / 16., 3.5 / 16.), box ->
69+
box.withBoxTextureDimensions(12, 4, 16)
70+
.forTextureSize(Texture.dragon, 256, 256).atUVCoordinates(176, 65)
71+
.addTopFace().addBottomFace().addFrontFace().addBackFace().addLeftFace().addRightFace()
72+
.transform(Transform.NONE
73+
.translate(0, 0.5 - 3 / 16., 0.5 - 3.5 / 16.)
74+
.rotateX(Math.toRadians(-11.25))
75+
.translate(0, -0.5 + 3 / 16., -0.5 + 3.5 / 16.)
76+
))
77+
// ears
78+
.addBox(new Vector3(10.3 / 16., 12 / 16., 6.6 / 16.), new Vector3(11.7 / 16., 15 / 16., 10.9 / 16.), box ->
79+
box.withBoxTextureDimensions(2, 4, 6)
80+
.forTextureSize(Texture.dragon, 256, 256).atUVCoordinates(0, 0)
81+
.addTopFace().addFrontFace().addBackFace().addLeftFace().addRightFace().flipX().mirrorX())
82+
.addBox(new Vector3(4.3 / 16., 12 / 16., 6.6 / 16.), new Vector3(5.7 / 16., 15 / 16., 10.9 / 16.), box ->
83+
box.withBoxTextureDimensions(2, 4, 6)
84+
.forTextureSize(Texture.dragon, 256, 256).atUVCoordinates(0, 0)
85+
.addTopFace().addFrontFace().addBackFace().addLeftFace().addRightFace().flipX())
86+
// nose
87+
.addBox(new Vector3(10.25 / 16., 6.5 / 16., -7 / 16.), new Vector3(11.75 / 16., 8 / 16., -4 / 16.), box ->
88+
box.withBoxTextureDimensions(2, 2, 4)
89+
.forTextureSize(Texture.dragon, 256, 256).atUVCoordinates(112, 0)
90+
.addTopFace().addFrontFace().addBackFace().addLeftFace().addRightFace().mirrorX())
91+
.addBox(new Vector3(4.25 / 16., 6.5 / 16., -7 / 16.), new Vector3(5.75 / 16., 8 / 16., -4 / 16.), box ->
92+
box.withBoxTextureDimensions(2, 2, 4)
93+
.forTextureSize(Texture.dragon, 256, 256).atUVCoordinates(112, 0)
94+
.addTopFace().addFrontFace().addBackFace().addLeftFace().addRightFace())
95+
.toQuads();
25396
//#endregion
25497

25598
//#region Piglin head

0 commit comments

Comments
 (0)