-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBlock.txt
More file actions
223 lines (199 loc) · 8.33 KB
/
Block.txt
File metadata and controls
223 lines (199 loc) · 8.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
这个文件是定义各个方块的
应该用名字当索引而不是用id 这样为未来发展做准备 会大量减少id冲突
大致构想是 服务器端按名字自动分配好id 然后将地图加载方式和方块列表发给客户端这样
id bd 方块名 透明度 硬度 抗暴 最大堆叠上限 亮度 掉落 渲染类型
定义一个方块
"方块名":{
id: 方块id(数字 缺省时会根据注册时自动分配),
bd: 方块数据值(blockData)(缺省0),
renderType: 渲染模型 详见下(缺省0),
opacity: 不透明度 亮度衰减(缺省15,范围[0-15]),
luminance: 亮度(缺省0),
//blastResistance: 抗爆性,
//drops:掉落物,
stackable: 可堆叠数量(缺省64),
textureImg: url 材质图片 缺省使用默认材质,
texture:[] 材质数组 详见下(除空气外 其他缺省为丢失材质),
friction: 摩擦力(缺省1),
showName: 方块的显示名称(缺省时,名字的_被替换成空格,单词首字母大写),
isLeaves: 是否是树叶(缺省时,名字以leaves结尾时true,否则为false),
isGlass: 是否是玻璃(缺省时,名字以glass结尾时true,否则为false),
isFluid: 是否为流体(缺省时,渲染模型为fluid时true,否则false),
maxLevel: 当isFluid=true时有效,液体最远能传播多长(1~8,缺省8),
}
"normal":0, 普通方块
"flower":1, 花,交叉状
"torch":2, 火把
"fluid":3, 流体
"crop":4, 作物,井字形
"door":5, 门
"steps":6, 台阶,1*0.5*1
"stairs":7, 楼梯,上字性
"fence":8, 栏杆 栅栏
"cactus":9, 仙人掌
"bed":10, 床
"glass_panes":11, 玻璃片
"stem":12, 茎
"fence_gate":13 栅栏门
最后计算方块当前亮度的时候 :max(0,min(15,天光-方块不透明度+方块亮度)) 宽搜处理光照渲染
两个不透明的方块紧挨着时 将不会渲染这两个挨着的面
方块可以透明 但又同时有亮度衰减的效果 例如树叶和蜘蛛网
楼梯和玻璃一样
萤石是透明的 但遮光
有不透明但又渲染旁边方块的例子吗? 没有 不透明指的就是不会渲染旁边方块
存在亮度有衰减的透明方块,但有没有亮度衰减为15 但透明的方块【目前未发现 基于这点
将透明属性和不透明属性合并 不透明度为15既为不透明方块 其他的都视为透明方块(需要渲染相邻方块)
不透明度为0 就是全透明 当空气处理
方块的材质声明:
指定材质的时候 用该材质相对于整个材质图片来说的坐标
比如石头的材质在材质图片中是第1行第20列 那相对坐标就是1,20
然后各个渲染模型对应的材质声明方式如下:
渲染采用右手坐标系(z朝屏外)
normal:
Y
^ v0: 0, 1, 0
| v1: 0, 1, 1
v0-------------v3 v2: 1, 1, 1
/¦ /| v3: 1, 1, 0
/ ¦ / | v4: 0, 0, 1
v1-------------v2 | v5: 0, 0, 0
| ¦ | | v6: 1, 0, 0
| ¦ / | | v7: 1, 0, 1
| ¦/ | | x+: v2763
=======|==v5 - - - - -|- v6======> X x-: v0541
| '| | / y+: v0123
|' | |/ y-: v4567
v4-------------v7 z+: v1472
/ | z-: v3650
L | ibo = 0,1,2, 0,2,3
Z
声明:
长度为1时六个面都是一种材质 如石头:[[1,20]]
长度为2时为[[y], [xz]] 如橡木:[[3,30],[3,29]]
长度为3时为[[y+], [y-], [xz]] 如草方块:[[1,3],[2,12],[1,4]]
长度为4时为[[y+],[y-], [x+-], [z+-]] 如工作台:[[5,6],[2,15],[5,7],[5,8]]
长度为6时对应 [[x+],[x-], [y+],[y-], [z+],[z-]]
flower:
Y
^
| v0: 0, 1, 0
v0._ _.~'v3 v1: 0, 1, 1
| `_.~'^` | v2: 1, 1, 1
_.~'^` : `~._ | v3: 1, 1, 0
v1 ¦ : v2 | v4: 0, 0, 1
| ¦ : | | v5: 0, 0, 0
| ¦ / : | | v6: 1, 0, 0
| ¦/ : | | v7: 1, 0, 1
-------|--v5._--:----_.~"v6------> X
| /| `_.-'^` | face: v1463 v0572
|/_.~"^` `~._|
v4 | v7
/ | ibo = 0,1,2, 0,2,3
L
Z
声明:
只有一个材质 如树苗[[3, 23]]
cactus:
v0: 0, 1, 0
v1: 0, 1, 1
v2: 1, 1, 1
v3: 1, 1, 0
v4: 0, 0, 1
v5: 0, 0, 0
v6: 1, 0, 0
v7: 1, 0, 1
v8: 0, 1, 15/16
v9: 0, 0, 15/16
v10: 1, 0, 15/16
v11: 1, 1, 15/16
v12: 15/16, 1, 1
v13: 15/16, 0, 1
v14: 15/16, 0, 0
v15: 15/16, 1, 0
v16: 1, 1, 1/16
v17: 1, 0, 1/16
v18: 0, 0, 1/16
v19: 0, 1, 1/16
v20: 1/16, 1, 0
v21: 1/16, 0, 0
v22: 1/16, 0, 1
v23: 1/16, 1, 1
x+: v12 13 14 15
x-: v20 21 22 23
y+: v0 1 2 3
y-: v4 5 6 7
z+: v8 9 10 11
z-: v16 17 18 19
ibo = 0,1,2, 0,2,3
声明:
长度为1时六个面都是一种材质
长度为3时为[[y+], [y-], [xz]] 如仙人掌:[[6,9],[6,11],[6,10]]
长度为4时为[[y+],[y-], [x+z+], [x-z-]]
长度为6时对应 [[x+],[x-], [y+],[y-], [z+],[z-]]
fluid:
normal:
Y y[0123] 指需要经过计算
^ v0: 0, y0, 0
| v1: 0, y1, 1
v0-------------v3 v2: 1, y2, 1
/: /| v3: 1, y3, 0
/ : / | v4: 0, 0, 1
v1-------------v2 | v5: 0, 0, 0
| : | | v6: 1, 0, 0
| : / | | v7: 1, 0, 1
| :/ | | x+: v2763
=======|--v5 - - - - -|- v6======> X x-: v0541
| '¦ | / y+: v0123
|' ¦ |/ y-: v4567
v4-------------v7 z+: v1472
/ | z-: v3650
L | ibo = 0,1,2, 0,2,3
Z
声明:
只有一个材质 如水[[12, 1]]
------------------------------------------------------------------------------------------
下面?是给没能力的自己看的,明明NDS里是左手的,可是实现不了【数学基础过差,满足不了自己的欲望
【算了 反正mc里是右手的【试图安慰自己【惨白无力
渲染采用左手坐标系(z朝屏内)
normal:
Y Z
^ 7 v0: 0, 0, 0
| / v1: 1, 0, 0
| v6-------------v7 v2: 0, 1, 0
| /¦ / /| v3: 1, 1, 0
|/ ¦ / / | v4: 0, 0, 1
v2-------------v3 | v5: 1, 0, 1
| ¦ / | | v6: 0, 1, 1
| ¦ / | | v7: 1, 1, 1
| ¦/ | | x+: v3157
| v4 - - - - -|- v5 x-: v6402
| ' | / y+: v6237
|' |/ y-: v0451
===v0-------------v1======> X z+: v7546
/| z-: v2013
/ | ibo = 0,1,2, 0,2,3
/ |
声明:
长度为1时六个面都是一种材质 如石头:[[1,20]]
长度为3时为[[y+], [xz], [y-]] 如草方块:[[1,3],[2,12],[1,4]]
长度为6时对应 [[x+],[x-], [y+],[y-], [z+],[z-]]
flower:
Y Z
^ 7
| / v0: 0, 0, 0
| v6._ / _.~'v7 v1: 1, 0, 0
| | `_.~'^` | v2: 0, 1, 0
| _.~'^`/: `~._ | v3: 1, 1, 0
v2 ¦ / : v3 | v4: 0, 0, 1
| ¦ / : | | v5: 1, 0, 1
| ¦ / : | | v6: 0, 1, 1
| ¦/ : | | v7: 1, 1, 1
| v4._ : _.~"v5
| / `_.-'^` | face: v2057 v6413
|/_.~"^` `~._|
---v0-------------v1------> X
/| ibo = 0,1,2, 0,2,3
/ |
/ |
声明:
只有一个材质 如树苗[[3, 23]]