diff --git a/item-model-generator.py b/item-model-generator.py index 613ec2b..5e12738 100644 --- a/item-model-generator.py +++ b/item-model-generator.py @@ -107,17 +107,32 @@ def create_bow(): print(f"created: {output_file}") -def generate_crossbow_arrow_json(arrow_data): +def generate_crossbow_arrow_json(arrow_data, namespace, multishot_namespace): model = { "model": { - "type": "minecraft:model", - "model": f"real_arrow_tip:item/crossbow_{arrow_data["name"]}", + "type": "minecraft:condition", + "property": "minecraft:component", + "predicate": "minecraft:enchantments", + "value": [ + { + "enchantments": "minecraft:multishot" + } + ], + "on_true": { + "type": "minecraft:model", + "model": f"{multishot_namespace}:item/crossbow_{arrow_data["name"]}_multishot", + }, + "on_false": { + "type": "minecraft:model", + "model": f"{namespace}:item/crossbow_{arrow_data["name"]}", + } }, "when": arrow_data["item"] } if arrow_data["tint"] is not None: - model["model"]["tints"] = [{"type": "real_arrow_tip:projectile", "default": arrow_data["tint"]}] + model["model"]["on_true"]["tints"] = [{"type": "real_arrow_tip:projectile", "default": arrow_data["tint"]}] + model["model"]["on_false"]["tints"] = [{"type": "real_arrow_tip:projectile", "default": arrow_data["tint"]}] return model @@ -127,22 +142,7 @@ def create_crossbow(): "model": { "type": "minecraft:select", "property": "real_arrow_tip:charge_type", - "cases": [ - { - "model": { - "type": "minecraft:model", - "model": "minecraft:item/crossbow_arrow" - }, - "when": "minecraft:arrow" - }, - { - "model": { - "type": "minecraft:model", - "model": "minecraft:item/crossbow_firework" - }, - "when": "minecraft:firework_rocket" - } - ], + "cases": [], "fallback": { "type": "minecraft:condition", "property": "minecraft:using_item", @@ -178,8 +178,13 @@ def create_crossbow(): } } + arrow_json = generate_crossbow_arrow_json({"item": "minecraft:arrow", "name": "arrow", "tint": None}, "minecraft","real_arrow_tip") + json_structure["model"]["cases"].append(arrow_json) + arrow_json = generate_crossbow_arrow_json({"item": "minecraft:firework_rocket", "name": "firework", "tint": None}, "minecraft","real_arrow_tip") + json_structure["model"]["cases"].append(arrow_json) + for arrow in ARROW_TYPES: - arrow_json = generate_crossbow_arrow_json(arrow) + arrow_json = generate_crossbow_arrow_json(arrow, "real_arrow_tip","real_arrow_tip") if arrow_json: json_structure["model"]["cases"].append(arrow_json) diff --git a/src/main/resources/assets/minecraft/items/crossbow.json b/src/main/resources/assets/minecraft/items/crossbow.json index 9c2983f..9d5e667 100644 --- a/src/main/resources/assets/minecraft/items/crossbow.json +++ b/src/main/resources/assets/minecraft/items/crossbow.json @@ -5,35 +5,97 @@ "cases": [ { "model": { - "type": "minecraft:model", - "model": "minecraft:item/crossbow_arrow" + "type": "minecraft:condition", + "property": "minecraft:component", + "predicate": "minecraft:enchantments", + "value": [ + { + "enchantments": "minecraft:multishot" + } + ], + "on_true": { + "type": "minecraft:model", + "model": "real_arrow_tip:item/crossbow_arrow_multishot" + }, + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/crossbow_arrow" + } }, "when": "minecraft:arrow" }, { "model": { - "type": "minecraft:model", - "model": "minecraft:item/crossbow_firework" + "type": "minecraft:condition", + "property": "minecraft:component", + "predicate": "minecraft:enchantments", + "value": [ + { + "enchantments": "minecraft:multishot" + } + ], + "on_true": { + "type": "minecraft:model", + "model": "real_arrow_tip:item/crossbow_firework_multishot" + }, + "on_false": { + "type": "minecraft:model", + "model": "minecraft:item/crossbow_firework" + } }, "when": "minecraft:firework_rocket" }, { "model": { - "type": "minecraft:model", - "model": "real_arrow_tip:item/crossbow_spectral" + "type": "minecraft:condition", + "property": "minecraft:component", + "predicate": "minecraft:enchantments", + "value": [ + { + "enchantments": "minecraft:multishot" + } + ], + "on_true": { + "type": "minecraft:model", + "model": "real_arrow_tip:item/crossbow_spectral_multishot" + }, + "on_false": { + "type": "minecraft:model", + "model": "real_arrow_tip:item/crossbow_spectral" + } }, "when": "minecraft:spectral_arrow" }, { "model": { - "type": "minecraft:model", - "model": "real_arrow_tip:item/crossbow_tipped", - "tints": [ + "type": "minecraft:condition", + "property": "minecraft:component", + "predicate": "minecraft:enchantments", + "value": [ { - "type": "real_arrow_tip:projectile", - "default": -13083194 + "enchantments": "minecraft:multishot" } - ] + ], + "on_true": { + "type": "minecraft:model", + "model": "real_arrow_tip:item/crossbow_tipped_multishot", + "tints": [ + { + "type": "real_arrow_tip:projectile", + "default": -13083194 + } + ] + }, + "on_false": { + "type": "minecraft:model", + "model": "real_arrow_tip:item/crossbow_tipped", + "tints": [ + { + "type": "real_arrow_tip:projectile", + "default": -13083194 + } + ] + } }, "when": "minecraft:tipped_arrow" } diff --git a/src/main/resources/assets/real_arrow_tip/models/item/crossbow_arrow_multishot.json b/src/main/resources/assets/real_arrow_tip/models/item/crossbow_arrow_multishot.json new file mode 100644 index 0000000..989910e --- /dev/null +++ b/src/main/resources/assets/real_arrow_tip/models/item/crossbow_arrow_multishot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/crossbow", + "textures": { + "layer0": "real_arrow_tip:item/crossbow_arrow_multishot" + } +} diff --git a/src/main/resources/assets/real_arrow_tip/models/item/crossbow_firework_multishot.json b/src/main/resources/assets/real_arrow_tip/models/item/crossbow_firework_multishot.json new file mode 100644 index 0000000..e0283c4 --- /dev/null +++ b/src/main/resources/assets/real_arrow_tip/models/item/crossbow_firework_multishot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/crossbow", + "textures": { + "layer0": "real_arrow_tip:item/crossbow_firework_multishot" + } +} diff --git a/src/main/resources/assets/real_arrow_tip/models/item/crossbow_spectral_multishot.json b/src/main/resources/assets/real_arrow_tip/models/item/crossbow_spectral_multishot.json new file mode 100644 index 0000000..f8eb7dd --- /dev/null +++ b/src/main/resources/assets/real_arrow_tip/models/item/crossbow_spectral_multishot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/crossbow", + "textures": { + "layer0": "real_arrow_tip:item/crossbow_spectral_multishot" + } +} diff --git a/src/main/resources/assets/real_arrow_tip/models/item/crossbow_tipped_multishot.json b/src/main/resources/assets/real_arrow_tip/models/item/crossbow_tipped_multishot.json new file mode 100644 index 0000000..86ffde5 --- /dev/null +++ b/src/main/resources/assets/real_arrow_tip/models/item/crossbow_tipped_multishot.json @@ -0,0 +1,7 @@ +{ + "parent": "item/crossbow", + "textures": { + "layer0": "real_arrow_tip:item/crossbow_tipped_head_multishot", + "layer1": "real_arrow_tip:item/crossbow_tipped_base_multishot" + } +} diff --git a/src/main/resources/assets/real_arrow_tip/textures/item/crossbow_arrow_multishot.png b/src/main/resources/assets/real_arrow_tip/textures/item/crossbow_arrow_multishot.png new file mode 100644 index 0000000000000000000000000000000000000000..6c7a01956e8d001402dab3b9cd6ade75b33af841 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU}L6gs3JzBNhH(U8`=f-KnZw^ZHigcFsq(XS;U_+-MA5b^6YkMos<=Nx6Bi*aPD2 zT-YLBreBY(JMemfinT`PgIm+4H8Z?PeLOq6T21`Gm8`Rt&!+^}?QYoHpRV}h_LV}L iry@QUcvA}y_N=Ig5`m@6*sp)Fvo!mFfeV5Y#WCB-Q&r6MoH=C^&)A_fKq zg_0mYkOLUN;6HZo@MUl*0|UciPZ!4!iK)KlFY+-d^0-`->Txb(j!w8Kr2Xap|4R)Q zE9Cu+_?^#aHcJ{ab_iV$kX9Fb>FO{g`o@lHWmAGuoK{;tJ@BWdY)-M0W_xb(XN9N( zG0xAtdtbv*3FX6{|z#Kx24?RXSkgG;>O=5rU{!DIxqh0^5XcDcHXOZ zZ6=CXo|j0z^H?ta8Ry>h$pz=)f_gr@eK$w+H}ipNk44ofy`glX=O&z$E19 z;uvDlTRZ8z_vJ*HWX8Wqa(NQrtsh-qx?NmL;{zKa||~_SD+EI({Deyz{TW+RSh7f8eDx zHR;{c=zr50->-_ZmlR=8p6__4Jt~{G-$QMB>hgfHhGRe7KI$u*>u(C(5@|0fqCEfL zZRt;mQK9T?6;`oVf-kEnUt|zSNWRauK>tnp>J0O}C#v^7=lgYCojoqP>Ui(PYMY3t zlxJs`1xHv}IkG=4`g)3WZ?J~7{&$I=Jj)-xnS8zG&z$tzn{IB)*;o^JQd}!&b#9-# zYrCh~^rO7x$E;>ZbQ?%sX4u83Cd4@<=&Y`Z8OX}>&wu<}e1K)*tQL+9o>tE5rv_@2EwA^E-=`(vgJ8-kK* zG_HgtNw7V3R&;-~&@S?_2uROEBy=}gySkEWL-AJU2~pQ}_p zB}k&};hLGP>2G9ZlA}TeMP=RU)?cYxaqrMel`0>GXPc+JQU+h}tZ%Kt>*C_lnXaDeFCj0)7Gf)uo15#QEii4`G*=^DGX-u2 z1_quxUSAm)7z9g#{DS|Z0S48zGm{t?7)m@{9780ghMvF8$E?V~azXHQ>VjQ={$Do} zGrK$K$ALl~rh1W2F3cj1O_o`rf_Ds_t=<~8=eV$RvBr7Vrt=FG#Tr&=a(+tlV#xY9 zMZPBW71spg2CGu{MIrn*t3UpUxUhTX%}uG|{)_Is{?H_FK3DS(yZT>d!B5;PUvnKl R#=yY9;OXk;vd$@?2>^OxXE^`> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/real_arrow_tip/textures/item/crossbow_tipped_head_multishot.png b/src/main/resources/assets/real_arrow_tip/textures/item/crossbow_tipped_head_multishot.png new file mode 100644 index 0000000000000000000000000000000000000000..07c3f2b02280b7770dd6b0b35763e035920f947e GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU