代码初始化
This commit is contained in:
1 parent
c2f5cd98ff
commit
e3efeb74ad
2439 files changed
+305661
-1
No files matched your search
Generated
+3
@@ -1,4 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 2.7" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
+497
@@ -0,0 +1,497 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""救护车一次性生成器 (v3,支持多车型):
|
||||
对 CARS 里的每个车型:
|
||||
1) 依据其源模型(用户原始模型,已按网易规则做过 X 镜像)逐立方体做层级变换,
|
||||
得到世界空间 AABB。关键:网易方块实体的渲染映射为 world = (-geo_x/16, geo_y/16, geo_z/16),
|
||||
即 X 轴镜像;因此碰撞检测必须使用镜像后的世界坐标。
|
||||
2) 对 4 个车体旋转角 φ(0/90/180/270) 分别求「每格与车体的交集 AABB」,量化到 1/QUANT 格并去重;
|
||||
几何体根骨骼 Y 角设为 90 - φ(才能得到世界旋转 φ),并把整车居中到主方块中心、车底贴地。
|
||||
3) 生成:每个车型一份预旋转几何体(4 条,按朝向)、4 个主方块 + 若干形状共享占位方块;
|
||||
汇总生成 blocks.json、terrain_texture.json,并把布局数据写入 ambulanceServer.py 末尾。
|
||||
|
||||
车型命名规则(tag):
|
||||
主方块 dn_sa:<tag>_main_<yaw>
|
||||
占位方块 dn_sa:<tag>_ph_<NN> (形状共享,仅提供碰撞)
|
||||
几何体 geometry.dn_sa_<tag>_<yaw> -> resource_pack/models/entity/<tag>_geo.json
|
||||
client_entity entity/<tag>_main_<yaw>_block_entity.json
|
||||
"""
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
import io
|
||||
|
||||
ROOT = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\0aaaa4f2f16c46e8964025a5ab0ecc02"
|
||||
BP = os.path.join(ROOT, "behavior_pack_kcH4M5u0")
|
||||
RP = os.path.join(ROOT, "resource_pack_t7eJjrxY")
|
||||
BEH_BLOCKS_DIR = os.path.join(BP, "netease_blocks")
|
||||
ENTITY_DIR = os.path.join(RP, "entity")
|
||||
MODELS_DIR = os.path.join(RP, r"models\entity")
|
||||
|
||||
# ---------------------------------------------------------------- 车型配置
|
||||
# tag 决定所有资源的命名;src 是源模型;tex 是该车的整车贴图(client_entity 用)
|
||||
CARS = [
|
||||
{
|
||||
"item": "dn_sa:ambulance_car",
|
||||
"tag": "ambulance_car",
|
||||
"src": os.path.join(ROOT, "_gen_amb_src.geo.json"),
|
||||
"tex": "textures/blocks/ambulance_car",
|
||||
},
|
||||
{
|
||||
"item": "dn_sa:ambulance_car_broken",
|
||||
"tag": "ambulance_car_broken",
|
||||
"src": os.path.join(ROOT, "_gen_amb_src_broken.geo.json"),
|
||||
"tex": "textures/blocks/ambulance_broken",
|
||||
},
|
||||
{
|
||||
"item": "dn_sa:ambulance_car_destroyed",
|
||||
"tag": "ambulance_car_destroyed",
|
||||
"src": os.path.join(ROOT, "_gen_amb_src_destroyed.geo.json"),
|
||||
"tex": "textures/blocks/ambulance_destroyed",
|
||||
},
|
||||
]
|
||||
|
||||
# 模型原点(0,0,0) 对应的主方块格上的位置(最小角)。若游戏内整车整体偏移,改这里即可。
|
||||
ANCHOR = (0.0, 0.0, 0.0)
|
||||
QUANT = 8 # 碰撞盒量化精度:1/8 格(约 2 个贴图像素)
|
||||
YAWS = (0, 90, 180, 270) # 车体在世界空间的旋转角 φ(几何体根骨骼 Y 角 = 90 - φ)
|
||||
|
||||
# 玩家朝向象限(0=南+Z,90=西-X,180=北-Z,270=东+X) -> 车体世界旋转角 φ
|
||||
# 依据:φ=0 时车头(capo)朝 -X;把 -X 经 Ry(φ) 转到玩家朝向
|
||||
EXTRA_BY_FACING = {0: 90, 90: 0, 180: 270, 270: 180}
|
||||
|
||||
# 「车体局部格」(φ=0 坐标系,相对主方块的偏移) —— 这些格子不生成占位方块。
|
||||
# 1) 挡风玻璃前上方 / 引擎盖正上方那一片:玻璃是斜的(rot -60),它的整体包围盒把它前上方
|
||||
# 那几格也算了进去,但那里几乎全是空气,碰撞盒会悬在车外。
|
||||
# 2) 引擎盖最前面(x=-3) 顶层(y=2):该层只有车头那 0.3 格高的一小条,比它后面一格
|
||||
# (x=-2 顶层已被剔除) 高出来一截,看起来像引擎盖前端多出一块,一并剔除。
|
||||
# 3) 警灯上方(x=-1) 顶层(y=3):驾驶室顶只有 2.79 高、警灯顶 3.02,这一层(3.0~3.5)全部
|
||||
# 来自斜挡风玻璃包围盒的溢出,正好悬在警灯上方,看起来像警灯位置高出来一块。
|
||||
SKIP_LOCAL = {
|
||||
(-2, 2, -1), (-2, 2, 0), (-2, 2, 1),
|
||||
(-2, 3, -1), (-2, 3, 0), (-2, 3, 1),
|
||||
(-3, 2, -1), (-3, 2, 0), (-3, 2, 1),
|
||||
(-1, 3, -1), (-1, 3, 0), (-1, 3, 1),
|
||||
}
|
||||
|
||||
BLANK_MODEL = "dn_sa:ambulance_blank_model"
|
||||
|
||||
# 主方块碰撞盒模式(网易方块实体的模型可见性跟着「方块所在位置」走,主方块碰撞盒太小时,
|
||||
# 玩家把屏幕转开、方块位置离开视野,整车的实体模型就会停止渲染而消失):
|
||||
# "model":给主方块一个涵盖整车的碰撞盒(解决上述消失问题)
|
||||
# "cell" :只用主方块自己那一格的碰撞盒(旧行为,其余碰撞靠占位方块)
|
||||
MAIN_BOX_MODE = "model"
|
||||
|
||||
|
||||
def model_box(bones, anchor):
|
||||
"""整车在世界空间(相对主方块)的包围盒 (lo, hi)。"""
|
||||
boxes = world_boxes(bones, False) # 含零厚度面片,才能真的涵盖整个模型
|
||||
lo = [min(bx[0][i] for bx in boxes) + anchor[i] for i in range(3)]
|
||||
hi = [max(bx[1][i] for bx in boxes) + anchor[i] for i in range(3)]
|
||||
return lo, hi
|
||||
|
||||
|
||||
def skip_cells(phi):
|
||||
"""把车体局部格按 yaw 旋转成世界格(与几何体同向)。"""
|
||||
out = set()
|
||||
for (x, y, z) in SKIP_LOCAL:
|
||||
if phi == 0:
|
||||
ax, az = x, z
|
||||
elif phi == 90:
|
||||
ax, az = z, -x
|
||||
elif phi == 180:
|
||||
ax, az = -x, -z
|
||||
else:
|
||||
ax, az = -z, x
|
||||
out.add((ax, y, az))
|
||||
return out
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- math
|
||||
def mat_mul(a, b):
|
||||
return [[sum(a[i][k] * b[k][j] for k in range(3)) for j in range(3)] for i in range(3)]
|
||||
|
||||
|
||||
def rot_axis(axis, deg):
|
||||
t = math.radians(deg)
|
||||
c, s = math.cos(t), math.sin(t)
|
||||
if axis == 'x':
|
||||
return [[1, 0, 0], [0, c, -s], [0, s, c]]
|
||||
if axis == 'y':
|
||||
return [[c, 0, s], [0, 1, 0], [-s, 0, c]]
|
||||
return [[c, -s, 0], [s, c, 0], [0, 0, 1]]
|
||||
|
||||
|
||||
def euler(rx, ry, rz):
|
||||
m = rot_axis('y', ry)
|
||||
m = mat_mul(m, rot_axis('x', rx))
|
||||
m = mat_mul(m, rot_axis('z', rz))
|
||||
return m
|
||||
|
||||
|
||||
def apply(m, v, pivot):
|
||||
d = [v[i] - pivot[i] for i in range(3)]
|
||||
return [sum(m[i][k] * d[k] for k in range(3)) + pivot[i] for i in range(3)]
|
||||
|
||||
|
||||
def cube_corners(cube):
|
||||
o = cube['origin']
|
||||
s = cube['size']
|
||||
pt = cube.get('pivot', [0, 0, 0])
|
||||
pts = [[o[0] + s[0] * dx, o[1] + s[1] * dy, o[2] + s[2] * dz]
|
||||
for dx in (0, 1) for dy in (0, 1) for dz in (0, 1)]
|
||||
rot = cube.get('rotation')
|
||||
if rot and any(abs(v) > 1e-9 for v in rot):
|
||||
m = euler(rot[0], rot[1], rot[2])
|
||||
pts = [apply(m, p, pt) for p in pts]
|
||||
return pts
|
||||
|
||||
|
||||
def bone_world(by_name, bone, p):
|
||||
b = bone
|
||||
while b is not None:
|
||||
rot = b.get('rotation')
|
||||
if rot and any(abs(v) > 1e-9 for v in rot):
|
||||
m = euler(rot[0], rot[1], rot[2])
|
||||
p = apply(m, p, b.get('pivot', [0, 0, 0]))
|
||||
b = by_name.get(b.get('parent'))
|
||||
return p
|
||||
|
||||
|
||||
def world_boxes(bones, skip_degenerate=True):
|
||||
by_name = {b['name']: b for b in bones}
|
||||
out = []
|
||||
for b in bones:
|
||||
for cube in b.get('cubes', []):
|
||||
pts = [bone_world(by_name, b, p) for p in cube_corners(cube)]
|
||||
# 网易方块实体:世界 X = -几何体 X(镜像),Y/Z 不变
|
||||
pts = [[-p[0] / 16.0, p[1] / 16.0, p[2] / 16.0] for p in pts]
|
||||
lo = [min(p[i] for p in pts) for i in range(3)]
|
||||
hi = [max(p[i] for p in pts) for i in range(3)]
|
||||
if skip_degenerate and (hi[0] - lo[0] < 1e-9 or hi[1] - lo[1] < 1e-9
|
||||
or hi[2] - lo[2] < 1e-9):
|
||||
continue # 零厚度面片不产生碰撞
|
||||
out.append((lo, hi))
|
||||
return out
|
||||
|
||||
|
||||
def cells_for(boxes, anchor):
|
||||
cells = {}
|
||||
for lo, hi in boxes:
|
||||
lo = [lo[i] + anchor[i] for i in range(3)]
|
||||
hi = [hi[i] + anchor[i] for i in range(3)]
|
||||
for ix in range(int(math.floor(lo[0])), int(math.floor(hi[0] - 1e-9)) + 1):
|
||||
for iy in range(int(math.floor(lo[1])), int(math.floor(hi[1] - 1e-9)) + 1):
|
||||
for iz in range(int(math.floor(lo[2])), int(math.floor(hi[2] - 1e-9)) + 1):
|
||||
key = (ix, iy, iz)
|
||||
l = [max(lo[0], ix), max(lo[1], iy), max(lo[2], iz)]
|
||||
h = [min(hi[0], ix + 1), min(hi[1], iy + 1), min(hi[2], iz + 1)]
|
||||
if key not in cells:
|
||||
cells[key] = [l, h]
|
||||
else:
|
||||
pl, ph = cells[key]
|
||||
cells[key] = [[min(pl[i], l[i]) for i in range(3)],
|
||||
[max(ph[i], h[i]) for i in range(3)]]
|
||||
return cells
|
||||
|
||||
|
||||
def q(v, quant):
|
||||
return round(v * quant) / float(quant)
|
||||
|
||||
|
||||
def local_aabb(cell, l, h, quant=QUANT):
|
||||
"""返回该格内 0~1 的局部 AABB(量化 1/quant),退化则返回 None。"""
|
||||
lo = [min(1.0, max(0.0, q(l[i] - cell[i], quant))) for i in range(3)]
|
||||
hi = [min(1.0, max(0.0, q(h[i] - cell[i], quant))) for i in range(3)]
|
||||
if any(hi[i] - lo[i] <= 1e-6 for i in range(3)):
|
||||
return None
|
||||
return tuple(lo + hi)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- per-car 计算
|
||||
def load_model(path):
|
||||
with io.open(path, 'r', encoding='utf-8') as f:
|
||||
raw = json.load(f)
|
||||
geo = raw['minecraft:geometry'][0]
|
||||
root = [b['name'] for b in geo['bones'] if 'parent' not in b][0]
|
||||
return geo, root
|
||||
|
||||
|
||||
def bones_for_yaw(base_geo, root_name, phi):
|
||||
"""车体世界旋转 φ 时对应的几何体骨骼:根骨骼 Y=90-φ,并把整车居中到主方块中心、车底贴地。"""
|
||||
bones = json.loads(json.dumps(base_geo['bones']))
|
||||
for b in bones:
|
||||
if b['name'] == root_name:
|
||||
r = list(b.get('rotation', [0, 0, 0]))
|
||||
b['rotation'] = [r[0], r[1] - phi, r[2]]
|
||||
# 求世界包围盒(已含 X 镜像,含零厚度面片),据此算居中/贴地平移量
|
||||
boxes = world_boxes(bones, False)
|
||||
lo = [min(bx[0][i] for bx in boxes) for i in range(3)]
|
||||
hi = [max(bx[1][i] for bx in boxes) for i in range(3)]
|
||||
cx = (lo[0] + hi[0]) / 2.0
|
||||
cz = (lo[2] + hi[2]) / 2.0
|
||||
tw = (0.5 - cx, -lo[1], 0.5 - cz) # 期望世界平移:X/Z 居中,车底 y=0
|
||||
shift = [-16.0 * tw[0], 16.0 * tw[1], 16.0 * tw[2]] # 几何体空间平移 Δ = 16*diag(-1,1,1)*tw
|
||||
for b in bones:
|
||||
p = b.get('pivot', [0, 0, 0])
|
||||
b['pivot'] = [p[i] + shift[i] for i in range(3)]
|
||||
for c in b.get('cubes', []):
|
||||
o = c['origin']
|
||||
c['origin'] = [o[i] + shift[i] for i in range(3)]
|
||||
if 'pivot' in c: # 立方体自带旋转轴心也需平移,否则非纯平移
|
||||
cp = c['pivot']
|
||||
c['pivot'] = [cp[i] + shift[i] for i in range(3)]
|
||||
return bones
|
||||
|
||||
|
||||
def wjson(path, obj):
|
||||
with io.open(path, 'w', encoding='utf-8') as f:
|
||||
f.write(json.dumps(obj, indent=2, ensure_ascii=False))
|
||||
f.write(u"\n")
|
||||
|
||||
|
||||
def block_json(identifier, aabb):
|
||||
lo, hi = aabb
|
||||
return {
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": identifier,
|
||||
"register_to_creative_menu": False,
|
||||
"is_experimental": False,
|
||||
"category": "dn_sa",
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {"value": True},
|
||||
"netease:render_layer": {"value": "alpha"},
|
||||
"minecraft:destroy_time": {"value": 1.0},
|
||||
"minecraft:block_light_absorption": {"value": 0},
|
||||
"netease:aabb": {
|
||||
"collision": {"min": list(lo), "max": list(hi)},
|
||||
"clip": {"min": list(lo), "max": list(hi)},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
# 清理可能残留的旧文件(旧命名 / 旧的占位方块 / 旧的渲染锚点方块与客户端实体)
|
||||
for f in os.listdir(BEH_BLOCKS_DIR):
|
||||
if not f.endswith(".json"):
|
||||
continue
|
||||
if f == "ambulance_car_main.json" or ("ambulance_car" in f and "_ph_" in f):
|
||||
os.remove(os.path.join(BEH_BLOCKS_DIR, f))
|
||||
for f in os.listdir(ENTITY_DIR):
|
||||
if not f.endswith(".json"):
|
||||
continue
|
||||
if "ambulance_car" in f and f.endswith("_block_entity.json"):
|
||||
os.remove(os.path.join(ENTITY_DIR, f))
|
||||
old_ent = os.path.join(ENTITY_DIR, "ambulance_car_main_block_entity.json")
|
||||
if os.path.exists(old_ent):
|
||||
os.remove(old_ent)
|
||||
|
||||
results = []
|
||||
for car in CARS:
|
||||
tag = car["tag"]
|
||||
main_prefix = "dn_sa:%s_main" % tag
|
||||
ph_prefix = "dn_sa:%s_ph_" % tag
|
||||
geo_id = "geometry.dn_sa_%s" % tag
|
||||
base_geo, root_name = load_model(car["src"])
|
||||
|
||||
per_yaw = {} # yaw -> {cell: local_aabb}(逐格碰撞盒)
|
||||
yaw_bones = {} # yaw -> 已旋转/居中/贴地的骨骼
|
||||
main_box = {} # yaw -> 整车包围盒(主方块「涵盖整个模型」碰撞盒)
|
||||
shapes = {} # local_aabb -> None(形状共享)
|
||||
for yaw in YAWS:
|
||||
bones = bones_for_yaw(base_geo, root_name, yaw)
|
||||
yaw_bones[yaw] = bones
|
||||
cells = cells_for(world_boxes(bones), ANCHOR)
|
||||
skip = skip_cells(yaw)
|
||||
table = {}
|
||||
removed = []
|
||||
for cell, (l, h) in sorted(cells.items()):
|
||||
if cell in skip:
|
||||
removed.append(cell)
|
||||
continue
|
||||
la = local_aabb(cell, l, h)
|
||||
if la is None:
|
||||
continue
|
||||
table[cell] = la
|
||||
per_yaw[yaw] = table
|
||||
main_box[yaw] = model_box(bones, ANCHOR)
|
||||
for la in table.values():
|
||||
shapes.setdefault(la, None)
|
||||
print("[%s] yaw=%3d cells=%3d shapes=%3d removed=%s"
|
||||
% (tag, yaw, len(table), len(set(table.values())), removed))
|
||||
|
||||
# 形状共享占位方块命名(每种「格内碰撞盒」一个变体,被多格复用)
|
||||
names = {}
|
||||
for i, shape in enumerate(sorted(shapes.keys())):
|
||||
names[shape] = "%s%02d" % (ph_prefix, i)
|
||||
# 每格最终方块名:主方块所在格用主方块,其余用形状共享占位方块
|
||||
cellname = {}
|
||||
for yaw in YAWS:
|
||||
m = {}
|
||||
for cell, la in per_yaw[yaw].items():
|
||||
if cell == (0, 0, 0):
|
||||
continue
|
||||
m[cell] = names[la]
|
||||
cellname[yaw] = m
|
||||
print("[%s] placeholder shapes=%d" % (tag, len(names)))
|
||||
|
||||
# 1) 预旋转几何体:每个朝向一条,渲染整车
|
||||
geos = []
|
||||
for yaw in YAWS:
|
||||
desc = dict(base_geo["description"])
|
||||
desc["identifier"] = "%s_%d" % (geo_id, yaw)
|
||||
geos.append({"description": desc, "bones": yaw_bones[yaw]})
|
||||
wjson(os.path.join(MODELS_DIR, "%s_geo.json" % tag),
|
||||
{"format_version": "1.21.0", "minecraft:geometry": geos})
|
||||
|
||||
# 2) client_entity:每个朝向一份,渲染整车
|
||||
for yaw in YAWS:
|
||||
name = "%s_%d" % (main_prefix, yaw)
|
||||
ent = {
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:client_entity": {
|
||||
"description": {
|
||||
"identifier": name,
|
||||
"geometry": {"default": "%s_%d" % (geo_id, yaw)},
|
||||
"textures": {"default": car["tex"]},
|
||||
"materials": {"default": "entity_alphatest"},
|
||||
"render_controllers": [
|
||||
{"controller.render.dn_sa_ambulance_car_main": "variable.variant == 0"}
|
||||
],
|
||||
"scripts": {"initialize": ["variable.variant = 0;"]},
|
||||
}
|
||||
},
|
||||
}
|
||||
wjson(os.path.join(ENTITY_DIR, "%s_main_%d_block_entity.json" % (tag, yaw)), ent)
|
||||
|
||||
# 3) 方块定义:主方块(带 block_entity) + 形状共享占位方块
|
||||
for yaw in YAWS:
|
||||
name = "%s_%d" % (main_prefix, yaw)
|
||||
if MAIN_BOX_MODE == "model":
|
||||
lo, hi = main_box[yaw] # 一个碰撞盒涵盖整车
|
||||
else:
|
||||
la = per_yaw[yaw].get((0, 0, 0)) or (0.0, 0.0, 0.0, 1.0, 1.0, 1.0)
|
||||
lo, hi = la[:3], la[3:]
|
||||
obj = block_json(name, (lo, hi))
|
||||
obj["minecraft:block"]["components"]["netease:block_entity"] = {"tick": False, "movable": False}
|
||||
wjson(os.path.join(BEH_BLOCKS_DIR, "%s_main_%d.json" % (tag, yaw)), obj)
|
||||
for shape, name in sorted(names.items(), key=lambda kv: kv[1]):
|
||||
short = name.split(":", 1)[1]
|
||||
wjson(os.path.join(BEH_BLOCKS_DIR, short + ".json"),
|
||||
block_json(name, (shape[:3], shape[3:])))
|
||||
|
||||
results.append({
|
||||
"item": car["item"], "tag": tag, "tex": car["tex"],
|
||||
"main_prefix": main_prefix, "ph_prefix": ph_prefix,
|
||||
"cellname": cellname, "names": names,
|
||||
})
|
||||
print("[%s] wrote geo + %d client_entity + %d block defs"
|
||||
% (tag, len(YAWS), len(YAWS) + len(names)))
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- blocks.json
|
||||
blocks = {"format_version": [1, 1, 0]}
|
||||
blocks["dn_sa:generator"] = {
|
||||
"sound": "stone",
|
||||
"client_entity": {
|
||||
"identifier": "dn_sa:generator",
|
||||
"hand_model_use_client_entity": True,
|
||||
"destroyed_textures": "dn_sa:generator_icon",
|
||||
"block_icon": "dn_sa:generator_icon",
|
||||
},
|
||||
}
|
||||
blocks["dn_sa:salvage_bin"] = {
|
||||
"sound": "stone",
|
||||
"client_entity": {
|
||||
"identifier": "dn_sa:salvage_bin",
|
||||
"hand_model_use_client_entity": True,
|
||||
"destroyed_textures": "dn_sa:salvage_bin_icon",
|
||||
"block_icon": "dn_sa:salvage_bin_icon",
|
||||
},
|
||||
}
|
||||
for car in results:
|
||||
for yaw in YAWS:
|
||||
name = "%s_%d" % (car["main_prefix"], yaw)
|
||||
blocks[name] = {
|
||||
"sound": "stone",
|
||||
"client_entity": {
|
||||
"identifier": name,
|
||||
"hand_model_use_client_entity": True,
|
||||
"destroyed_textures": car["item"],
|
||||
"block_icon": car["item"],
|
||||
},
|
||||
}
|
||||
for car in results:
|
||||
for shape, name in sorted(car["names"].items(), key=lambda kv: kv[1]):
|
||||
blocks[name] = {"sound": "stone", "netease_model": BLANK_MODEL}
|
||||
wjson(os.path.join(RP, "blocks.json"), blocks)
|
||||
print("wrote blocks.json (%d entries)" % len(blocks))
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- terrain_texture.json
|
||||
tt_path = os.path.join(RP, r"textures\terrain_texture.json")
|
||||
with io.open(tt_path, 'r', encoding='utf-8') as f:
|
||||
tt = json.load(f)
|
||||
td = tt["texture_data"]
|
||||
for legacy in ("dn_sa_ambulance_car_main", "dn_sa_ambulance_car_placeholder"):
|
||||
td.pop(legacy, None)
|
||||
for key in [k for k in td if k.startswith("dn_sa:ambulance") and "_ph_a" in k]:
|
||||
td.pop(key, None) # 清掉上一次生成的渲染锚点贴图条目
|
||||
for car in results:
|
||||
td["dn_sa_%s" % car["tag"]] = {"textures": car["tex"]} # 方块破坏/图标贴图
|
||||
for yaw in YAWS:
|
||||
td["%s_%d" % (car["main_prefix"], yaw)] = {"textures": "textures/blocks/dn_sa_blank"}
|
||||
wjson(tt_path, tt)
|
||||
print("wrote terrain_texture.json")
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- 注入碰撞数据到 ambulanceServer.py
|
||||
MARKER = u"# ==== AUTO-GENERATED LAYOUT DATA (by _gen_amb.py, do not edit) ===="
|
||||
lines = []
|
||||
lines.append(u"")
|
||||
lines.append(MARKER)
|
||||
lines.append(u"# 玩家朝向象限(0=南+Z,90=西-X,180=北-Z,270=东+X) -> 车体额外 Y 旋转角")
|
||||
lines.append(u"EXTRA_BY_FACING = {")
|
||||
for k in sorted(EXTRA_BY_FACING):
|
||||
lines.append(u" %d: %d," % (k, EXTRA_BY_FACING[k]))
|
||||
lines.append(u"}")
|
||||
lines.append(u"# 物品名 -> 车型数据")
|
||||
lines.append(u"CARS = {}")
|
||||
for car in results:
|
||||
lines.append(u"CARS['%s'] = {" % car["item"])
|
||||
lines.append(u" 'main_prefix': '%s'," % car["main_prefix"])
|
||||
lines.append(u" 'ph_prefix': '%s'," % car["ph_prefix"])
|
||||
lines.append(u" 'main': {")
|
||||
for yaw in YAWS:
|
||||
lines.append(u" %d: '%s_%d'," % (yaw, car["main_prefix"], yaw))
|
||||
lines.append(u" },")
|
||||
lines.append(u" 'cells': {")
|
||||
for yaw in YAWS:
|
||||
lines.append(u" %d: {" % yaw)
|
||||
for cell in sorted(car["cellname"][yaw].keys()):
|
||||
if cell == (0, 0, 0):
|
||||
continue
|
||||
lines.append(u" (%d, %d, %d): '%s',"
|
||||
% (cell[0], cell[1], cell[2], car["cellname"][yaw][cell]))
|
||||
lines.append(u" },")
|
||||
lines.append(u" },")
|
||||
lines.append(u"}")
|
||||
data_block = u"\n".join(lines)
|
||||
|
||||
server_path = os.path.join(BP, r"Script_dn_sa\ambulanceServer.py")
|
||||
with io.open(server_path, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
idx = content.find(MARKER)
|
||||
if idx < 0:
|
||||
raise RuntimeError("marker not found in ambulanceServer.py")
|
||||
with io.open(server_path, 'w', encoding='utf-8') as f:
|
||||
f.write(content[:idx] + data_block + u"\n")
|
||||
print("injected layout data into ambulanceServer.py")
|
||||
|
||||
old_layout = os.path.join(BP, r"Script_dn_sa\ambulanceLayout.py")
|
||||
if os.path.exists(old_layout):
|
||||
os.remove(old_layout)
|
||||
print("DONE")
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,739 @@
|
||||
{
|
||||
"format_version": "1.21.0",
|
||||
"minecraft:geometry": [
|
||||
{
|
||||
"description": {
|
||||
"identifier": "geometry.unknown",
|
||||
"texture_width": 512,
|
||||
"texture_height": 512,
|
||||
"visible_bounds_width": 14,
|
||||
"visible_bounds_height": 5,
|
||||
"visible_bounds_offset": [0, 1.5, 0]
|
||||
},
|
||||
"bones": [
|
||||
{
|
||||
"name": "main",
|
||||
"pivot": [11, -13, -8],
|
||||
"rotation": [0, 90, 0]
|
||||
},
|
||||
{
|
||||
"name": "car_shapes",
|
||||
"parent": "main",
|
||||
"pivot": [11, -13, -8],
|
||||
"cubes": [
|
||||
{"origin": [3, 6, -19], "size": [16, 16, 16], "uv": [-28, -14]},
|
||||
{
|
||||
"origin": [-8.95, 6, 9.1],
|
||||
"size": [38.95, 19, 25.08],
|
||||
"uv": {}
|
||||
},
|
||||
{
|
||||
"origin": [-8, 6, -59.775],
|
||||
"size": [38, 46.55, 51.775],
|
||||
"uv": {}
|
||||
},
|
||||
{
|
||||
"origin": [-8.95, 6, -8],
|
||||
"size": [38.95, 20.9, 17.1],
|
||||
"uv": {}
|
||||
},
|
||||
{
|
||||
"origin": [-8, 26.9, -7.62],
|
||||
"size": [38, 17.1, 17.67],
|
||||
"uv": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone2",
|
||||
"parent": "main",
|
||||
"pivot": [26.4375, 1.25, -30.135]
|
||||
},
|
||||
{
|
||||
"name": "carr",
|
||||
"parent": "bone2",
|
||||
"pivot": [26.4375, -2.25, -30.135],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [19.55, 40.5, -62.15],
|
||||
"size": [5.7, 2.85, 1.9],
|
||||
"uv": {
|
||||
"north": {"uv": [286, 479], "uv_size": [6, 3]},
|
||||
"east": {"uv": [300, 479], "uv_size": [2, 3]},
|
||||
"south": {"uv": [294, 479], "uv_size": [6, 3]},
|
||||
"west": {"uv": [292, 479], "uv_size": [2, 3]},
|
||||
"up": {"uv": [292, 473], "uv_size": [2, 6], "uv_rotation": 270},
|
||||
"down": {"uv": [294, 479], "uv_size": [2, -6], "uv_rotation": 90}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone3",
|
||||
"parent": "carr",
|
||||
"pivot": [26.4375, -2.25, -30.135],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-8.95, 15.8, -48.47],
|
||||
"size": [1.9, 5.7, 58.9],
|
||||
"uv": {
|
||||
"north": {"uv": [241, 217], "uv_size": [2, 6]},
|
||||
"east": {"uv": [179, 217], "uv_size": [62, 6]},
|
||||
"south": {"uv": [305, 217], "uv_size": [2, 6]},
|
||||
"west": {"uv": [243, 217], "uv_size": [62, 6]},
|
||||
"up": {"uv": [241, 155], "uv_size": [2, 62]},
|
||||
"down": {"uv": [243, 217], "uv_size": [2, -62]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [29.05, 15.8, -48.47],
|
||||
"size": [1.9, 5.7, 58.9],
|
||||
"uv": {
|
||||
"north": {"uv": [243, 217], "uv_size": [-2, 6]},
|
||||
"east": {"uv": [305, 217], "uv_size": [-62, 6]},
|
||||
"south": {"uv": [307, 217], "uv_size": [-2, 6]},
|
||||
"west": {"uv": [241, 217], "uv_size": [-62, 6]},
|
||||
"up": {"uv": [243, 155], "uv_size": [-2, 62]},
|
||||
"down": {"uv": [245, 217], "uv_size": [-2, -62]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.07125, 27.63016, 7.07871],
|
||||
"size": [38.3325, 8.55, 18.05],
|
||||
"pivot": [26.295, 34.75516, 8.50371],
|
||||
"rotation": [-60, 0, 0],
|
||||
"uv": {
|
||||
"north": {"uv": [245, 19], "uv_size": [40, 9]},
|
||||
"east": {"uv": [226, 19], "uv_size": [19, 9]},
|
||||
"south": {"uv": [304, 19], "uv_size": [40, 9]},
|
||||
"west": {"uv": [285, 19], "uv_size": [19, 9]},
|
||||
"up": {"uv": [245, 0], "uv_size": [40, 19]},
|
||||
"down": {"uv": [285, 19], "uv_size": [40, -19]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8, 21.5, -6.67],
|
||||
"size": [38, 14.25, 25.65],
|
||||
"uv": {
|
||||
"north": {"uv": [56, 354], "uv_size": [40, 15]},
|
||||
"east": {"uv": [29, 354], "uv_size": [27, 15]},
|
||||
"south": {"uv": [123, 354], "uv_size": [40, 15]},
|
||||
"west": {"uv": [96, 354], "uv_size": [27, 15]},
|
||||
"up": {"uv": [56, 327], "uv_size": [40, 27]},
|
||||
"down": {"uv": [96, 354], "uv_size": [40, -27]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8, 35.75, -59.87],
|
||||
"size": [38, 2.85, 70.3],
|
||||
"uv": {
|
||||
"north": {"uv": [73, 73], "uv_size": [40, 3]},
|
||||
"east": {"uv": [0, 73], "uv_size": [73, 3]},
|
||||
"south": {"uv": [187, 73], "uv_size": [40, 3]},
|
||||
"west": {"uv": [113, 73], "uv_size": [74, 3]},
|
||||
"up": {"uv": [73, 0], "uv_size": [40, 73]},
|
||||
"down": {"uv": [113, 73], "uv_size": [40, -74]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8, 38.6, -59.87],
|
||||
"size": [38, 8.55, 52.25],
|
||||
"uv": {
|
||||
"north": {"uv": [227, 494], "uv_size": [40, 9]},
|
||||
"east": {"uv": [172, 494], "uv_size": [55, 9]},
|
||||
"south": {"uv": [322, 494], "uv_size": [40, 9]},
|
||||
"west": {"uv": [267, 494], "uv_size": [55, 9]},
|
||||
"up": {"uv": [227, 439], "uv_size": [40, 55]},
|
||||
"down": {"uv": [267, 494], "uv_size": [40, -55]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.095, 15.8, -10.09],
|
||||
"size": [0, 0.95, 22.04],
|
||||
"uv": {
|
||||
"north": {"uv": [237, 297], "uv_size": [0, 1]},
|
||||
"east": {"uv": [214, 297], "uv_size": [23, 1]},
|
||||
"south": {"uv": [260, 297], "uv_size": [0, 1]},
|
||||
"west": {"uv": [237, 297], "uv_size": [23, 1]},
|
||||
"up": {"uv": [237, 274], "uv_size": [0, 23]},
|
||||
"down": {"uv": [237, 297], "uv_size": [0, -23]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.855, 20.32309, 16.98838],
|
||||
"size": [39.73375, 1.9, 18.24],
|
||||
"pivot": [28.3375, 23.17309, 10.33838],
|
||||
"rotation": [-15, 0, 0],
|
||||
"uv": {
|
||||
"north": {"uv": [290, 189], "uv_size": [41, 2]},
|
||||
"east": {"uv": [271, 189], "uv_size": [19, 2]},
|
||||
"south": {"uv": [350, 189], "uv_size": [41, 2]},
|
||||
"west": {"uv": [331, 189], "uv_size": [19, 2]},
|
||||
"up": {"uv": [290, 170], "uv_size": [41, 19]},
|
||||
"down": {"uv": [331, 189], "uv_size": [41, -19]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-4.2, 0.6, 10.43],
|
||||
"size": [30.4, 11.4, 17.1],
|
||||
"uv": {
|
||||
"north": {"uv": [272, 242], "uv_size": [32, 12]},
|
||||
"east": {"uv": [254, 242], "uv_size": [18, 12]},
|
||||
"south": {"uv": [322, 242], "uv_size": [32, 12]},
|
||||
"west": {"uv": [304, 242], "uv_size": [18, 12]},
|
||||
"up": {"uv": [272, 224], "uv_size": [32, 18]},
|
||||
"down": {"uv": [304, 242], "uv_size": [32, -18]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-4.485, 0.6, -51.32],
|
||||
"size": [30.97, 15.2, 20.9],
|
||||
"uv": {
|
||||
"north": {"uv": [248, 49], "uv_size": [32, 16]},
|
||||
"east": {"uv": [226, 49], "uv_size": [22, 16]},
|
||||
"south": {"uv": [302, 49], "uv_size": [32, 16]},
|
||||
"west": {"uv": [280, 49], "uv_size": [22, 16]},
|
||||
"up": {"uv": [248, 27], "uv_size": [32, 22]},
|
||||
"down": {"uv": [280, 49], "uv_size": [32, -22]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone4",
|
||||
"parent": "bone3",
|
||||
"pivot": [26.4375, -1.3, -30.135],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-8.95, 5.35, 10.43],
|
||||
"size": [39.9, 16.15, 23.75],
|
||||
"uv": {
|
||||
"north": {"uv": [25, 235], "uv_size": [42, 17]},
|
||||
"east": {"uv": [0, 235], "uv_size": [25, 17]},
|
||||
"south": {"uv": [92, 235], "uv_size": [42, 17]},
|
||||
"west": {"uv": [67, 235], "uv_size": [25, 17]},
|
||||
"up": {"uv": [25, 210], "uv_size": [42, 25]},
|
||||
"down": {"uv": [67, 235], "uv_size": [42, -25]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.92625, 19.6, 16.985],
|
||||
"size": [39.8525, 1.9, 1.14],
|
||||
"uv": {
|
||||
"north": {"uv": [74, 312], "uv_size": [41, 2]},
|
||||
"east": {"uv": [73, 312], "uv_size": [1, 2]},
|
||||
"south": {"uv": [116, 312], "uv_size": [41, 2]},
|
||||
"west": {"uv": [115, 312], "uv_size": [1, 2]},
|
||||
"up": {"uv": [74, 311], "uv_size": [41, 1]},
|
||||
"down": {"uv": [115, 312], "uv_size": [41, -1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.95, 5.35, 26.58],
|
||||
"size": [39.9, 5.7, 0],
|
||||
"uv": {
|
||||
"north": {"uv": [44, 483], "uv_size": [42, 6]},
|
||||
"east": {"uv": [44, 483], "uv_size": [0, 6]},
|
||||
"south": {"uv": [86, 483], "uv_size": [42, 6]},
|
||||
"west": {"uv": [86, 483], "uv_size": [0, 6]},
|
||||
"up": {"uv": [44, 483], "uv_size": [42, 0]},
|
||||
"down": {"uv": [86, 483], "uv_size": [42, 0]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.95, 11.05, 10.43],
|
||||
"size": [39.9, 0, 18.05],
|
||||
"uv": {
|
||||
"north": {"uv": [98, 473], "uv_size": [42, 0]},
|
||||
"east": {"uv": [79, 473], "uv_size": [19, 0]},
|
||||
"south": {"uv": [159, 473], "uv_size": [42, 0]},
|
||||
"west": {"uv": [140, 473], "uv_size": [19, 0]},
|
||||
"up": {"uv": [98, 454], "uv_size": [42, 19]},
|
||||
"down": {"uv": [140, 473], "uv_size": [42, -19]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8, 7.25, 34.18],
|
||||
"size": [38, 8.55, 0.95],
|
||||
"uv": {
|
||||
"north": {"uv": [165, 342], "uv_size": [40, 9]},
|
||||
"east": {"uv": [164, 342], "uv_size": [1, 9]},
|
||||
"south": {"uv": [206, 342], "uv_size": [40, 9]},
|
||||
"west": {"uv": [205, 342], "uv_size": [1, 9]},
|
||||
"up": {"uv": [165, 341], "uv_size": [40, 1]},
|
||||
"down": {"uv": [205, 342], "uv_size": [40, -1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.95, 0.6, 26.58],
|
||||
"size": [39.9, 4.75, 9.5],
|
||||
"uv": {
|
||||
"north": {"uv": [119, 269], "uv_size": [42, 5]},
|
||||
"east": {"uv": [109, 269], "uv_size": [10, 5]},
|
||||
"south": {"uv": [171, 269], "uv_size": [42, 5]},
|
||||
"west": {"uv": [161, 269], "uv_size": [10, 5]},
|
||||
"up": {"uv": [119, 259], "uv_size": [42, 10]},
|
||||
"down": {"uv": [161, 269], "uv_size": [42, -10]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [5.3, -0.35, 36.08],
|
||||
"size": [11.4, 4.75, 0.95],
|
||||
"uv": {
|
||||
"north": {"uv": [136, 211], "uv_size": [12, 5]},
|
||||
"east": {"uv": [135, 211], "uv_size": [1, 5]},
|
||||
"south": {"uv": [149, 211], "uv_size": [12, 5]},
|
||||
"west": {"uv": [148, 211], "uv_size": [1, 5]},
|
||||
"up": {"uv": [136, 210], "uv_size": [12, 1]},
|
||||
"down": {"uv": [148, 211], "uv_size": [12, -1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [5.3, -0.35, -61.58],
|
||||
"size": [11.4, 4.75, 0.95],
|
||||
"uv": {
|
||||
"north": {"uv": [136, 211], "uv_size": [12, 5]},
|
||||
"east": {"uv": [135, 211], "uv_size": [1, 5]},
|
||||
"south": {"uv": [149, 211], "uv_size": [12, 5]},
|
||||
"west": {"uv": [148, 211], "uv_size": [1, 5]},
|
||||
"up": {"uv": [136, 210], "uv_size": [12, 1]},
|
||||
"down": {"uv": [148, 211], "uv_size": [12, -1]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.95, 0.6, -31.37],
|
||||
"size": [39.9, 15.2, 41.8],
|
||||
"uv": {
|
||||
"north": {"uv": [44, 193], "uv_size": [42, 16]},
|
||||
"east": {"uv": [0, 193], "uv_size": [44, 16]},
|
||||
"south": {"uv": [130, 193], "uv_size": [42, 16]},
|
||||
"west": {"uv": [86, 193], "uv_size": [44, 16]},
|
||||
"up": {"uv": [44, 149], "uv_size": [42, 44]},
|
||||
"down": {"uv": [86, 193], "uv_size": [42, -44]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.95, 5.35, -48.47],
|
||||
"size": [39.9, 10.45, 17.1],
|
||||
"uv": {
|
||||
"north": {"uv": [384, 362], "uv_size": [42, 11]},
|
||||
"east": {"uv": [366, 362], "uv_size": [18, 11]},
|
||||
"south": {"uv": [444, 362], "uv_size": [42, 11]},
|
||||
"west": {"uv": [426, 362], "uv_size": [18, 11]},
|
||||
"up": {"uv": [384, 344], "uv_size": [42, 18]},
|
||||
"down": {"uv": [426, 362], "uv_size": [42, -18]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.95, 0.6, -60.82],
|
||||
"size": [39.9, 4.75, 12.35],
|
||||
"uv": {
|
||||
"north": {"uv": [267, 268], "uv_size": [42, 5]},
|
||||
"east": {"uv": [254, 268], "uv_size": [13, 5]},
|
||||
"south": {"uv": [322, 268], "uv_size": [42, 5]},
|
||||
"west": {"uv": [309, 268], "uv_size": [13, 5]},
|
||||
"up": {"uv": [267, 255], "uv_size": [42, 13]},
|
||||
"down": {"uv": [309, 268], "uv_size": [42, -13]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone11",
|
||||
"parent": "bone4",
|
||||
"pivot": [-6.3375, 0.6, -34.885],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [0.55, -0.35, 34.18],
|
||||
"size": [1.9, 7.6, 3.8],
|
||||
"uv": {
|
||||
"north": {"uv": [224, 383], "uv_size": [-2, 8]},
|
||||
"east": {"uv": [228, 383], "uv_size": [-4, 8]},
|
||||
"south": {"uv": [230, 383], "uv_size": [-2, 8]},
|
||||
"west": {"uv": [222, 383], "uv_size": [-4, 8]},
|
||||
"up": {"uv": [224, 379], "uv_size": [-2, 4]},
|
||||
"down": {"uv": [226, 383], "uv_size": [-2, -4]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [19.55, -0.35, 34.18],
|
||||
"size": [1.9, 7.6, 3.8],
|
||||
"uv": {
|
||||
"north": {"uv": [222, 383], "uv_size": [2, 8]},
|
||||
"east": {"uv": [218, 383], "uv_size": [4, 8]},
|
||||
"south": {"uv": [228, 383], "uv_size": [2, 8]},
|
||||
"west": {"uv": [224, 383], "uv_size": [4, 8]},
|
||||
"up": {"uv": [222, 379], "uv_size": [2, 4]},
|
||||
"down": {"uv": [224, 383], "uv_size": [2, -4]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone12",
|
||||
"parent": "bone4",
|
||||
"pivot": [-6.3375, 0.6, 10.335],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [0.55, -0.35, -62.53],
|
||||
"size": [1.9, 7.6, 3.8],
|
||||
"uv": {
|
||||
"north": {"uv": [224, 383], "uv_size": [-2, 8]},
|
||||
"east": {"uv": [228, 383], "uv_size": [-4, 8]},
|
||||
"south": {"uv": [230, 383], "uv_size": [-2, 8]},
|
||||
"west": {"uv": [222, 383], "uv_size": [-4, 8]},
|
||||
"up": {"uv": [224, 379], "uv_size": [-2, 4]},
|
||||
"down": {"uv": [226, 383], "uv_size": [-2, -4]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [19.55, -0.35, -62.53],
|
||||
"size": [1.9, 7.6, 3.8],
|
||||
"uv": {
|
||||
"north": {"uv": [222, 383], "uv_size": [2, 8]},
|
||||
"east": {"uv": [218, 383], "uv_size": [4, 8]},
|
||||
"south": {"uv": [228, 383], "uv_size": [2, 8]},
|
||||
"west": {"uv": [224, 383], "uv_size": [4, 8]},
|
||||
"up": {"uv": [222, 379], "uv_size": [2, 4]},
|
||||
"down": {"uv": [224, 383], "uv_size": [2, -4]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone13",
|
||||
"parent": "bone4",
|
||||
"pivot": [26.4375, 1.55, -36.785],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [26.2, 5.35, -59.87],
|
||||
"size": [4.75, 16.15, 11.4],
|
||||
"uv": {
|
||||
"north": {"uv": [49, 265], "uv_size": [5, 17]},
|
||||
"east": {"uv": [0, 265], "uv_size": [12, 17]},
|
||||
"south": {"uv": [66, 265], "uv_size": [5, 17]},
|
||||
"west": {"uv": [54, 265], "uv_size": [12, 17]},
|
||||
"up": {"uv": [49, 253], "uv_size": [5, 12]},
|
||||
"down": {"uv": [91, 265], "uv_size": [5, -12]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [11, 5.35, -59.87],
|
||||
"size": [15.2, 0.95, 11.4],
|
||||
"uv": {
|
||||
"north": {"uv": [33, 281], "uv_size": [16, 1]},
|
||||
"east": {"uv": [0, 281], "uv_size": [12, 1]},
|
||||
"south": {"uv": [71, 281], "uv_size": [16, 1]},
|
||||
"west": {"uv": [54, 281], "uv_size": [12, 1]},
|
||||
"up": {"uv": [33, 253], "uv_size": [16, 12]},
|
||||
"down": {"uv": [75, 265], "uv_size": [16, -12]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-4.2, 5.35, -59.87],
|
||||
"size": [15.2, 0.95, 11.4],
|
||||
"uv": {
|
||||
"north": {"uv": [17, 281], "uv_size": [16, 1]},
|
||||
"east": {"uv": [0, 281], "uv_size": [12, 1]},
|
||||
"south": {"uv": [87, 281], "uv_size": [16, 1]},
|
||||
"west": {"uv": [54, 281], "uv_size": [12, 1]},
|
||||
"up": {"uv": [17, 253], "uv_size": [16, 12]},
|
||||
"down": {"uv": [59, 265], "uv_size": [16, -12]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.95, 5.35, -59.87],
|
||||
"size": [4.75, 16.15, 11.4],
|
||||
"uv": {
|
||||
"north": {"uv": [12, 265], "uv_size": [5, 17]},
|
||||
"east": {"uv": [0, 265], "uv_size": [12, 17]},
|
||||
"south": {"uv": [103, 265], "uv_size": [5, 17]},
|
||||
"west": {"uv": [54, 265], "uv_size": [12, 17]},
|
||||
"up": {"uv": [12, 253], "uv_size": [5, 12]},
|
||||
"down": {"uv": [54, 265], "uv_size": [5, -12]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [26.2, 21.5, -59.87],
|
||||
"size": [3.8, 14.25, 53.2],
|
||||
"uv": {
|
||||
"north": {"uv": [92, 133], "uv_size": [4, 15]},
|
||||
"east": {"uv": [0, 133], "uv_size": [56, 15]},
|
||||
"south": {"uv": [152, 133], "uv_size": [4, 15]},
|
||||
"west": {"uv": [96, 133], "uv_size": [56, 15]},
|
||||
"up": {"uv": [92, 77], "uv_size": [4, 56]},
|
||||
"down": {"uv": [132, 133], "uv_size": [4, -56]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [11, 21.5, -57.97],
|
||||
"size": [15.2, 14.25, 51.3],
|
||||
"uv": {
|
||||
"north": {"uv": [60, 152], "uv_size": [16, 15]},
|
||||
"east": {"uv": [0, 133], "uv_size": [54, 15]},
|
||||
"south": {"uv": [156, 133], "uv_size": [16, 15]},
|
||||
"west": {"uv": [98, 133], "uv_size": [54, 15]},
|
||||
"up": {"uv": [76, 77], "uv_size": [16, 54]},
|
||||
"down": {"uv": [116, 131], "uv_size": [16, -54]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [11, 6.3, -57.97],
|
||||
"size": [15.2, 15.2, 9.5],
|
||||
"uv": {
|
||||
"north": {"uv": [30, 303], "uv_size": [16, 16]},
|
||||
"east": {"uv": [0, 265], "uv_size": [10, 16]},
|
||||
"south": {"uv": [71, 265], "uv_size": [16, 16]},
|
||||
"west": {"uv": [56, 265], "uv_size": [10, 16]},
|
||||
"up": {"uv": [33, 253], "uv_size": [16, 10]},
|
||||
"down": {"uv": [75, 263], "uv_size": [16, -10]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-4.2, 21.5, -57.97],
|
||||
"size": [15.2, 14.25, 51.3],
|
||||
"uv": {
|
||||
"north": {"uv": [44, 152], "uv_size": [16, 15]},
|
||||
"east": {"uv": [0, 133], "uv_size": [54, 15]},
|
||||
"south": {"uv": [172, 133], "uv_size": [16, 15]},
|
||||
"west": {"uv": [98, 133], "uv_size": [54, 15]},
|
||||
"up": {"uv": [60, 77], "uv_size": [16, 54]},
|
||||
"down": {"uv": [100, 131], "uv_size": [16, -54]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-4.2, 6.3, -57.97],
|
||||
"size": [15.2, 15.2, 9.5],
|
||||
"uv": {
|
||||
"north": {"uv": [14, 303], "uv_size": [16, 16]},
|
||||
"east": {"uv": [0, 265], "uv_size": [10, 16]},
|
||||
"south": {"uv": [87, 265], "uv_size": [16, 16]},
|
||||
"west": {"uv": [56, 265], "uv_size": [10, 16]},
|
||||
"up": {"uv": [17, 253], "uv_size": [16, 10]},
|
||||
"down": {"uv": [59, 263], "uv_size": [16, -10]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8, 21.5, -59.87],
|
||||
"size": [3.8, 14.25, 53.2],
|
||||
"uv": {
|
||||
"north": {"uv": [56, 133], "uv_size": [4, 15]},
|
||||
"east": {"uv": [0, 133], "uv_size": [56, 15]},
|
||||
"south": {"uv": [116, 133], "uv_size": [4, 15]},
|
||||
"west": {"uv": [60, 133], "uv_size": [56, 15]},
|
||||
"up": {"uv": [56, 77], "uv_size": [4, 56]},
|
||||
"down": {"uv": [60, 133], "uv_size": [4, -56]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-8.19, 21.5, -58.92],
|
||||
"size": [0, 14.25, 32.3],
|
||||
"uv": {
|
||||
"north": {"uv": [412, 250], "uv_size": [0, 15]},
|
||||
"east": {"uv": [412, 243], "uv_size": [52, 25]},
|
||||
"south": {"uv": [468, 250], "uv_size": [0, 15]},
|
||||
"west": {"uv": [426, 226], "uv_size": [56, 15]},
|
||||
"up": {"uv": [412, 194], "uv_size": [0, 56]},
|
||||
"down": {"uv": [412, 250], "uv_size": [0, -56]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [30.19, 21.5, -58.92],
|
||||
"size": [0, 14.25, 32.3],
|
||||
"uv": {
|
||||
"north": {"uv": [412, 250], "uv_size": [0, 15]},
|
||||
"east": {"uv": [482, 226], "uv_size": [-56, 15]},
|
||||
"south": {"uv": [468, 250], "uv_size": [0, 15]},
|
||||
"west": {"uv": [412, 243], "uv_size": [52, 25]},
|
||||
"up": {"uv": [412, 194], "uv_size": [0, 56]},
|
||||
"down": {"uv": [412, 250], "uv_size": [0, -56]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "trunk1",
|
||||
"parent": "bone13",
|
||||
"pivot": [25.92616, 6.3, -59.47766],
|
||||
"rotation": [0, -27.5, 0]
|
||||
},
|
||||
{
|
||||
"name": "trunk2",
|
||||
"parent": "bone13",
|
||||
"pivot": [-3.9625, 6.3, -58.635],
|
||||
"rotation": [0, 65, 0]
|
||||
},
|
||||
{
|
||||
"name": "bone14",
|
||||
"parent": "bone3",
|
||||
"pivot": [11, 11.05, 6.25],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-3.25, 39.4075, -2.072],
|
||||
"size": [28.5, 2.8975, 5.985],
|
||||
"uv": {
|
||||
"north": {"uv": [427, 415], "uv_size": [30, 3]},
|
||||
"east": {"uv": [421, 415], "uv_size": [6, 3]},
|
||||
"south": {"uv": [463, 415], "uv_size": [30, 3]},
|
||||
"west": {"uv": [457, 415], "uv_size": [6, 3]},
|
||||
"up": {"uv": [427, 409], "uv_size": [30, 6]},
|
||||
"down": {"uv": [457, 415], "uv_size": [30, -6]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [17.65, 38.4575, -0.172],
|
||||
"size": [3.8, 0.9975, 2.185],
|
||||
"uv": {
|
||||
"north": {"uv": [450, 426], "uv_size": [4, 1]},
|
||||
"east": {"uv": [448, 426], "uv_size": [2, 1]},
|
||||
"south": {"uv": [456, 426], "uv_size": [4, 1]},
|
||||
"west": {"uv": [454, 426], "uv_size": [2, 1]},
|
||||
"up": {"uv": [450, 424], "uv_size": [4, 2]},
|
||||
"down": {"uv": [454, 426], "uv_size": [4, -2]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [0.36, 38.4575, -0.153],
|
||||
"size": [3.8, 0.9975, 2.185],
|
||||
"uv": {
|
||||
"north": {"uv": [450, 426], "uv_size": [4, 1]},
|
||||
"east": {"uv": [448, 426], "uv_size": [2, 1]},
|
||||
"south": {"uv": [456, 426], "uv_size": [4, 1]},
|
||||
"west": {"uv": [454, 426], "uv_size": [2, 1]},
|
||||
"up": {"uv": [450, 424], "uv_size": [4, 2]},
|
||||
"down": {"uv": [454, 426], "uv_size": [4, -2]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone15",
|
||||
"parent": "bone3",
|
||||
"pivot": [-11.5625, 34.8, -65.285],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-9.9, 40.5, -18.07],
|
||||
"size": [1.9, 2.85, 5.7],
|
||||
"uv": {
|
||||
"north": {"uv": [292, 479], "uv_size": [2, 3]},
|
||||
"east": {"uv": [286, 479], "uv_size": [6, 3]},
|
||||
"south": {"uv": [300, 479], "uv_size": [2, 3]},
|
||||
"west": {"uv": [294, 479], "uv_size": [6, 3]},
|
||||
"up": {"uv": [292, 473], "uv_size": [2, 6]},
|
||||
"down": {"uv": [294, 479], "uv_size": [2, -6]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone16",
|
||||
"parent": "bone3",
|
||||
"pivot": [33.5625, 34.8, -65.285],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [30, 40.5, -45.62],
|
||||
"size": [1.9, 2.85, 5.7],
|
||||
"uv": {
|
||||
"north": {"uv": [294, 479], "uv_size": [-2, 3]},
|
||||
"east": {"uv": [300, 479], "uv_size": [-6, 3]},
|
||||
"south": {"uv": [302, 479], "uv_size": [-2, 3]},
|
||||
"west": {"uv": [292, 479], "uv_size": [-6, 3]},
|
||||
"up": {"uv": [294, 473], "uv_size": [-2, 6]},
|
||||
"down": {"uv": [296, 479], "uv_size": [-2, -6]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone5",
|
||||
"parent": "bone3",
|
||||
"pivot": [14.0875, 11.05, -38.685]
|
||||
},
|
||||
{
|
||||
"name": "capo",
|
||||
"parent": "bone5",
|
||||
"pivot": [26.4375, 20.55, 18.03],
|
||||
"rotation": [22.5, 0, 0],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-8.9495, 21.84359, 17.46388],
|
||||
"size": [39.899, 1.899, 18.239],
|
||||
"inflate": 0.01,
|
||||
"pivot": [28.3375, 23.74309, 9.86338],
|
||||
"rotation": [-15, 0, 0],
|
||||
"uv": {
|
||||
"north": {"uv": [212, 145], "uv_size": [42, 2]},
|
||||
"east": {"uv": [193, 145], "uv_size": [19, 2]},
|
||||
"south": {"uv": [273, 145], "uv_size": [42, 2]},
|
||||
"west": {"uv": [254, 145], "uv_size": [19, 2]},
|
||||
"up": {"uv": [212, 126], "uv_size": [42, 19]},
|
||||
"down": {"uv": [254, 145], "uv_size": [42, -19]}
|
||||
}
|
||||
},
|
||||
{
|
||||
"origin": [-2.2995, 23.93359, 20.31388],
|
||||
"size": [26.599, -0.001, 12.539],
|
||||
"inflate": 0.01,
|
||||
"pivot": [28.3375, 23.93309, 9.86338],
|
||||
"rotation": [-15, 0, 0],
|
||||
"uv": {
|
||||
"north": {"uv": [341, 154], "uv_size": [42, 2]},
|
||||
"east": {"uv": [322, 154], "uv_size": [19, 2]},
|
||||
"south": {"uv": [402, 154], "uv_size": [42, 2]},
|
||||
"west": {"uv": [383, 154], "uv_size": [19, 2]},
|
||||
"up": {"uv": [458, 296], "uv_size": [-41, -19]},
|
||||
"down": {"uv": [431, 142], "uv_size": [42, -19]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "retrov",
|
||||
"parent": "bone3",
|
||||
"pivot": [-12.30688, 16.75, 6.93751]
|
||||
},
|
||||
{
|
||||
"name": "bone",
|
||||
"parent": "retrov",
|
||||
"pivot": [-12.30688, 16.75, 6.93751],
|
||||
"rotation": [0, -12.5, 0],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-12.02317, 21.5, 12.50241],
|
||||
"size": [5.7, 3.8, 0],
|
||||
"uv": {
|
||||
"north": {"uv": [0, 9], "uv_size": [6, 4]},
|
||||
"east": {"uv": [0, 9], "uv_size": [0, 4]},
|
||||
"south": {"uv": [6, 9], "uv_size": [6, 4]},
|
||||
"west": {"uv": [6, 9], "uv_size": [0, 4]},
|
||||
"up": {"uv": [0, 9], "uv_size": [6, 0]},
|
||||
"down": {"uv": [6, 9], "uv_size": [6, 0]}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bone6",
|
||||
"parent": "retrov",
|
||||
"pivot": [34.30688, 16.75, 6.93751],
|
||||
"rotation": [0, 12.5, 0]
|
||||
},
|
||||
{
|
||||
"name": "rodas",
|
||||
"parent": "bone2",
|
||||
"pivot": [-3.8675, 6.95, 24.015]
|
||||
},
|
||||
{
|
||||
"name": "front",
|
||||
"parent": "rodas",
|
||||
"pivot": [27.0075, 6.95, 19.265]
|
||||
},
|
||||
{
|
||||
"name": "back",
|
||||
"parent": "rodas",
|
||||
"pivot": [-3.8675, 6.95, -45.62]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""把 box_of_nails.bbmodel 转换为网易自定义方块模型(netease:block_geometry)。
|
||||
|
||||
转换规则(与官方 CustomBlocksMod 示例的 bbmodel->json 实测结果一致):
|
||||
cube.origin = [-to.x, from.y, from.z]
|
||||
cube.size = to - from
|
||||
cube.pivot = [-bb.origin.x, bb.origin.y, bb.origin.z]
|
||||
cube.rotation / bone.rotation = [-rx, -ry, rz]
|
||||
uv: up 面 -> uv=[x2,y2], uv_size=[x1-x2, y1-y2]
|
||||
其余面 -> uv=[x1,y1], uv_size=[x2-x1, y2-y1]
|
||||
负的 uv_size 表示贴图镜像(与原格式一致)
|
||||
贴图为空(texture=null 或零面积)的面不输出
|
||||
"""
|
||||
import base64
|
||||
import json
|
||||
import os
|
||||
|
||||
ROOT = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\0aaaa4f2f16c46e8964025a5ab0ecc02"
|
||||
RES = os.path.join(ROOT, "resource_pack_t7eJjrxY")
|
||||
SRC = r"c:\Users\30272\.trae-cn\attachments\6ac7514c01a7d726cbee7358\7dc21437-b0c4-442b-a225-1ce20d2bdbbc_593d488a-acae-4a41-a007-98367aec6727_box_of_nails.bbmodel"
|
||||
|
||||
TEX_NAME = "box_of_nails"
|
||||
TEX_KEY = "dn_sa_" + TEX_NAME
|
||||
MODEL_ID = "dn_sa:" + TEX_NAME + "_model"
|
||||
BONE_NAME = "bone"
|
||||
FACE_ORDER = ("north", "east", "south", "west", "up", "down")
|
||||
|
||||
|
||||
def num(v):
|
||||
if isinstance(v, float):
|
||||
if v.is_integer():
|
||||
return int(v)
|
||||
return round(v, 4)
|
||||
return v
|
||||
|
||||
|
||||
def arr(v):
|
||||
return "[" + ", ".join(str(num(x)) for x in v) + "]"
|
||||
|
||||
|
||||
def conv_uv(el):
|
||||
out = []
|
||||
for face in FACE_ORDER:
|
||||
f = el["faces"].get(face)
|
||||
if not f or f.get("texture") is None:
|
||||
continue
|
||||
x1, y1, x2, y2 = f["uv"]
|
||||
if x1 == x2 or y1 == y2:
|
||||
continue
|
||||
if face == "up":
|
||||
entry = "{" + '"uv": %s, "uv_size": %s' % (arr([x2, y2]), arr([x1 - x2, y1 - y2]))
|
||||
else:
|
||||
entry = "{" + '"uv": %s, "uv_size": %s' % (arr([x1, y1]), arr([x2 - x1, y2 - y1]))
|
||||
if f.get("rotation"):
|
||||
entry += ', "rot": %s' % num(f["rotation"])
|
||||
entry += "}"
|
||||
out.append('"%s": %s' % (face, entry))
|
||||
return out
|
||||
|
||||
|
||||
def main():
|
||||
with open(SRC, "r", encoding="utf-8") as fp:
|
||||
bb = json.load(fp)
|
||||
|
||||
tex = bb["textures"][0]
|
||||
tw, th = tex["width"], tex["height"]
|
||||
|
||||
# 1) 贴图 -> resourcepack/textures/blocks
|
||||
raw = base64.b64decode(tex["source"].split(",", 1)[1])
|
||||
tex_dir = os.path.join(RES, "textures", "blocks")
|
||||
os.makedirs(tex_dir, exist_ok=True)
|
||||
tex_path = os.path.join(tex_dir, TEX_NAME + ".png")
|
||||
with open(tex_path, "wb") as fp:
|
||||
fp.write(raw)
|
||||
|
||||
# 2) 模型 -> resourcepack/models/netease_block
|
||||
cube_blocks = []
|
||||
for el in bb["elements"]:
|
||||
lines = []
|
||||
lines.append("\t\t\t\t\t{")
|
||||
body = []
|
||||
body.append('"origin": %s' % arr([-el["to"][0], el["from"][1], el["from"][2]]))
|
||||
body.append('"size": %s' % arr([el["to"][i] - el["from"][i] for i in range(3)]))
|
||||
if el.get("rotation"):
|
||||
body.append('"pivot": %s' % arr([-el["origin"][0], el["origin"][1], el["origin"][2]]))
|
||||
body.append('"rotation": %s' % arr([-el["rotation"][0], -el["rotation"][1], el["rotation"][2]]))
|
||||
uv_lines = conv_uv(el)
|
||||
txt = ",\n".join("\t\t\t\t\t\t%s" % b for b in body)
|
||||
txt += ',\n\t\t\t\t\t\t"uv": {\n'
|
||||
txt += ",\n".join("\t\t\t\t\t\t\t%s" % u for u in uv_lines)
|
||||
txt += "\n\t\t\t\t\t\t}"
|
||||
lines.append(txt)
|
||||
lines.append("\t\t\t\t\t}")
|
||||
cube_blocks.append("\n".join(lines))
|
||||
|
||||
model = []
|
||||
model.append("{")
|
||||
model.append('\t"format_version": "1.13.0",')
|
||||
model.append('\t"netease:block_geometry": {')
|
||||
model.append('\t\t"description": {')
|
||||
model.append('\t\t\t"identifier": "%s",' % MODEL_ID)
|
||||
model.append('\t\t\t"textures": ["%s"],' % TEX_KEY)
|
||||
model.append('\t\t\t"textures_descriptions": [')
|
||||
model.append('\t\t\t\t{ "width": %d, "length": %d }' % (tw, th))
|
||||
model.append('\t\t\t],')
|
||||
model.append('\t\t\t"use_ao": true')
|
||||
model.append('\t\t},')
|
||||
model.append('\t\t"bones": [')
|
||||
model.append('\t\t\t{')
|
||||
model.append('\t\t\t\t"name": "%s",' % BONE_NAME)
|
||||
model.append('\t\t\t\t"pivot": [0, 0, 0],')
|
||||
model.append('\t\t\t\t"cubes": [')
|
||||
model.append(",\n".join(cube_blocks))
|
||||
model.append('\t\t\t\t]')
|
||||
model.append('\t\t\t}')
|
||||
model.append('\t\t]')
|
||||
model.append('\t}')
|
||||
model.append('}')
|
||||
text = "\n".join(model) + "\n"
|
||||
|
||||
model_dir = os.path.join(RES, "models", "netease_block")
|
||||
os.makedirs(model_dir, exist_ok=True)
|
||||
model_path = os.path.join(model_dir, TEX_KEY + ".json")
|
||||
with open(model_path, "w", encoding="utf-8", newline="\n") as fp:
|
||||
fp.write(text)
|
||||
|
||||
print("texture ->", tex_path)
|
||||
print("model ->", model_path)
|
||||
print("identifier:", MODEL_ID, "| terrain_texture key:", TEX_KEY, "| %dx%d" % (tw, th))
|
||||
print("cubes:", len(bb["elements"]))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,96 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""由 box_of_nails 方块贴图(64x64 UV展开图)生成 16x16 的物品图标。
|
||||
|
||||
采用等轴测投影组合盒子可见的三个面(顶面 + 正面 + 右侧面),
|
||||
源贴图中三个面所在的像素区域(由 blockbench 模型 UV 推出):
|
||||
正面 north px (8, 8) - (18, 13) 10 x 5
|
||||
右侧 east px (0, 8) - (8, 13) 8 x 5
|
||||
顶面 up px (8, 13) - (18, 21) 10 x 8
|
||||
盒子模型尺寸: 宽 10 单位(x) x 高 5 单位(y) x 深 8 单位(z),1 单位 = 1 贴图像素。
|
||||
"""
|
||||
import math
|
||||
import os
|
||||
from PIL import Image
|
||||
|
||||
ROOT = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\0aaaa4f2f16c46e8964025a5ab0ecc02"
|
||||
RES = os.path.join(ROOT, "resource_pack_t7eJjrxY")
|
||||
SRC = os.path.join(RES, "textures", "blocks", "box_of_nails.png")
|
||||
DST = os.path.join(RES, "textures", "items", "box_of_nails.png")
|
||||
|
||||
OUT = 16 # 最终图标边长
|
||||
SS = 4 # 超采样倍数
|
||||
SIZE = OUT * SS # 渲染画布边长
|
||||
|
||||
TEX_FRONT = (8, 8, 18, 13) # 正面 north
|
||||
TEX_WEST = (18, 8, 26, 13) # 左侧面 west
|
||||
TEX_TOP = (8, 13, 18, 21) # 顶面 up
|
||||
|
||||
W, H, D = 10.0, 5.0, 8.0 # 盒子宽/高/深(模型单位)
|
||||
|
||||
|
||||
def rasterize(dst, src, origin, uvec, vvec, rect):
|
||||
"""把源贴图矩形 rect 以平行四边形(origin + s*uvec + t*vvec)填到 dst。"""
|
||||
x0, y0, x1, y1 = rect
|
||||
ox, oy = origin
|
||||
ux, uy = uvec
|
||||
vx, vy = vvec
|
||||
det = ux * vy - uy * vx
|
||||
if abs(det) < 1e-9:
|
||||
return
|
||||
corners = [origin, (ox + ux, oy + uy), (ox + ux + vx, oy + uy + vy), (ox + vx, oy + vy)]
|
||||
minx = max(0, int(math.floor(min(c[0] for c in corners))))
|
||||
maxx = min(dst.width - 1, int(math.ceil(max(c[0] for c in corners))))
|
||||
miny = max(0, int(math.floor(min(c[1] for c in corners))))
|
||||
maxy = min(dst.height - 1, int(math.ceil(max(c[1] for c in corners))))
|
||||
px = dst.load()
|
||||
spx = src.load()
|
||||
sw, sh = src.size
|
||||
for py in range(miny, maxy + 1):
|
||||
dy = py + 0.5 - oy
|
||||
for pxx in range(minx, maxx + 1):
|
||||
dx = pxx + 0.5 - ox
|
||||
s = (vy * dx - vx * dy) / det
|
||||
t = (-uy * dx + ux * dy) / det
|
||||
if s < 0.0 or s >= 1.0 or t < 0.0 or t >= 1.0:
|
||||
continue
|
||||
sx = int(x0 + s * (x1 - x0))
|
||||
sy = int(y0 + t * (y1 - y0))
|
||||
sx = min(max(sx, 0), sw - 1)
|
||||
sy = min(max(sy, 0), sh - 1)
|
||||
px[pxx, py] = spx[sx, sy]
|
||||
|
||||
|
||||
def main():
|
||||
src = Image.open(SRC).convert("RGBA")
|
||||
dst = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0))
|
||||
|
||||
cx = math.cos(math.radians(30.0))
|
||||
cy = math.sin(math.radians(30.0))
|
||||
# 画布内每模型单位对应的像素数(保证盒子完整落在画布内)
|
||||
margin = 4
|
||||
u = min((SIZE - 2 * margin) / ((W + D) * cx),
|
||||
(SIZE - 2 * margin) / ((W + D) * cy + H))
|
||||
|
||||
wv = (W * u * cx, -W * u * cy) # 宽度方向 x(右后上)
|
||||
dv = (-D * u * cx, -D * u * cy) # 深度方向 z(左后上)
|
||||
vv = (0.0, H * u) # 竖直向下
|
||||
|
||||
# 前上顶点 F(俯视时最靠近观察者的角),整体居中
|
||||
content_w = (W + D) * u * cx
|
||||
content_h = (W + D) * u * cy + H * u
|
||||
fx = (SIZE - content_w) / 2.0 + D * u * cx
|
||||
fy = (SIZE - content_h) / 2.0 + (W + D) * u * cy
|
||||
f = (fx, fy)
|
||||
|
||||
rasterize(dst, src, f, dv, vv, TEX_WEST) # 左侧面
|
||||
rasterize(dst, src, f, wv, vv, TEX_FRONT) # 正面
|
||||
rasterize(dst, src, f, wv, dv, TEX_TOP) # 顶面
|
||||
|
||||
icon = dst.resize((OUT, OUT), Image.BOX)
|
||||
os.makedirs(os.path.dirname(DST), exist_ok=True)
|
||||
icon.save(DST)
|
||||
print("icon ->", DST, icon.size)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Whitespace-only changes.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,358 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# 一盒钉子(dn_sa:box_of_nails):物品 + 方块双形态的补给容器
|
||||
# - 物品耐久用于显示盒内钉子数:max_damage = 65,remaining = 钉子数 + 1
|
||||
# (空盒 remaining = 1,满盒 remaining = 65;+1 是为了避免耐久归零导致物品损坏)
|
||||
# - 手持盒子右键方块:放置为 dn_sa:box_of_nails_block(面向跟随玩家朝向),盒内钉子数存入世界存档(按坐标索引)
|
||||
# - 右键方块:手持钉子时放入(潜行放满,否则放 1 颗);否则取出(潜行全部取出,否则取 1 颗)
|
||||
# - 破坏方块:还原为一个物品,耐久保留盒内钉子数
|
||||
# - 描述("已存储:x/64")走物品的 customTips:生成物品时写进 itemDict,之后由
|
||||
# ChangePlayerItemTipsAndExtraId 覆盖刷新。customTips 会直接覆盖物品 JSON 里的静态文案,
|
||||
# 所以 JSON 里那行 "已存储:1/64" 只是还没刷新时的兜底显示。
|
||||
# 注意:读玩家背包必须用 GetPlayerItem —— GetEntityItem 只适用于生物/左右手/装备,
|
||||
# 官方文档写明"背包不行",用它读背包会一直返回 None,导致描述永远停在 JSON 的静态文案。
|
||||
import math
|
||||
import time
|
||||
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
compFactory = serverApi.GetEngineCompFactory()
|
||||
|
||||
# 测试参数:与 modMain 共用开关与探针(print + 写文件),仅在 DEBUG_TEST 为 True 时输出
|
||||
try:
|
||||
from Script_dn_sa.modMain import DEBUG_TEST, probe
|
||||
except Exception:
|
||||
DEBUG_TEST = False
|
||||
|
||||
|
||||
def probe(msg):
|
||||
pass
|
||||
|
||||
ITEM_ID = "dn_sa:box_of_nails"
|
||||
BLOCK_ID = "dn_sa:box_of_nails_block"
|
||||
NAILS_ID = "dn_sa:nails"
|
||||
BLOCK_AIR = "minecraft:air"
|
||||
|
||||
NAILS_MAX_STACK = 64 # 单叠钉子上限
|
||||
MAX_CHARGES = 64 # 钉子盒容量
|
||||
MAX_DAMAGE = MAX_CHARGES + 1 # 物品最大耐久
|
||||
CONTENTS_KEY = "dn_sa_box_of_nails_contents" # {"维度:x,y,z": 钉子数}
|
||||
|
||||
# ServerBlockUseEvent 在按住右键时逐 tick 触发,用冷却间隔避免一次长按连续存取
|
||||
COOLDOWN_SECONDS = 0.25 # 每次成功存取后的冷却时间
|
||||
|
||||
# 物品描述(末行动态显示当前钉子数)
|
||||
TIPS_TEXT = "手持钉子点击放入,空手点击取出\n包含:钉子\n已存储:%d/%d"
|
||||
|
||||
# 点击面 -> 法线偏移(0下 1上 2北 3南 4西 5东)
|
||||
FACE_OFFSET = {
|
||||
0: (0, -1, 0),
|
||||
1: (0, 1, 0),
|
||||
2: (0, 0, -1),
|
||||
3: (0, 0, 1),
|
||||
4: (-1, 0, 0),
|
||||
5: (1, 0, 0),
|
||||
}
|
||||
|
||||
ITEM_POS = serverApi.GetMinecraftEnum().ItemPosType
|
||||
INVENTORY = ITEM_POS.INVENTORY
|
||||
CARRIED = ITEM_POS.CARRIED
|
||||
|
||||
|
||||
def clamp(v, lo, hi):
|
||||
return lo if v < lo else (hi if v > hi else v)
|
||||
|
||||
|
||||
class BoxOfNailsServer(serverApi.GetServerSystemCls()):
|
||||
def __init__(self, namespace, name):
|
||||
super(BoxOfNailsServer, self).__init__(namespace, name)
|
||||
if DEBUG_TEST:
|
||||
probe("3/4 BoxOfNailsServer 系统实例已创建")
|
||||
self.levelId = serverApi.GetLevelId()
|
||||
self._lastUse = {} # playerId -> 上次成功存取的时间戳(秒)
|
||||
self._tipsSet = {} # (playerId, slot) -> 已写入的描述文本,防重复写入
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"AddServerPlayerEvent", self, self.OnPlayerJoin)
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"ServerItemUseOnEvent", self, self.OnItemUseOn)
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"ServerBlockUseEvent", self, self.OnBlockUse)
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"ServerPlayerTryDestroyBlockEvent", self, self.OnTryDestroy)
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"InventoryItemChangedServerEvent", self, self.OnInventoryChanged)
|
||||
|
||||
# ---------- 基础工具 ----------
|
||||
def _blockComp(self):
|
||||
return compFactory.CreateBlockInfo(self.levelId)
|
||||
|
||||
def _extraComp(self):
|
||||
return compFactory.CreateExtraData(self.levelId)
|
||||
|
||||
@staticmethod
|
||||
def _key(dim, x, y, z):
|
||||
return "%d:%d,%d,%d" % (dim, x, y, z)
|
||||
|
||||
@staticmethod
|
||||
def _itemName(itemDict):
|
||||
"""兼容读取物品 identifier:新版物品字典为 newItemName,旧版为 itemName。"""
|
||||
if not itemDict:
|
||||
return None
|
||||
return itemDict.get("newItemName") or itemDict.get("itemName")
|
||||
|
||||
def _loadContents(self):
|
||||
data = self._extraComp().GetExtraData(CONTENTS_KEY)
|
||||
return data if isinstance(data, dict) else {}
|
||||
|
||||
def _saveContents(self, data):
|
||||
self._extraComp().SetExtraData(CONTENTS_KEY, data, True)
|
||||
|
||||
def _getBlockName(self, x, y, z, dim):
|
||||
info = self._blockComp().GetBlockNew((x, y, z), dim)
|
||||
if not info:
|
||||
return None
|
||||
return info.get("name")
|
||||
|
||||
def _setBlock(self, x, y, z, dim, name, aux=0):
|
||||
# oldBlockHandling=0(替换),isLegacy=True,updateNeighbors=False
|
||||
self._blockComp().SetBlockNew((x, y, z), {"name": name, "aux": aux}, 0, dim, True, False)
|
||||
|
||||
@staticmethod
|
||||
def _facingAux(playerId):
|
||||
"""按玩家面朝方向计算四面向 aux(南=0/西=1/北=2/东=3)。
|
||||
|
||||
组件 netease:face_directional 的面向由 SetBlockNew 的 auxValue 决定。
|
||||
玩家 yaw:0=南(+Z)、90=西(-X)、180=北(-Z)、270=东(+X);
|
||||
放置时方块「北面」朝向玩家,即方块面向 = 玩家准心方向的反方向。
|
||||
"""
|
||||
try:
|
||||
yaw = float(compFactory.CreateRot(playerId).GetRot()[1]) % 360.0
|
||||
except Exception:
|
||||
return 2
|
||||
quad = int(math.floor(yaw / 90.0 + 0.5)) % 4
|
||||
return (quad + 2) % 4
|
||||
|
||||
# ---------- 物品耐久 <-> 钉子数 ----------
|
||||
@staticmethod
|
||||
def _chargesOfRemaining(remaining):
|
||||
return clamp(int(remaining) - 1, 0, MAX_CHARGES)
|
||||
|
||||
@staticmethod
|
||||
def _remainingOfCharges(charges):
|
||||
return clamp(int(charges), 0, MAX_CHARGES) + 1
|
||||
|
||||
def _handCharges(self, playerId):
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
return self._chargesOfRemaining(itemComp.GetItemDurability(CARRIED, 0))
|
||||
|
||||
def _consumeOne(self, playerId):
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
slotId = itemComp.GetSelectSlotId()
|
||||
itemDict = itemComp.GetPlayerItem(INVENTORY, slotId, True)
|
||||
if not itemDict:
|
||||
return
|
||||
count = itemDict.get("count", 1)
|
||||
itemComp.SetInvItemNum(slotId, count - 1 if count > 1 else 0)
|
||||
|
||||
def _giveBox(self, playerId, charges):
|
||||
"""给予带指定钉子数的盒子;优先放入第一个空槽,便于写入耐久。"""
|
||||
if not playerId:
|
||||
return
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
remainingOfCharges = self._remainingOfCharges(charges)
|
||||
itemDict = {
|
||||
"itemName": ITEM_ID, "count": 1, "auxValue": 0, 'customTips': TIPS_TEXT % (remainingOfCharges - 1, 64),
|
||||
'durability': remainingOfCharges
|
||||
}
|
||||
slot = -1
|
||||
items = itemComp.GetPlayerAllItems(INVENTORY, False) or []
|
||||
for i, it in enumerate(items):
|
||||
if it is None:
|
||||
slot = i
|
||||
break
|
||||
if slot < 0:
|
||||
itemComp.SpawnItemToPlayerInv(itemDict, playerId, -1)
|
||||
return
|
||||
itemComp.SpawnItemToPlayerInv(itemDict, playerId, slot)
|
||||
itemComp.SetItemDurability(INVENTORY, slot, remainingOfCharges)
|
||||
self._refreshBoxTips(playerId, slot)
|
||||
|
||||
# ---------- 动态描述(显示盒内钉子数) ----------
|
||||
@staticmethod
|
||||
def _boxTips(charges):
|
||||
return TIPS_TEXT % (clamp(int(charges), 0, MAX_CHARGES), MAX_CHARGES)
|
||||
|
||||
def _refreshBoxTips(self, playerId, slot):
|
||||
"""把指定槽位盒子物品的描述更新为当前钉子数。"""
|
||||
if not playerId:
|
||||
return
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
key = (playerId, slot)
|
||||
itemDict = itemComp.GetEntityItem(INVENTORY, slot, True)
|
||||
if not itemDict or self._itemName(itemDict) != ITEM_ID:
|
||||
self._tipsSet.pop(key, None)
|
||||
return
|
||||
tips = self._boxTips(self._chargesOfRemaining(itemComp.GetItemDurability(INVENTORY, slot)))
|
||||
if self._tipsSet.get(key) == tips:
|
||||
return
|
||||
itemComp.ChangePlayerItemTipsAndExtraId(INVENTORY, slot, tips, "box1")
|
||||
self._tipsSet[key] = tips
|
||||
|
||||
def OnInventoryChanged(self, args):
|
||||
newItem = args.get("newItemDict")
|
||||
if not newItem or self._itemName(newItem) != ITEM_ID:
|
||||
return
|
||||
self._refreshBoxTips(args.get("playerId"), args.get("slot", -1))
|
||||
|
||||
def _notifyOne(self, playerId, text):
|
||||
"""测试参数用:给玩家发一条聊天提示(仅在 DEBUG_TEST 开启时调用)。"""
|
||||
if not playerId:
|
||||
return
|
||||
try:
|
||||
compFactory.CreateMsg(playerId).NotifyOneMessage(playerId, text)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def OnPlayerJoin(self, args):
|
||||
"""玩家进入世界时刷新背包里所有盒子的描述。"""
|
||||
playerId = args.get("id")
|
||||
if DEBUG_TEST:
|
||||
probe("4/4 AddServerPlayerEvent 已触发:脚本与事件监听均正常")
|
||||
self._notifyOne(playerId, "[dn_sa] 脚本已加载,事件监听正常")
|
||||
self._refreshAllBoxTips(playerId)
|
||||
|
||||
def _refreshAllBoxTips(self, playerId):
|
||||
if not playerId:
|
||||
return
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
items = itemComp.GetPlayerAllItems(INVENTORY, False) or []
|
||||
for slot, it in enumerate(items):
|
||||
if it and self._itemName(it) == ITEM_ID:
|
||||
self._refreshBoxTips(playerId, slot)
|
||||
|
||||
# ---------- 放入 / 取出 ----------
|
||||
def _depositNails(self, playerId, dim, x, y, z, handCount, sneaking):
|
||||
"""把手中钉子放入盒子(潜行=放满,否则=1 颗);返回是否放入成功。"""
|
||||
key = self._key(dim, x, y, z)
|
||||
contents = self._loadContents()
|
||||
charges = clamp(contents.get(key, 0), 0, MAX_CHARGES)
|
||||
move = clamp(handCount if sneaking else 1, 0, MAX_CHARGES - charges)
|
||||
if move <= 0:
|
||||
return False
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
itemComp.SetInvItemNum(itemComp.GetSelectSlotId(), handCount - move)
|
||||
contents[key] = charges + move
|
||||
self._saveContents(contents)
|
||||
self._lastUse[playerId] = time.time()
|
||||
return True
|
||||
|
||||
def _withdrawNails(self, playerId, dim, x, y, z, sneaking):
|
||||
"""从盒子取出钉子(潜行=全部取出,否则=1 颗);返回是否取出成功。"""
|
||||
key = self._key(dim, x, y, z)
|
||||
contents = self._loadContents()
|
||||
charges = clamp(contents.get(key, 0), 0, MAX_CHARGES)
|
||||
if charges <= 0:
|
||||
return False
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
capacity = 0
|
||||
for it in (itemComp.GetPlayerAllItems(INVENTORY, False) or []):
|
||||
if it is None:
|
||||
capacity += NAILS_MAX_STACK
|
||||
elif self._itemName(it) == NAILS_ID:
|
||||
capacity += NAILS_MAX_STACK - it.get("count", 0)
|
||||
take = clamp(charges if sneaking else 1, 0, capacity)
|
||||
if take <= 0:
|
||||
return False
|
||||
itemComp.SpawnItemToPlayerInv({"itemName": NAILS_ID, "count": take, "auxValue": 0}, playerId, -1)
|
||||
contents[key] = charges - take
|
||||
self._saveContents(contents)
|
||||
self._lastUse[playerId] = time.time()
|
||||
return True
|
||||
|
||||
def _isSneaking(self, playerId):
|
||||
try:
|
||||
return bool(compFactory.CreatePlayer(playerId).isSneaking())
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
# ---------- 放置 ----------
|
||||
def OnItemUseOn(self, args):
|
||||
itemDict = args.get("itemDict") or {}
|
||||
itemName = self._itemName(itemDict)
|
||||
playerId = args.get("entityId")
|
||||
if not playerId:
|
||||
return
|
||||
# 手持钉子点击盒子方块 -> 放入(部分情况下潜行只触发本事件,作为兼容入口)
|
||||
if itemName == NAILS_ID and args.get("blockName") == BLOCK_ID:
|
||||
if time.time() - self._lastUse.get(playerId, 0.0) < COOLDOWN_SECONDS:
|
||||
return
|
||||
ok = self._depositNails(playerId, args.get("dimensionId", 0),
|
||||
args.get("x", 0), args.get("y", 0), args.get("z", 0),
|
||||
itemDict.get("count", 0), self._isSneaking(playerId))
|
||||
if ok:
|
||||
args["ret"] = True
|
||||
return
|
||||
if itemName != ITEM_ID:
|
||||
return
|
||||
off = FACE_OFFSET.get(args.get("face", 0))
|
||||
if off is None:
|
||||
return
|
||||
# 点击的正是钉子盒方块时不放置,避免在盒子上再叠一个盒子
|
||||
if args.get("blockName") == BLOCK_ID:
|
||||
return
|
||||
dim = args.get("dimensionId", 0)
|
||||
tx = args.get("x", 0) + off[0]
|
||||
ty = args.get("y", 0) + off[1]
|
||||
tz = args.get("z", 0) + off[2]
|
||||
if self._getBlockName(tx, ty, tz, dim) != BLOCK_AIR:
|
||||
return
|
||||
charges = self._handCharges(playerId)
|
||||
self._setBlock(tx, ty, tz, dim, BLOCK_ID, self._facingAux(playerId))
|
||||
contents = self._loadContents()
|
||||
contents[self._key(dim, tx, ty, tz)] = charges
|
||||
self._saveContents(contents)
|
||||
self._consumeOne(playerId)
|
||||
# 记录放置时刻:避免按住右键时同一动作紧接着触发 ServerBlockUseEvent 误取出钉子
|
||||
self._lastUse[playerId] = time.time()
|
||||
args["ret"] = True
|
||||
|
||||
# ---------- 存取 ----------
|
||||
def OnBlockUse(self, args):
|
||||
if args.get("blockName") != BLOCK_ID:
|
||||
return
|
||||
playerId = args.get("playerId")
|
||||
if not playerId:
|
||||
return
|
||||
args["cancel"] = True
|
||||
# 该事件按住右键时逐 tick 触发,冷却期内不再处理,避免一次长按连续存取
|
||||
if time.time() - self._lastUse.get(playerId, 0.0) < COOLDOWN_SECONDS:
|
||||
return
|
||||
dim = args.get("dimensionId", 0)
|
||||
x, y, z = args.get("x", 0), args.get("y", 0), args.get("z", 0)
|
||||
# 手上/事件中使用的物品:优先用事件自带的物品信息,更准确
|
||||
itemDict = args.get("itemDict") or {}
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
hand = itemComp.GetPlayerItem(INVENTORY, itemComp.GetSelectSlotId(), True) or {}
|
||||
usedName = self._itemName(itemDict) or self._itemName(hand)
|
||||
# 手持盒子物品时不做存取(属于放置动作的延续,避免误取出钉子)
|
||||
if usedName == ITEM_ID:
|
||||
return
|
||||
sneaking = self._isSneaking(playerId)
|
||||
if usedName == NAILS_ID:
|
||||
self._depositNails(playerId, dim, x, y, z,
|
||||
itemDict.get("count") or hand.get("count", 0), sneaking)
|
||||
else:
|
||||
self._withdrawNails(playerId, dim, x, y, z, sneaking)
|
||||
|
||||
# ---------- 破坏 ----------
|
||||
def OnTryDestroy(self, args):
|
||||
if args.get("fullName") != BLOCK_ID:
|
||||
return
|
||||
dim = args.get("dimensionId", 0)
|
||||
key = self._key(dim, args.get("x", 0), args.get("y", 0), args.get("z", 0))
|
||||
contents = self._loadContents()
|
||||
charges = clamp(contents.pop(key, 0), 0, MAX_CHARGES)
|
||||
self._saveContents(contents)
|
||||
# 屏蔽默认掉落,改为返还带钉子数的盒子物品
|
||||
args["spawnResources"] = False
|
||||
self._giveBox(args.get("playerId"), charges)
|
||||
@@ -0,0 +1,33 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# 草药使用效果(对齐 Java 版 sa_essentials 原设定)
|
||||
# 大部分草药的效果已在各自物品 JSON 的 minecraft:food.effects 中直接配置;
|
||||
# 本脚本只处理组件无法表达的「解毒」:使用后移除玩家身上的中毒效果。
|
||||
# crushed_blue_herb / mixed_gb_herbs / mixed_ggb_herbs
|
||||
# mixed_gyb_herbs / mixed_grb_herbs / mixed_rb_herbs
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
compFactory = serverApi.GetEngineCompFactory()
|
||||
|
||||
POISON_HERBS = (
|
||||
"dn_sa:crushed_blue_herb",
|
||||
"dn_sa:mixed_gb_herbs",
|
||||
"dn_sa:mixed_ggb_herbs",
|
||||
"dn_sa:mixed_gyb_herbs",
|
||||
"dn_sa:mixed_grb_herbs",
|
||||
"dn_sa:mixed_rb_herbs",
|
||||
)
|
||||
|
||||
|
||||
class HerbServer(serverApi.GetServerSystemCls()):
|
||||
def __init__(self, namespace, name):
|
||||
super(HerbServer, self).__init__(namespace, name)
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"PlayerEatFoodServerEvent", self, self.OnEatFood)
|
||||
|
||||
def OnEatFood(self, args):
|
||||
playerId = args.get("playerId")
|
||||
itemName = (args.get("itemDict") or {}).get("itemName")
|
||||
if playerId and itemName in POISON_HERBS:
|
||||
# 解毒:移除中毒状态
|
||||
compFactory.CreateEffect(playerId).RemoveEffectFromEntity("poison")
|
||||
@@ -0,0 +1,88 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# 火柴盒:点击方块消耗一点耐久并点燃地面,共20点耐久(对齐Java版sa_core火柴盒=打火石)
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
compFactory = serverApi.GetEngineCompFactory()
|
||||
|
||||
MATCHBOX_ID = "dn_sa:matchbox"
|
||||
|
||||
# 需要监听右键的原版方块(地面及常见方块),aux 用 * 匹配所有附加值
|
||||
LISTEN_BLOCKS = [
|
||||
"minecraft:grass_block:*",
|
||||
"minecraft:dirt:*",
|
||||
"minecraft:coarse_dirt:*",
|
||||
"minecraft:podzol:*",
|
||||
"minecraft:mycelium:*",
|
||||
"minecraft:moss_block:*",
|
||||
"minecraft:mud:*",
|
||||
"minecraft:stone:*",
|
||||
"minecraft:cobblestone:*",
|
||||
"minecraft:mossy_cobblestone:*",
|
||||
"minecraft:gravel:*",
|
||||
"minecraft:sand:*",
|
||||
"minecraft:sandstone:*",
|
||||
"minecraft:clay:*",
|
||||
"minecraft:snow_layer:*",
|
||||
"minecraft:dirt_path:*",
|
||||
"minecraft:netherrack:*",
|
||||
"minecraft:end_stone:*",
|
||||
"minecraft:obsidian:*",
|
||||
"minecraft:log:*",
|
||||
"minecraft:log2:*",
|
||||
"minecraft:planks:*",
|
||||
"minecraft:stone_bricks:*",
|
||||
"minecraft:bricks:*",
|
||||
"minecraft:terracotta:*",
|
||||
]
|
||||
|
||||
# 点击方块面 -> 火焰放置位置偏移(Facing枚举:0下 1上 2北 3南 4西 5东)
|
||||
FACE_OFFSETS = {
|
||||
0: (0, -1, 0),
|
||||
1: (0, 1, 0),
|
||||
2: (0, 0, -1),
|
||||
3: (0, 0, 1),
|
||||
4: (-1, 0, 0),
|
||||
5: (1, 0, 0),
|
||||
}
|
||||
|
||||
|
||||
class MatchboxServer(serverApi.GetServerSystemCls()):
|
||||
def __init__(self, namespace, name):
|
||||
super(MatchboxServer, self).__init__(namespace, name)
|
||||
self.levelId = serverApi.GetLevelId()
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"ServerBlockUseEvent", self, self.OnBlockUse)
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"LoadServerAddonScriptsAfter", self, self.OnLoadAddon)
|
||||
|
||||
def OnLoadAddon(self, args):
|
||||
# 注册原版方块对ServerBlockUseEvent的监听
|
||||
whitelistComp = compFactory.CreateBlockUseEventWhiteList(self.levelId)
|
||||
for blockName in LISTEN_BLOCKS:
|
||||
whitelistComp.AddBlockItemListenForUseEvent(blockName)
|
||||
|
||||
def OnBlockUse(self, args):
|
||||
playerId = args.get("playerId")
|
||||
itemDict = args.get("itemDict") or {}
|
||||
if itemDict.get("itemName") != MATCHBOX_ID:
|
||||
return
|
||||
# 检查主手火柴盒耐久,耐久为0时无法点燃
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
carried = serverApi.GetMinecraftEnum().ItemPosType.CARRIED
|
||||
durability = itemComp.GetItemDurability(carried, 0)
|
||||
if durability <= 0:
|
||||
return
|
||||
# 计算点击面外的火焰放置位置
|
||||
offset = FACE_OFFSETS.get(args.get("face", 1), (0, 1, 0))
|
||||
firePos = (args["x"] + offset[0], args["y"] + offset[1], args["z"] + offset[2])
|
||||
dimensionId = args.get("dimensionId")
|
||||
# 获取目标位置方块(GetBlockNew 属于 CreateBlockInfo 组件)
|
||||
blockInfoComp = compFactory.CreateBlockInfo(self.levelId)
|
||||
curBlock = blockInfoComp.GetBlockNew(firePos, dimensionId)
|
||||
if curBlock is not None and curBlock.get("name") == "minecraft:air":
|
||||
# 目标位置为空气,放置火焰并消耗一点耐久,拦截该方块的交互逻辑(如同打火石)
|
||||
# SetBlockNew 同属 CreateBlockInfo 组件
|
||||
blockInfoComp.SetBlockNew(firePos, {"name": "minecraft:fire", "aux": 0}, 0, dimensionId)
|
||||
itemComp.SetItemDurability(carried, 0, durability - 1)
|
||||
args["cancel"] = True
|
||||
@@ -0,0 +1,91 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# 医疗物品:自定义蓄力物品(custom_item_type: ranged_weapon)
|
||||
# 右键按下开始蓄力,右键抬起触发 ItemReleaseUsingServerEvent;
|
||||
# 蓄满才生效并消耗 1 个,未蓄满松开则取消(不生效、不消耗)。
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
compFactory = serverApi.GetEngineCompFactory()
|
||||
|
||||
PLASTER = "dn_sa_plaster:bow"
|
||||
SPLINT = "dn_sa_splint:bow"
|
||||
ALCOHOL_WIPES = "dn_sa_alcohol_wipes:bow"
|
||||
BLOOD_BAG = "dn_sa:blood_bag"
|
||||
BLOOD_BAG_EMPTY = "dn_sa:blood_bag_empty"
|
||||
|
||||
# 蓄满所需持有时长(tick,20 tick = 1 秒)
|
||||
CHARGE_TICKS = 60
|
||||
CHARGE_ITEMS = (PLASTER, SPLINT, ALCOHOL_WIPES)
|
||||
|
||||
HEAL_AMOUNT = 6.0 # 血袋回血量
|
||||
DONATE_TOTAL = 6 # 空血袋总扣血量
|
||||
DONATE_STEP = 1.0 # 每次扣血量
|
||||
DONATE_INTERVAL = 0.5 # 扣血间隔秒数
|
||||
|
||||
|
||||
class MedicalServer(serverApi.GetServerSystemCls()):
|
||||
def __init__(self, namespace, name):
|
||||
super(MedicalServer, self).__init__(namespace, name)
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"ItemReleaseUsingServerEvent", self, self.OnReleaseUsing)
|
||||
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
|
||||
"PlayerEatFoodServerEvent", self, self.OnEatFood)
|
||||
|
||||
# ---------- 蓄力物品 ----------
|
||||
def OnReleaseUsing(self, args):
|
||||
playerId = args.get("playerId")
|
||||
itemName = (args.get("itemDict") or {}).get("itemName")
|
||||
if not playerId or itemName not in CHARGE_ITEMS:
|
||||
return
|
||||
# 已持有帧数 = 最大使用时长 - 剩余时长
|
||||
maxUse = args.get("maxUseDuration") or 0
|
||||
durationLeft = args.get("durationLeft") or 0
|
||||
held = (maxUse - durationLeft) if maxUse > 0 else CHARGE_TICKS
|
||||
# 未蓄满:取消本次使用
|
||||
if held < CHARGE_TICKS:
|
||||
args["cancel"] = True
|
||||
return
|
||||
# 蓄满:施加效果
|
||||
effectComp = compFactory.CreateEffect(playerId)
|
||||
if itemName == PLASTER:
|
||||
effectComp.AddEffectToEntity("regeneration", 5, 0, False)
|
||||
elif itemName == SPLINT:
|
||||
effectComp.AddEffectToEntity("resistance", 10, 0, False)
|
||||
elif itemName == ALCOHOL_WIPES:
|
||||
effectComp.RemoveEffectFromEntity("poison")
|
||||
# 消耗 1 个
|
||||
self._ConsumeOne(playerId)
|
||||
args["changeItem"] = True
|
||||
|
||||
def _ConsumeOne(self, playerId):
|
||||
itemComp = compFactory.CreateItem(playerId)
|
||||
slotId = itemComp.GetSelectSlotId()
|
||||
itemDict = itemComp.GetPlayerItem(serverApi.GetMinecraftEnum().ItemPosType.INVENTORY, slotId, True)
|
||||
if not itemDict:
|
||||
return
|
||||
count = itemDict.get("count", 1)
|
||||
itemComp.SetInvItemNum(slotId, count - 1)
|
||||
|
||||
# ---------- 血袋 / 空血袋 ----------
|
||||
def OnEatFood(self, args):
|
||||
playerId = args.get("playerId")
|
||||
itemName = (args.get("itemDict") or {}).get("itemName")
|
||||
if not playerId:
|
||||
return
|
||||
if itemName == BLOOD_BAG:
|
||||
self._AddHealth(playerId, HEAL_AMOUNT)
|
||||
elif itemName == BLOOD_BAG_EMPTY:
|
||||
for i in range(1, DONATE_TOTAL + 1):
|
||||
self.AddTimer(DONATE_INTERVAL * i, self._AddHealth, playerId, -DONATE_STEP)
|
||||
self.AddTimer(DONATE_INTERVAL * (DONATE_TOTAL + 1), self._GiveBloodBag, playerId)
|
||||
|
||||
def _AddHealth(self, playerId, delta):
|
||||
attrType = serverApi.GetMinecraftEnum().AttrType.HEALTH
|
||||
attrComp = compFactory.CreateAttr(playerId)
|
||||
cur = attrComp.GetAttrValue(attrType)
|
||||
limit = attrComp.GetAttrMaxValue(attrType)
|
||||
attrComp.SetAttrValue(attrType, max(0.0, min(cur + delta, limit)))
|
||||
|
||||
def _GiveBloodBag(self, playerId):
|
||||
itemDict = {"itemName": BLOOD_BAG, "count": 1, "auxValue": 0}
|
||||
compFactory.CreateItem(playerId).SpawnItemToPlayerInv(itemDict, playerId, -1)
|
||||
@@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from mod.common.mod import Mod
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
# ===== 测试参数(排查脚本是否被引擎加载) =====
|
||||
# True :输出各阶段探针(print + 聊天提示 + 写文件),用以定位脚本卡在哪一层
|
||||
# False:关闭全部探针,恢复正常行为
|
||||
DEBUG_TEST = True
|
||||
|
||||
# 写文件探针路径:print 只进 MCStudio「脚本测试日志」窗口,不保证进 Debug_Log,
|
||||
# 这里直接追加写入客户端可写目录,作为"脚本是否被引擎加载"的决定性证据。
|
||||
PROBE_FILE = "C:/Users/30272/AppData/Roaming/MinecraftPE_Netease/dn_sa_probe.log"
|
||||
|
||||
|
||||
def probe(msg):
|
||||
"""脚本加载探针:仅在 DEBUG_TEST 为 True 时输出(print + 写文件)。"""
|
||||
if not DEBUG_TEST:
|
||||
return
|
||||
try:
|
||||
print("[dn_sa][PROBE] " + msg)
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
import time
|
||||
f = open(PROBE_FILE, "a")
|
||||
f.write(time.strftime("%Y-%m-%d %H:%M:%S") + " " + msg + "\n")
|
||||
f.close()
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
probe("1/4 modMain 模块已被引擎导入")
|
||||
|
||||
|
||||
@Mod.Binding(name="dn_sa", version="1.0")
|
||||
class DnSaMod(object):
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@Mod.InitServer()
|
||||
def DnSaServerInit(self):
|
||||
probe("2/4 InitServer 已执行,开始注册服务端系统")
|
||||
serverApi.RegisterSystem("dn_sa", "MatchboxServer", "Script_dn_sa.matchboxServer.MatchboxServer")
|
||||
serverApi.RegisterSystem("dn_sa", "MedicalServer", "Script_dn_sa.medicalServer.MedicalServer")
|
||||
serverApi.RegisterSystem("dn_sa", "HerbServer", "Script_dn_sa.herbServer.HerbServer")
|
||||
serverApi.RegisterSystem("dn_sa", "AmbulanceServer", "Script_dn_sa.ambulanceServer.AmbulanceServer")
|
||||
serverApi.RegisterSystem("dn_sa", "BoxOfNailsServer", "Script_dn_sa.boxOfNailsServer.BoxOfNailsServer")
|
||||
probe(" 所有服务端系统注册完成")
|
||||
|
||||
@Mod.DestroyServer()
|
||||
def DnSaServerDestroy(self):
|
||||
pass
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_main_0",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
-3.001304368770316,
|
||||
0.0,
|
||||
-1.1520586638691073
|
||||
],
|
||||
"max": [
|
||||
4.001304368770316,
|
||||
3.6238370065174728,
|
||||
2.152058663869107
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
-3.001304368770316,
|
||||
0.0,
|
||||
-1.1520586638691073
|
||||
],
|
||||
"max": [
|
||||
4.001304368770316,
|
||||
3.6238370065174728,
|
||||
2.152058663869107
|
||||
]
|
||||
}
|
||||
},
|
||||
"netease:block_entity": {
|
||||
"tick": false,
|
||||
"movable": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_main_180",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
-3.001304368770316,
|
||||
0.0,
|
||||
-1.1520586638691073
|
||||
],
|
||||
"max": [
|
||||
4.001304368770316,
|
||||
3.6238370065174728,
|
||||
2.152058663869107
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
-3.001304368770316,
|
||||
0.0,
|
||||
-1.1520586638691073
|
||||
],
|
||||
"max": [
|
||||
4.001304368770316,
|
||||
3.6238370065174728,
|
||||
2.152058663869107
|
||||
]
|
||||
}
|
||||
},
|
||||
"netease:block_entity": {
|
||||
"tick": false,
|
||||
"movable": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_main_270",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
-1.1520586638691068,
|
||||
0.0,
|
||||
-3.001304368770316
|
||||
],
|
||||
"max": [
|
||||
2.1520586638691075,
|
||||
3.6238370065174728,
|
||||
4.001304368770315
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
-1.1520586638691068,
|
||||
0.0,
|
||||
-3.001304368770316
|
||||
],
|
||||
"max": [
|
||||
2.1520586638691075,
|
||||
3.6238370065174728,
|
||||
4.001304368770315
|
||||
]
|
||||
}
|
||||
},
|
||||
"netease:block_entity": {
|
||||
"tick": false,
|
||||
"movable": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_main_90",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
-1.152058663869107,
|
||||
2.220446049250313e-16,
|
||||
-3.0013043687703163
|
||||
],
|
||||
"max": [
|
||||
2.152058663869107,
|
||||
3.6238370065174728,
|
||||
4.001304368770316
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
-1.152058663869107,
|
||||
2.220446049250313e-16,
|
||||
-3.0013043687703163
|
||||
],
|
||||
"max": [
|
||||
2.152058663869107,
|
||||
3.6238370065174728,
|
||||
4.001304368770316
|
||||
]
|
||||
}
|
||||
},
|
||||
"netease:block_entity": {
|
||||
"tick": false,
|
||||
"movable": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_00",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.25,
|
||||
0.375,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.25,
|
||||
0.375,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_01",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.375,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.375,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_02",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_03",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.375,
|
||||
0.375
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.375,
|
||||
0.375
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_04",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_05",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
0.5
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
0.5
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_06",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_07",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_08",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_09",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_10",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_11",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.375
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.375
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_12",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_13",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.875
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.875
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_14",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_15",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.5
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.5
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_16",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_17",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_18",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_19",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_20",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_21",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_22",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.125,
|
||||
0.125,
|
||||
0.5
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.125,
|
||||
0.125,
|
||||
0.5
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_23",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.375,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.375,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_24",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_25",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_26",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_27",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_28",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
0.125,
|
||||
0.25,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
0.125,
|
||||
0.25,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_29",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_30",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.625
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.625
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_31",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.75
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.75
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_32",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.125,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.125,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_33",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.125,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.125,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_34",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.125,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.125,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_35",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_36",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
0.5
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
0.5
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_37",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_38",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_39",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_40",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_41",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_42",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.875,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_43",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_44",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_45",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_46",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_47",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.375,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_48",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.625,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.125,
|
||||
1.0,
|
||||
0.5
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.625,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
0.125,
|
||||
1.0,
|
||||
0.5
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_49",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.75,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
0.125,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.0,
|
||||
0.75,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
0.125,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_50",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_51",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_52",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_53",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_54",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.25,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.25,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_55",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.125,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_56",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
0.25,
|
||||
0.125
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
0.25,
|
||||
0.125
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_57",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.25
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.25
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_58",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_59",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_60",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_61",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.125
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_62",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_63",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.625
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.625
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_64",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.875
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
0.125,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.0,
|
||||
0.875
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
0.125,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_65",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.125,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.125,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_66",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_67",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.375,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_68",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.625,
|
||||
0.875
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.625,
|
||||
0.875
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_69",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.75,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
0.125
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.25,
|
||||
0.75,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.5,
|
||||
1.0,
|
||||
0.125
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_70",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.125,
|
||||
0.125
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.125,
|
||||
0.125
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_71",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_72",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_73",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.0,
|
||||
0.875
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.25,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.0,
|
||||
0.875
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
0.25,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_74",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.25,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
1.0,
|
||||
0.875
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_75",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.625,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
0.125
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.625,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
0.125
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_76",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.75,
|
||||
0.875
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.5,
|
||||
0.75,
|
||||
0.875
|
||||
],
|
||||
"max": [
|
||||
0.75,
|
||||
1.0,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_77",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.625,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.625,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_78",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.625,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.625,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_79",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.75,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.75,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.375,
|
||||
1.0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_80",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.875,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.25,
|
||||
0.5
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.875,
|
||||
0.0,
|
||||
0.25
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.25,
|
||||
0.5
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"minecraft:block": {
|
||||
"description": {
|
||||
"identifier": "dn_sa:ambulance_car_broken_ph_81",
|
||||
"register_to_creative_menu": false,
|
||||
"is_experimental": false,
|
||||
"category": "dn_sa"
|
||||
},
|
||||
"components": {
|
||||
"netease:solid": {
|
||||
"value": true
|
||||
},
|
||||
"netease:render_layer": {
|
||||
"value": "alpha"
|
||||
},
|
||||
"minecraft:destroy_time": {
|
||||
"value": 1.0
|
||||
},
|
||||
"minecraft:block_light_absorption": {
|
||||
"value": 0
|
||||
},
|
||||
"netease:aabb": {
|
||||
"collision": {
|
||||
"min": [
|
||||
0.875,
|
||||
0.0,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.125,
|
||||
0.75
|
||||
]
|
||||
},
|
||||
"clip": {
|
||||
"min": [
|
||||
0.875,
|
||||
0.0,
|
||||
0.5
|
||||
],
|
||||
"max": [
|
||||
1.0,
|
||||
0.125,
|
||||
0.75
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loaded 100 of 2439 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user