diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..359bb53 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..8f906a9 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +幸存者军火库 \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..f1afc85 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..7ba73c2 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..f6bff08 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/幸存者军火库.iml b/.idea/幸存者军火库.iml new file mode 100644 index 0000000..728ddb5 --- /dev/null +++ b/.idea/幸存者军火库.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_beans.json b/_sa_food_models/01_罐头食品/canned_beans.json new file mode 100644 index 0000000..184f19f --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_beans.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_beans" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_beans_open.json b/_sa_food_models/01_罐头食品/canned_beans_open.json new file mode 100644 index 0000000..240ff22 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_beans_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_beans", + "particle": "sa_combat:item/canned_foods/canned_beans_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_carrots.json b/_sa_food_models/01_罐头食品/canned_carrots.json new file mode 100644 index 0000000..3e4571d --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_carrots.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_carrots" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_carrots_open.json b/_sa_food_models/01_罐头食品/canned_carrots_open.json new file mode 100644 index 0000000..555d36a --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_carrots_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_carrots", + "particle": "sa_combat:item/canned_foods/canned_carrots_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_chilli.json b/_sa_food_models/01_罐头食品/canned_chilli.json new file mode 100644 index 0000000..65b0c9f --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_chilli.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_chilli" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_chilli_open.json b/_sa_food_models/01_罐头食品/canned_chilli_open.json new file mode 100644 index 0000000..3ad84de --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_chilli_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_chilli", + "particle": "sa_combat:item/canned_foods/canned_chilli_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_corn.json b/_sa_food_models/01_罐头食品/canned_corn.json new file mode 100644 index 0000000..1e50456 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_corn.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_corn" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_corn_open.json b/_sa_food_models/01_罐头食品/canned_corn_open.json new file mode 100644 index 0000000..4dfd256 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_corn_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_corn", + "particle": "sa_combat:item/canned_foods/canned_corn_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_corned_beef.json b/_sa_food_models/01_罐头食品/canned_corned_beef.json new file mode 100644 index 0000000..6e58d0f --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_corned_beef.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/canned_foods/canned_corned_beef", + "particle": "sa_combat:item/canned_foods/canned_corned_beef" + }, + "elements": [ + { + "from": [9.31492, 13.44415, 7], + "to": [11.31492, 13.44415, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "west": {"uv": [1, 0, 0, 0], "texture": "#2"}, + "up": {"uv": [11, 3, 10, 2], "rotation": 90, "texture": "#2"}, + "down": {"uv": [11, 3, 10, 4], "rotation": 270, "texture": "#2"} + } + }, + { + "from": [3, 10, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "up": {"uv": [10, 3, 5, 0], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 5, 4.5], "texture": "#2"}, + "east": {"uv": [5, 9, 8, 13.5], "texture": "#2"}, + "south": {"uv": [0, 4.5, 5, 9], "texture": "#2"}, + "west": {"uv": [8, 9, 5, 13.5], "texture": "#2"}, + "up": {"uv": [5, 12, 0, 9], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 9, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 1, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 1], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 2], "texture": "#2"}, + "up": {"uv": [10, 6, 5, 3], "texture": "#2"}, + "down": {"uv": [10, 6, 5, 9], "texture": "#2"} + } + }, + { + "name": "cube inverted", + "from": [13, 10, 11], + "to": [3, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 1, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 2, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 0], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 1], "texture": "#2"}, + "up": {"uv": [5, 6, 10, 9], "texture": "#2"}, + "down": {"uv": [5, 6, 10, 3], "texture": "#2"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_corned_beef_open.json b/_sa_food_models/01_罐头食品/canned_corned_beef_open.json new file mode 100644 index 0000000..0485ebc --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_corned_beef_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/canned_foods/canned_corned_beef", + "particle": "sa_combat:item/canned_foods/canned_corned_beef_p" + }, + "elements": [ + { + "from": [6.44415, 1.68508, 7], + "to": [6.44415, 3.68508, 9], + "rotation": {"angle": -45, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "rotation": 270, "texture": "#2"}, + "east": {"uv": [11, 3, 10, 2], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 0, 1, 0], "rotation": 90, "texture": "#2"}, + "west": {"uv": [11, 3, 10, 4], "texture": "#2"}, + "up": {"uv": [1, 0, 0, 0], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 1, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [3, 10, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 5, 0], "rotation": 270, "texture": "#2"}, + "east": {"uv": [10, 3, 5, 0], "rotation": 90, "texture": "#2"}, + "south": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"}, + "west": {"uv": [10, 0, 5, 3], "rotation": 90, "texture": "#2"}, + "up": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 5, 4.5], "texture": "#2"}, + "east": {"uv": [5, 9, 8, 13.5], "texture": "#2"}, + "south": {"uv": [0, 4.5, 5, 9], "texture": "#2"}, + "west": {"uv": [8, 9, 5, 13.5], "texture": "#2"}, + "up": {"uv": [5, 12, 0, 9], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 9, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 1, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 1], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 2], "texture": "#2"}, + "up": {"uv": [10, 6, 5, 3], "texture": "#2"}, + "down": {"uv": [10, 6, 5, 9], "texture": "#2"} + } + }, + { + "name": "cube inverted", + "from": [13, 10, 11], + "to": [3, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 1, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 2, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 0], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 1], "texture": "#2"}, + "up": {"uv": [5, 6, 10, 9], "texture": "#2"}, + "down": {"uv": [5, 6, 10, 3], "texture": "#2"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_dog_food.json b/_sa_food_models/01_罐头食品/canned_dog_food.json new file mode 100644 index 0000000..4855a4d --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_dog_food.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_dog_food" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_dog_food_open.json b/_sa_food_models/01_罐头食品/canned_dog_food_open.json new file mode 100644 index 0000000..bed94e1 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_dog_food_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_dog_food", + "particle": "sa_combat:item/canned_foods/canned_chilli_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [6, 0, 3, 4.5], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_evaporated_milk.json b/_sa_food_models/01_罐头食品/canned_evaporated_milk.json new file mode 100644 index 0000000..eaeff6a --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_evaporated_milk.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_evaporated_milk" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_evaporated_milk_open.json b/_sa_food_models/01_罐头食品/canned_evaporated_milk_open.json new file mode 100644 index 0000000..7fdf925 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_evaporated_milk_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_evaporated_milk", + "particle": "sa_combat:item/canned_foods/canned_evaporated_milk_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_fruit_beverage.json b/_sa_food_models/01_罐头食品/canned_fruit_beverage.json new file mode 100644 index 0000000..6295262 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_fruit_beverage.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/canned_foods/fruit_beverage", + "particle": "sa_combat:item/canned_foods/fruit_beverage" + }, + "elements": [ + { + "from": [9.31492, 13.44415, 7], + "to": [11.31492, 13.44415, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "west": {"uv": [1, 0, 0, 0], "texture": "#2"}, + "up": {"uv": [11, 3, 10, 2], "rotation": 90, "texture": "#2"}, + "down": {"uv": [11, 3, 10, 4], "rotation": 270, "texture": "#2"} + } + }, + { + "from": [3, 10, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "up": {"uv": [10, 3, 5, 0], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 5, 4.5], "texture": "#2"}, + "east": {"uv": [5, 9, 8, 13.5], "texture": "#2"}, + "south": {"uv": [0, 4.5, 5, 9], "texture": "#2"}, + "west": {"uv": [8, 9, 5, 13.5], "texture": "#2"}, + "up": {"uv": [5, 12, 0, 9], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 9, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 1, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 1], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 2], "texture": "#2"}, + "up": {"uv": [10, 6, 5, 3], "texture": "#2"}, + "down": {"uv": [10, 6, 5, 9], "texture": "#2"} + } + }, + { + "name": "cube inverted", + "from": [13, 10, 11], + "to": [3, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 1, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 2, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 0], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 1], "texture": "#2"}, + "up": {"uv": [5, 6, 10, 9], "texture": "#2"}, + "down": {"uv": [5, 6, 10, 3], "texture": "#2"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_fruit_beverage_open.json b/_sa_food_models/01_罐头食品/canned_fruit_beverage_open.json new file mode 100644 index 0000000..cc7137f --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_fruit_beverage_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/canned_foods/fruit_beverage", + "particle": "sa_combat:item/canned_foods/fruit_beverage_open" + }, + "elements": [ + { + "from": [6.44415, 1.68508, 7], + "to": [6.44415, 3.68508, 9], + "rotation": {"angle": -45, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "rotation": 270, "texture": "#2"}, + "east": {"uv": [11, 3, 10, 2], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 0, 1, 0], "rotation": 90, "texture": "#2"}, + "west": {"uv": [11, 3, 10, 4], "texture": "#2"}, + "up": {"uv": [1, 0, 0, 0], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 1, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [3, 10, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 5, 0], "rotation": 270, "texture": "#2"}, + "east": {"uv": [10, 3, 5, 0], "rotation": 90, "texture": "#2"}, + "south": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"}, + "west": {"uv": [10, 0, 5, 3], "rotation": 90, "texture": "#2"}, + "up": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 5, 4.5], "texture": "#2"}, + "east": {"uv": [5, 9, 8, 13.5], "texture": "#2"}, + "south": {"uv": [0, 4.5, 5, 9], "texture": "#2"}, + "west": {"uv": [8, 9, 5, 13.5], "texture": "#2"}, + "up": {"uv": [5, 12, 0, 9], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 9, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 1, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 1], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 2], "texture": "#2"}, + "up": {"uv": [10, 6, 5, 3], "texture": "#2"}, + "down": {"uv": [10, 6, 5, 9], "texture": "#2"} + } + }, + { + "name": "cube inverted", + "from": [13, 10, 11], + "to": [3, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 1, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 2, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 0], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 1], "texture": "#2"}, + "up": {"uv": [5, 6, 10, 9], "texture": "#2"}, + "down": {"uv": [5, 6, 10, 3], "texture": "#2"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_fruit_cocktail.json b/_sa_food_models/01_罐头食品/canned_fruit_cocktail.json new file mode 100644 index 0000000..d45ab68 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_fruit_cocktail.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_fruit_cocktail" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_fruit_cocktail_open.json b/_sa_food_models/01_罐头食品/canned_fruit_cocktail_open.json new file mode 100644 index 0000000..375587f --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_fruit_cocktail_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_fruit_cocktail", + "particle": "sa_combat:item/canned_foods/canned_fruit_cocktail_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_mushroom_soup.json b/_sa_food_models/01_罐头食品/canned_mushroom_soup.json new file mode 100644 index 0000000..b9294cd --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_mushroom_soup.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_mushroom_soup" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_mushroom_soup_open.json b/_sa_food_models/01_罐头食品/canned_mushroom_soup_open.json new file mode 100644 index 0000000..72c835a --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_mushroom_soup_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_mushroom_soup", + "particle": "sa_combat:item/canned_foods/canned_mushroom_soup_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_peaches.json b/_sa_food_models/01_罐头食品/canned_peaches.json new file mode 100644 index 0000000..b9294cd --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_peaches.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_mushroom_soup" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_peaches_open.json b/_sa_food_models/01_罐头食品/canned_peaches_open.json new file mode 100644 index 0000000..61c0633 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_peaches_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_peaches", + "particle": "sa_combat:item/canned_foods/canned_peaches_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [3, 0, 6, 4.5], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [6, 0, 3, 4.5], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_peas.json b/_sa_food_models/01_罐头食品/canned_peas.json new file mode 100644 index 0000000..d45ab68 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_peas.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_fruit_cocktail" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_peas_open.json b/_sa_food_models/01_罐头食品/canned_peas_open.json new file mode 100644 index 0000000..b8a0a89 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_peas_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_peas", + "particle": "sa_combat:item/canned_foods/canned_peas_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_pineapple.json b/_sa_food_models/01_罐头食品/canned_pineapple.json new file mode 100644 index 0000000..5a02183 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_pineapple.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_pineapple" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_pineapple_open.json b/_sa_food_models/01_罐头食品/canned_pineapple_open.json new file mode 100644 index 0000000..1991764 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_pineapple_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_pineapple", + "particle": "sa_combat:item/canned_foods/canned_pineapple_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_potato.json b/_sa_food_models/01_罐头食品/canned_potato.json new file mode 100644 index 0000000..2c96b77 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_potato.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_potato" + }, + "elements": [ + { + "from": [7, 11.91342, 6.3806], + "to": [9, 11.91342, 8.3806], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "up": {"uv": [3, 9, 4, 10], "texture": "#1"}, + "down": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 3, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_potato_open.json b/_sa_food_models/01_罐头食品/canned_potato_open.json new file mode 100644 index 0000000..fa67efe --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_potato_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_potato", + "particle": "sa_combat:item/canned_foods/canned_pineapple_p" + }, + "elements": [ + { + "from": [7, 8.08658, 13.6194], + "to": [9, 8.08658, 15.6194], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [1, 0, 0, 0], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "rotation": 270, "texture": "#1"}, + "south": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "rotation": 90, "texture": "#1"}, + "up": {"uv": [9, 2, 10, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [3, 9, 4, 10], "texture": "#1"} + } + }, + { + "from": [5, 10, 11], + "to": [11, 10, 17], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 11]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "rotation": 180, "texture": "#1"}, + "east": {"uv": [0, 0, 0, 3], "rotation": 270, "texture": "#1"}, + "south": {"uv": [0, 3, 0, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 3], "rotation": 90, "texture": "#1"}, + "up": {"uv": [6, 0, 9, 3], "rotation": 180, "texture": "#1"}, + "down": {"uv": [9, 3, 6, 0], "texture": "#1"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.5], "texture": "#1"}, + "east": {"uv": [6, 4.5, 3, 9], "texture": "#1"}, + "south": {"uv": [0, 4.5, 3, 9], "texture": "#1"}, + "west": {"uv": [3, 4.5, 6, 9], "texture": "#1"}, + "up": {"uv": [3, 12, 0, 9], "texture": "#1"}, + "down": {"uv": [6, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [5, 9, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 0, 12, 0.5], "texture": "#1"}, + "east": {"uv": [9, 0.5, 12, 1], "texture": "#1"}, + "south": {"uv": [9, 1, 12, 1.5], "texture": "#1"}, + "west": {"uv": [9, 1.5, 12, 2], "texture": "#1"}, + "up": {"uv": [9, 6, 6, 3], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 9], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [11, 10, 11], + "to": [5, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [9, 1.5, 12, 1], "texture": "#1"}, + "east": {"uv": [9, 2, 12, 1.5], "texture": "#1"}, + "south": {"uv": [9, 0.5, 12, 0], "texture": "#1"}, + "west": {"uv": [9, 1, 12, 0.5], "texture": "#1"}, + "up": {"uv": [9, 9, 6, 6], "texture": "#1"}, + "down": {"uv": [9, 6, 6, 3], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4.75, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_sardines.json b/_sa_food_models/01_罐头食品/canned_sardines.json new file mode 100644 index 0000000..26bb5bd --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_sardines.json @@ -0,0 +1,149 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_sardines", + "particle": "sa_combat:item/canned_foods/canned_sardines_p" + }, + "elements": [ + { + "from": [8.81492, 7.94415, 7], + "to": [10.81492, 7.94415, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [10.31492, 9.44415, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 0], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 0], "texture": "#1"}, + "west": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "up": {"uv": [3.5, 7, 2.5, 6], "texture": "#1"}, + "down": {"uv": [4.5, 6, 3.5, 7], "texture": "#1"} + } + }, + { + "from": [3, 5, 5], + "to": [8, 5, 11], + "rotation": {"angle": 0, "axis": "z", "origin": [3, 6, 8]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "east": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "south": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "up": {"uv": [2.5, 9, 0, 6], "texture": "#1"}, + "down": {"uv": [0, 6, 2.5, 9], "texture": "#1"} + } + }, + { + "from": [8, 5, 5], + "to": [13, 5, 11], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 5, 8]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "east": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "south": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "up": {"uv": [0, 6, 2.5, 9], "texture": "#1"}, + "down": {"uv": [0, 6, 2.5, 9], "texture": "#1"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 4, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [5, 3, 10, 5], "texture": "#1"}, + "east": {"uv": [2.5, 7, 5.5, 9], "texture": "#1"}, + "south": {"uv": [5, 5, 10, 7], "texture": "#1"}, + "west": {"uv": [5.5, 7, 2.5, 9], "texture": "#1"}, + "up": {"uv": [10, 3, 5, 0], "texture": "#1"}, + "down": {"uv": [2, 9, 7, 12], "texture": "#1"} + } + }, + { + "from": [3, 4, 5], + "to": [13, 5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 8.5, 9]}, + "faces": { + "north": {"uv": [5.5, 7, 10.5, 7.5], "texture": "#1"}, + "east": {"uv": [5.5, 8, 8.5, 8.5], "texture": "#1"}, + "south": {"uv": [5.5, 7.5, 10.5, 8], "texture": "#1"}, + "west": {"uv": [5.5, 8.5, 8.5, 9], "texture": "#1"}, + "up": {"uv": [5, 3, 0, 0], "texture": "#1"}, + "down": {"uv": [5, 3, 0, 6], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [13, 5, 11], + "to": [3, 4, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 8.5, 9]}, + "faces": { + "north": {"uv": [5.5, 8, 10.5, 7.5], "texture": "#1"}, + "east": {"uv": [5.5, 9, 8.5, 8.5], "texture": "#1"}, + "south": {"uv": [5.5, 7.5, 10.5, 7], "texture": "#1"}, + "west": {"uv": [5.5, 8.5, 8.5, 8], "texture": "#1"}, + "up": {"uv": [5, 6, 0, 3], "texture": "#1"}, + "down": {"uv": [5, 3, 0, 0], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [1.25, 4.75, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + }, + 3, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [4, 5] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_spaghetti_bolognese.json b/_sa_food_models/01_罐头食品/canned_spaghetti_bolognese.json new file mode 100644 index 0000000..3ed4147 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_spaghetti_bolognese.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/canned_foods/canned_spaghetti_bolognese", + "particle": "sa_combat:item/canned_foods/canned_spaghetti_bolognese" + }, + "elements": [ + { + "from": [9.31492, 13.44415, 7], + "to": [11.31492, 13.44415, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "west": {"uv": [1, 0, 0, 0], "texture": "#2"}, + "up": {"uv": [11, 3, 10, 2], "rotation": 90, "texture": "#2"}, + "down": {"uv": [11, 3, 10, 4], "rotation": 270, "texture": "#2"} + } + }, + { + "from": [3, 10, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "up": {"uv": [10, 3, 5, 0], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 5, 4.5], "texture": "#2"}, + "east": {"uv": [5, 9, 8, 13.5], "texture": "#2"}, + "south": {"uv": [0, 4.5, 5, 9], "texture": "#2"}, + "west": {"uv": [8, 9, 5, 13.5], "texture": "#2"}, + "up": {"uv": [5, 12, 0, 9], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 9, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 1, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 1], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 2], "texture": "#2"}, + "up": {"uv": [10, 6, 5, 3], "texture": "#2"}, + "down": {"uv": [10, 6, 5, 9], "texture": "#2"} + } + }, + { + "name": "cube inverted", + "from": [13, 10, 11], + "to": [3, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 1, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 2, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 0], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 1], "texture": "#2"}, + "up": {"uv": [5, 6, 10, 9], "texture": "#2"}, + "down": {"uv": [5, 6, 10, 3], "texture": "#2"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_spaghetti_bolognese_open.json b/_sa_food_models/01_罐头食品/canned_spaghetti_bolognese_open.json new file mode 100644 index 0000000..3aba8f5 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_spaghetti_bolognese_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/canned_foods/canned_spaghetti_bolognese", + "particle": "sa_combat:item/canned_foods/canned_spaghetti_bolognese_p" + }, + "elements": [ + { + "from": [6.44415, 1.68508, 7], + "to": [6.44415, 3.68508, 9], + "rotation": {"angle": -45, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "rotation": 270, "texture": "#2"}, + "east": {"uv": [11, 3, 10, 2], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 0, 1, 0], "rotation": 90, "texture": "#2"}, + "west": {"uv": [11, 3, 10, 4], "texture": "#2"}, + "up": {"uv": [1, 0, 0, 0], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 1, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [3, 10, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 5, 0], "rotation": 270, "texture": "#2"}, + "east": {"uv": [10, 3, 5, 0], "rotation": 90, "texture": "#2"}, + "south": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"}, + "west": {"uv": [10, 0, 5, 3], "rotation": 90, "texture": "#2"}, + "up": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 5, 4.5], "texture": "#2"}, + "east": {"uv": [5, 9, 8, 13.5], "texture": "#2"}, + "south": {"uv": [0, 4.5, 5, 9], "texture": "#2"}, + "west": {"uv": [8, 9, 5, 13.5], "texture": "#2"}, + "up": {"uv": [5, 12, 0, 9], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 9, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 1, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 1], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 2], "texture": "#2"}, + "up": {"uv": [10, 6, 5, 3], "texture": "#2"}, + "down": {"uv": [10, 6, 5, 9], "texture": "#2"} + } + }, + { + "name": "cube inverted", + "from": [13, 10, 11], + "to": [3, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 1, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 2, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 0], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 1], "texture": "#2"}, + "up": {"uv": [5, 6, 10, 9], "texture": "#2"}, + "down": {"uv": [5, 6, 10, 3], "texture": "#2"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_tuna.json b/_sa_food_models/01_罐头食品/canned_tuna.json new file mode 100644 index 0000000..b5041e1 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_tuna.json @@ -0,0 +1,149 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/canned_foods/canned_tuna", + "particle": "sa_combat:item/canned_foods/canned_chilli_p" + }, + "elements": [ + { + "from": [8.81492, 7.94415, 7], + "to": [10.81492, 7.94415, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [10.31492, 9.44415, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 0], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 0], "texture": "#1"}, + "west": {"uv": [1, 0, 0, 0], "texture": "#1"}, + "up": {"uv": [3.5, 7, 2.5, 6], "texture": "#1"}, + "down": {"uv": [4.5, 6, 3.5, 7], "texture": "#1"} + } + }, + { + "from": [3, 5, 5], + "to": [8, 5, 11], + "rotation": {"angle": 0, "axis": "z", "origin": [3, 6, 8]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "east": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "south": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "up": {"uv": [2.5, 9, 0, 6], "texture": "#1"}, + "down": {"uv": [0, 6, 2.5, 9], "texture": "#1"} + } + }, + { + "from": [8, 5, 5], + "to": [13, 5, 11], + "rotation": {"angle": 45, "axis": "z", "origin": [8, 5, 8]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "east": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "south": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "west": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, + "up": {"uv": [0, 6, 2.5, 9], "texture": "#1"}, + "down": {"uv": [0, 6, 2.5, 9], "texture": "#1"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 4, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [5, 5, 10, 7], "texture": "#1"}, + "east": {"uv": [2.5, 7, 5.5, 9], "texture": "#1"}, + "south": {"uv": [5, 3, 10, 5], "texture": "#1"}, + "west": {"uv": [5.5, 7, 2.5, 9], "texture": "#1"}, + "up": {"uv": [10, 3, 5, 0], "texture": "#1"}, + "down": {"uv": [2, 9, 7, 12], "texture": "#1"} + } + }, + { + "from": [3, 4, 5], + "to": [13, 5, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 8.5, 9]}, + "faces": { + "north": {"uv": [5.5, 7, 10.5, 7.5], "texture": "#1"}, + "east": {"uv": [5.5, 8, 8.5, 8.5], "texture": "#1"}, + "south": {"uv": [5.5, 7.5, 10.5, 8], "texture": "#1"}, + "west": {"uv": [5.5, 8.5, 8.5, 9], "texture": "#1"}, + "up": {"uv": [5, 3, 0, 0], "texture": "#1"}, + "down": {"uv": [5, 3, 0, 6], "texture": "#1"} + } + }, + { + "name": "cube inverted", + "from": [13, 5, 11], + "to": [3, 4, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 8.5, 9]}, + "faces": { + "north": {"uv": [5.5, 8, 10.5, 7.5], "texture": "#1"}, + "east": {"uv": [5.5, 9, 8.5, 8.5], "texture": "#1"}, + "south": {"uv": [5.5, 7.5, 10.5, 7], "texture": "#1"}, + "west": {"uv": [5.5, 8.5, 8.5, 8], "texture": "#1"}, + "up": {"uv": [5, 6, 0, 3], "texture": "#1"}, + "down": {"uv": [5, 3, 0, 0], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [1.25, 4.75, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + }, + 3, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [4, 5] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_vegetable_soup.json b/_sa_food_models/01_罐头食品/canned_vegetable_soup.json new file mode 100644 index 0000000..ebe76ba --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_vegetable_soup.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/canned_foods/canned_vegetable_soup", + "particle": "sa_combat:item/canned_foods/canned_vegetable_soup" + }, + "elements": [ + { + "from": [9.31492, 13.44415, 7], + "to": [11.31492, 13.44415, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 1, 0], "texture": "#2"}, + "west": {"uv": [1, 0, 0, 0], "texture": "#2"}, + "up": {"uv": [11, 3, 10, 2], "rotation": 90, "texture": "#2"}, + "down": {"uv": [11, 3, 10, 4], "rotation": 270, "texture": "#2"} + } + }, + { + "from": [3, 10, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "east": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "south": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "west": {"uv": [0, 0, 5, 0], "texture": "#2"}, + "up": {"uv": [10, 3, 5, 0], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 5, 4.5], "texture": "#2"}, + "east": {"uv": [5, 9, 8, 13.5], "texture": "#2"}, + "south": {"uv": [0, 4.5, 5, 9], "texture": "#2"}, + "west": {"uv": [8, 9, 5, 13.5], "texture": "#2"}, + "up": {"uv": [5, 12, 0, 9], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 9, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 1, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 1], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 2], "texture": "#2"}, + "up": {"uv": [10, 6, 5, 3], "texture": "#2"}, + "down": {"uv": [10, 6, 5, 9], "texture": "#2"} + } + }, + { + "name": "cube inverted", + "from": [13, 10, 11], + "to": [3, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 1, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 2, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 0], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 1], "texture": "#2"}, + "up": {"uv": [5, 6, 10, 9], "texture": "#2"}, + "down": {"uv": [5, 6, 10, 3], "texture": "#2"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/01_罐头食品/canned_vegetable_soup_open.json b/_sa_food_models/01_罐头食品/canned_vegetable_soup_open.json new file mode 100644 index 0000000..8452645 --- /dev/null +++ b/_sa_food_models/01_罐头食品/canned_vegetable_soup_open.json @@ -0,0 +1,136 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/canned_foods/canned_vegetable_soup", + "particle": "sa_combat:item/canned_foods/canned_vegetable_soup_p" + }, + "elements": [ + { + "from": [6.44415, 1.68508, 7], + "to": [6.44415, 3.68508, 9], + "rotation": {"angle": -45, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 0], "rotation": 270, "texture": "#2"}, + "east": {"uv": [11, 3, 10, 2], "rotation": 180, "texture": "#2"}, + "south": {"uv": [0, 0, 1, 0], "rotation": 90, "texture": "#2"}, + "west": {"uv": [11, 3, 10, 4], "texture": "#2"}, + "up": {"uv": [1, 0, 0, 0], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 1, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [3, 10, 11], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 10, 8]}, + "faces": { + "north": {"uv": [0, 0, 5, 0], "rotation": 270, "texture": "#2"}, + "east": {"uv": [10, 3, 5, 0], "rotation": 90, "texture": "#2"}, + "south": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"}, + "west": {"uv": [10, 0, 5, 3], "rotation": 90, "texture": "#2"}, + "up": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"}, + "down": {"uv": [0, 0, 5, 0], "rotation": 90, "texture": "#2"} + } + }, + { + "from": [3, 0, 5], + "to": [13, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 5, 4.5], "texture": "#2"}, + "east": {"uv": [5, 9, 8, 13.5], "texture": "#2"}, + "south": {"uv": [0, 4.5, 5, 9], "texture": "#2"}, + "west": {"uv": [8, 9, 5, 13.5], "texture": "#2"}, + "up": {"uv": [5, 12, 0, 9], "texture": "#2"}, + "down": {"uv": [10, 0, 5, 3], "texture": "#2"} + } + }, + { + "from": [3, 9, 5], + "to": [13, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 0, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 1, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 1], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 2], "texture": "#2"}, + "up": {"uv": [10, 6, 5, 3], "texture": "#2"}, + "down": {"uv": [10, 6, 5, 9], "texture": "#2"} + } + }, + { + "name": "cube inverted", + "from": [13, 10, 11], + "to": [3, 9, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 13.5, 9]}, + "faces": { + "north": {"uv": [10, 1, 15, 0.5], "texture": "#2"}, + "east": {"uv": [10, 2, 13, 1.5], "texture": "#2"}, + "south": {"uv": [10, 0.5, 15, 0], "texture": "#2"}, + "west": {"uv": [10, 1.5, 13, 1], "texture": "#2"}, + "up": {"uv": [5, 6, 10, 9], "texture": "#2"}, + "down": {"uv": [5, 6, 10, 3], "texture": "#2"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 3.25, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 9, 6], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + 2, + { + "name": "group", + "origin": [7, 12.5, 9], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/02_果汁饮料/apple_juice_box.json b/_sa_food_models/02_果汁饮料/apple_juice_box.json new file mode 100644 index 0000000..a7b47a2 --- /dev/null +++ b/_sa_food_models/02_果汁饮料/apple_juice_box.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/apple_juice_box" + } +} \ No newline at end of file diff --git a/_sa_food_models/02_果汁饮料/berry_juice_box.json b/_sa_food_models/02_果汁饮料/berry_juice_box.json new file mode 100644 index 0000000..2ed7aca --- /dev/null +++ b/_sa_food_models/02_果汁饮料/berry_juice_box.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/berry_juice_box" + } +} \ No newline at end of file diff --git a/_sa_food_models/02_果汁饮料/grape_juice_box.json b/_sa_food_models/02_果汁饮料/grape_juice_box.json new file mode 100644 index 0000000..09310ce --- /dev/null +++ b/_sa_food_models/02_果汁饮料/grape_juice_box.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/grape_juice_box" + } +} \ No newline at end of file diff --git a/_sa_food_models/02_果汁饮料/milk_box.json b/_sa_food_models/02_果汁饮料/milk_box.json new file mode 100644 index 0000000..2bc5abb --- /dev/null +++ b/_sa_food_models/02_果汁饮料/milk_box.json @@ -0,0 +1,146 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/milk_box", + "particle": "sa_combat:item/milk_box" + }, + "elements": [ + { + "from": [5, 0, 6], + "to": [11, 10, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -6.5, 8]}, + "faces": { + "north": {"uv": [0, 0, 3, 5], "texture": "#0"}, + "east": {"uv": [0, 5.5, 2, 10.5], "texture": "#0"}, + "south": {"uv": [3.5, 0, 6.5, 5], "texture": "#0"}, + "west": {"uv": [2.5, 5.5, 4.5, 10.5], "texture": "#0"}, + "up": {"uv": [8, 7.5, 5, 5.5], "texture": "#0"}, + "down": {"uv": [10, 0, 7, 2], "texture": "#0"} + } + }, + { + "from": [5, 10, 9], + "to": [11, 12.8, 10], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 10, 10]}, + "faces": { + "north": {"uv": [7, 2.5, 10, 4], "texture": "#0"}, + "east": {"uv": [8.5, 10.5, 9, 12], "texture": "#0"}, + "south": {"uv": [5, 8, 8, 9.5], "texture": "#0"}, + "west": {"uv": [9.5, 10.5, 10, 12], "texture": "#0"}, + "up": {"uv": [13.5, 0.5, 10.5, 0], "texture": "#0"}, + "down": {"uv": [13.5, 1, 10.5, 1.5], "texture": "#0"} + } + }, + { + "from": [5, 10, 6], + "to": [11, 12.8, 7], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 6]}, + "faces": { + "north": {"uv": [8.5, 4.5, 11.5, 6], "texture": "#0"}, + "east": {"uv": [10.5, 10.5, 11, 12], "texture": "#0"}, + "south": {"uv": [8.5, 6.5, 11.5, 8], "texture": "#0"}, + "west": {"uv": [0, 11, 0.5, 12.5], "texture": "#0"}, + "up": {"uv": [13.5, 2.5, 10.5, 2], "texture": "#0"}, + "down": {"uv": [13.5, 3, 10.5, 3.5], "texture": "#0"} + } + }, + { + "from": [7, 10, 5.5], + "to": [9, 11.9, 7], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 10, 6]}, + "faces": { + "north": {"uv": [9.5, 5, 10.5, 6], "texture": "#0"}, + "east": {"uv": [9.5, 5, 10.5, 6], "texture": "#0"}, + "south": {"uv": [9.5, 5, 10.5, 6], "texture": "#0"}, + "west": {"uv": [9.5, 5, 10.5, 6], "texture": "#0"}, + "up": {"uv": [9.5, 5, 10.5, 6], "texture": "#0"}, + "down": {"uv": [9.5, 5, 10.5, 6], "texture": "#0"} + } + }, + { + "from": [5, 10, 8], + "to": [11, 13, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -3.5, 8]}, + "faces": { + "north": {"uv": [8.5, 8.5, 11.5, 10], "texture": "#0"}, + "east": {"uv": [1, 11, 1, 12.5], "texture": "#0"}, + "south": {"uv": [5, 10, 8, 11.5], "texture": "#0"}, + "west": {"uv": [1.5, 11, 1.5, 12.5], "texture": "#0"}, + "up": {"uv": [13.5, 4, 10.5, 4], "texture": "#0"}, + "down": {"uv": [14.5, 10.5, 11.5, 10.5], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-5, 137, 27], + "translation": [0.5, 2, 0], + "scale": [1.02148, 1.02148, 1.02148] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4.75, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [7, 2.5, 8], + "scope": 0, + "color": 0, + "children": [] + }, + { + "name": "group", + "origin": [7, -0.5, 8], + "scope": 0, + "color": 0, + "children": [ + 0, + { + "name": "group", + "origin": [8, 10, 10], + "scope": 0, + "color": 0, + "children": [1, 2, 3, 4] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/02_果汁饮料/milk_gallon.json b/_sa_food_models/02_果汁饮料/milk_gallon.json new file mode 100644 index 0000000..c633a84 --- /dev/null +++ b/_sa_food_models/02_果汁饮料/milk_gallon.json @@ -0,0 +1,124 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/milk_gallon", + "particle": "sa_combat:item/milk_gallon" + }, + "elements": [ + { + "from": [4, 0, 5], + "to": [12, 6, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -7.5, 8]}, + "faces": { + "north": {"uv": [0, 0, 4, 3], "texture": "#0"}, + "east": {"uv": [0, 7, 3, 10], "texture": "#0"}, + "south": {"uv": [0, 3.5, 4, 6.5], "texture": "#0"}, + "west": {"uv": [3.5, 7, 6.5, 10], "texture": "#0"}, + "up": {"uv": [8.5, 3, 4.5, 0], "texture": "#0"}, + "down": {"uv": [8.5, 3.5, 4.5, 6.5], "texture": "#0"} + } + }, + { + "from": [5.7, 7.4, 7], + "to": [8.4, 8.8, 9], + "rotation": {"angle": 45, "axis": "z", "origin": [6.4, 7.8, 8]}, + "faces": { + "north": {"uv": [12.5, 3.5, 14, 4], "texture": "#0"}, + "east": {"uv": [8, 12.5, 9, 13], "texture": "#0"}, + "south": {"uv": [12.5, 4.5, 14, 5], "texture": "#0"}, + "west": {"uv": [0, 13, 1, 13.5], "texture": "#0"}, + "up": {"uv": [4.5, 11.5, 3, 10.5], "texture": "#0"}, + "down": {"uv": [6.5, 10.5, 5, 11.5], "texture": "#0"} + } + }, + { + "from": [4.4, 5.1, 7], + "to": [5.8, 7.8, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5.4, 5.8, 8]}, + "faces": { + "north": {"uv": [6, 12, 6.5, 13.5], "texture": "#0"}, + "east": {"uv": [7, 10.5, 8, 12], "texture": "#0"}, + "south": {"uv": [7, 12.5, 7.5, 14], "texture": "#0"}, + "west": {"uv": [8.5, 10.5, 9.5, 12], "texture": "#0"}, + "up": {"uv": [2, 14, 1.5, 13], "texture": "#0"}, + "down": {"uv": [13.5, 8.5, 13, 9.5], "texture": "#0"} + } + }, + { + "from": [7, 6, 5], + "to": [12, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -7.5, 8]}, + "faces": { + "north": {"uv": [10, 8.5, 12.5, 10.5], "texture": "#0"}, + "east": {"uv": [9, 3.5, 12, 5.5], "texture": "#0"}, + "south": {"uv": [0, 10.5, 2.5, 12.5], "texture": "#0"}, + "west": {"uv": [10, 6, 13, 8], "texture": "#0"}, + "up": {"uv": [9.5, 10, 7, 7], "texture": "#0"}, + "down": {"uv": [11.5, 0, 9, 3], "texture": "#0"} + } + }, + { + "from": [8.6, 8, 7], + "to": [10.6, 11, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7.2, -5.5, 8]}, + "faces": { + "north": {"uv": [10, 11, 11, 12.5], "texture": "#0"}, + "east": {"uv": [11.5, 11, 12.5, 12.5], "texture": "#0"}, + "south": {"uv": [12, 0, 13, 1.5], "texture": "#0"}, + "west": {"uv": [3, 12, 4, 13.5], "texture": "#0"}, + "up": {"uv": [13, 3, 12, 2], "texture": "#0"}, + "down": {"uv": [5.5, 12, 4.5, 13], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [34, 90, 0], + "translation": [0, 0.5, -1], + "scale": [0.77539, 0.77539, 0.77539] + }, + "thirdperson_lefthand": { + "rotation": [34, -90, 0], + "translation": [0, 0.5, -1], + "scale": [0.77539, 0.77539, 0.77539] + }, + "firstperson_righthand": { + "rotation": [-9, 102, 0], + "translation": [0.5, 4.5, 1], + "scale": [0.64063, 0.64063, 0.64063] + }, + "firstperson_lefthand": { + "rotation": [-9, -67, 0], + "translation": [0.5, 4.5, 1], + "scale": [0.64063, 0.64063, 0.64063] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-5, 137, 27], + "translation": [1.5, 3.25, 0], + "scale": [1.28906, 1.28906, 1.28906] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 6.25, 0], + "scale": [1.19727, 1.19727, 1.19727] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2, 3, 4] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/02_果汁饮料/orange_juice_box.json b/_sa_food_models/02_果汁饮料/orange_juice_box.json new file mode 100644 index 0000000..cca7300 --- /dev/null +++ b/_sa_food_models/02_果汁饮料/orange_juice_box.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/orange_juice_box" + } +} \ No newline at end of file diff --git a/_sa_food_models/02_果汁饮料/peach_juice_bottle.json b/_sa_food_models/02_果汁饮料/peach_juice_bottle.json new file mode 100644 index 0000000..b1bcb76 --- /dev/null +++ b/_sa_food_models/02_果汁饮料/peach_juice_bottle.json @@ -0,0 +1,114 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/peach_juice_bottle", + "particle": "sa_combat:item/peach_juice_bottle" + }, + "elements": [ + { + "from": [6, 0, 7], + "to": [10, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 2, 5], "texture": "#2"}, + "east": {"uv": [2, 0, 4, 5], "texture": "#2"}, + "south": {"uv": [4, 0, 6, 5], "texture": "#2"}, + "west": {"uv": [2, 0, 4, 5], "texture": "#2"}, + "up": {"uv": [5.5, 7, 3.5, 5], "texture": "#2"}, + "down": {"uv": [7.5, 5, 5.5, 7], "texture": "#2"} + } + }, + { + "from": [6.4, 0.2, 7.5], + "to": [9.6, 7.2, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "east": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "south": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "west": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "up": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "down": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"} + } + }, + { + "from": [7, 9, 8], + "to": [9, 11, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 7]}, + "faces": { + "north": {"uv": [4, 0, 5, 1], "texture": "#2"}, + "east": {"uv": [4, 0, 5, 1], "texture": "#2"}, + "south": {"uv": [4, 0, 5, 1], "texture": "#2"}, + "west": {"uv": [4, 0, 5, 1], "texture": "#2"}, + "up": {"uv": [8, 1, 7, 0], "texture": "#2"}, + "down": {"uv": [8, 7, 6, 9], "texture": "#2"} + } + }, + { + "from": [6.8, 10.2, 7.8], + "to": [9.2, 11.6, 10.2], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 10.4, 7]}, + "faces": { + "north": {"uv": [7, 4, 8, 4.5], "texture": "#2"}, + "east": {"uv": [7, 4, 8, 4.5], "texture": "#2"}, + "south": {"uv": [7, 4, 8, 4.5], "texture": "#2"}, + "west": {"uv": [7, 4, 8, 4.5], "texture": "#2"}, + "up": {"uv": [7, 3.5, 8, 4.5], "texture": "#2"}, + "down": {"uv": [7, 3.5, 8, 4.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-2, 1, 3], + "scale": [0.73984, 0.73984, 0.73984] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-2, 1, 3], + "scale": [0.73984, 0.73984, 0.73984] + }, + "firstperson_righthand": { + "rotation": [0, 96, 5], + "translation": [0.75, 4, 1.25], + "scale": [0.59531, 0.59531, 0.59531] + }, + "firstperson_lefthand": { + "rotation": [0, 96, 5], + "translation": [0.75, 4, 1.25], + "scale": [0.59531, 0.59531, 0.59531] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [163.78, 14.88, -166.47], + "translation": [0.25, 3.25, 0], + "scale": [1.30978, 1.30978, 1.30978] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "translation": [0, 5.25, 0], + "scale": [1.02734, 1.02734, 1.02734] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 7], + "scope": 0, + "color": 0, + "children": [0, 1, 2, 3] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/02_果汁饮料/pineapple_juice_bottle.json b/_sa_food_models/02_果汁饮料/pineapple_juice_bottle.json new file mode 100644 index 0000000..c376019 --- /dev/null +++ b/_sa_food_models/02_果汁饮料/pineapple_juice_bottle.json @@ -0,0 +1,114 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/pineapple_juice_bottle", + "particle": "sa_combat:item/pineapple_juice_bottle" + }, + "elements": [ + { + "from": [6, 0, 7], + "to": [10, 9, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 2, 5], "texture": "#2"}, + "east": {"uv": [2, 0, 4, 5], "texture": "#2"}, + "south": {"uv": [4, 0, 6, 5], "texture": "#2"}, + "west": {"uv": [2, 0, 4, 5], "texture": "#2"}, + "up": {"uv": [5.5, 7, 3.5, 5], "texture": "#2"}, + "down": {"uv": [7.5, 5, 5.5, 7], "texture": "#2"} + } + }, + { + "from": [6.4, 0.2, 7.5], + "to": [9.6, 7.2, 10.5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "east": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "south": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "west": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "up": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"}, + "down": {"uv": [0.5, 2.5, 1, 3], "texture": "#2"} + } + }, + { + "from": [7, 9, 8], + "to": [9, 11, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 7]}, + "faces": { + "north": {"uv": [4, 0, 5, 1], "texture": "#2"}, + "east": {"uv": [4, 0, 5, 1], "texture": "#2"}, + "south": {"uv": [4, 0, 5, 1], "texture": "#2"}, + "west": {"uv": [4, 0, 5, 1], "texture": "#2"}, + "up": {"uv": [8, 1, 7, 0], "texture": "#2"}, + "down": {"uv": [8, 7, 6, 9], "texture": "#2"} + } + }, + { + "from": [6.8, 10.2, 7.8], + "to": [9.2, 11.6, 10.2], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 10.4, 7]}, + "faces": { + "north": {"uv": [7, 4, 8, 4.5], "texture": "#2"}, + "east": {"uv": [7, 4, 8, 4.5], "texture": "#2"}, + "south": {"uv": [7, 4, 8, 4.5], "texture": "#2"}, + "west": {"uv": [7, 4, 8, 4.5], "texture": "#2"}, + "up": {"uv": [7, 3.5, 8, 4.5], "texture": "#2"}, + "down": {"uv": [7, 3.5, 8, 4.5], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-2, 1, 3], + "scale": [0.73984, 0.73984, 0.73984] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-2, 1, 3], + "scale": [0.73984, 0.73984, 0.73984] + }, + "firstperson_righthand": { + "rotation": [0, 96, 5], + "translation": [0.75, 4, 1.25], + "scale": [0.59531, 0.59531, 0.59531] + }, + "firstperson_lefthand": { + "rotation": [0, 96, 5], + "translation": [0.75, 4, 1.25], + "scale": [0.59531, 0.59531, 0.59531] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [163.78, 14.88, -166.47], + "translation": [0.25, 3.25, 0], + "scale": [1.30978, 1.30978, 1.30978] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "translation": [0, 5.25, 0], + "scale": [1.02734, 1.02734, 1.02734] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 7], + "scope": 0, + "color": 0, + "children": [0, 1, 2, 3] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/03_汽水能量饮料/coffee.json b/_sa_food_models/03_汽水能量饮料/coffee.json new file mode 100644 index 0000000..087f300 --- /dev/null +++ b/_sa_food_models/03_汽水能量饮料/coffee.json @@ -0,0 +1,112 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/coffee", + "particle": "sa_combat:item/coffee" + }, + "elements": [ + { + "from": [6, 0, 6], + "to": [10, 5, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 2, 2.5], "texture": "#0"}, + "east": {"uv": [2.5, 0, 4.5, 2.5], "texture": "#0"}, + "south": {"uv": [0, 3, 2, 5.5], "texture": "#0"}, + "west": {"uv": [2.5, 3, 4.5, 5.5], "texture": "#0"}, + "up": {"uv": [7, 2, 5, 0], "texture": "#0"}, + "down": {"uv": [7, 2.5, 5, 4.5], "texture": "#0"} + } + }, + { + "from": [5.9, 0.9, 5.9], + "to": [10.1, 4.1, 10.1], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [7.5, 5, 9.5, 6.5], "texture": "#0"}, + "east": {"uv": [7.5, 7, 9.5, 8.5], "texture": "#0"}, + "south": {"uv": [0, 8.5, 2, 10], "texture": "#0"}, + "west": {"uv": [2.5, 8.5, 4.5, 10], "texture": "#0"}, + "up": {"uv": [7, 7, 5, 5], "texture": "#0"}, + "down": {"uv": [2, 6, 0, 8], "texture": "#0"} + } + }, + { + "from": [6, 5, 6], + "to": [10, 7, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 7]}, + "faces": { + "north": {"uv": [7.5, 9, 9.5, 10], "texture": "#0"}, + "east": {"uv": [10, 0, 12, 1], "texture": "#0"}, + "south": {"uv": [10, 1.5, 12, 2.5], "texture": "#0"}, + "west": {"uv": [10, 3, 12, 4], "texture": "#0"}, + "up": {"uv": [4.5, 8, 2.5, 6], "texture": "#0"}, + "down": {"uv": [9.5, 0, 7.5, 2], "texture": "#0"} + } + }, + { + "from": [5.8, 4.8, 5.8], + "to": [10.2, 6.2, 10.2], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5, 7]}, + "faces": { + "north": {"uv": [10, 4.5, 12, 5], "texture": "#0"}, + "east": {"uv": [5, 10, 7, 10.5], "texture": "#0"}, + "south": {"uv": [10, 5.5, 12, 6], "texture": "#0"}, + "west": {"uv": [10, 6.5, 12, 7], "texture": "#0"}, + "up": {"uv": [9.5, 4.5, 7.5, 2.5], "texture": "#0"}, + "down": {"uv": [7, 7.5, 5, 9.5], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, -180, 0], + "translation": [-1.5, 1.75, 2.25], + "scale": [0.61523, 0.61523, 0.61523] + }, + "thirdperson_lefthand": { + "rotation": [0, -180, 0], + "translation": [-1.5, 1.75, 2.25], + "scale": [0.61523, 0.61523, 0.61523] + }, + "firstperson_righthand": { + "rotation": [-9, -180, 0], + "translation": [-1, 5.25, 2.5], + "scale": [0.5586, 0.5586, 0.5586] + }, + "firstperson_lefthand": { + "rotation": [-9, -180, 0], + "translation": [-1, 5.25, 2.5], + "scale": [0.5586, 0.5586, 0.5586] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, -125, 16], + "translation": [1, 6, 0], + "scale": [1.39259, 1.39259, 1.39259] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 7.25, 0], + "scale": [1.24219, 1.24219, 1.24219] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 7], + "scope": 0, + "color": 0, + "children": [0, 1, 2, 3] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/03_汽水能量饮料/cola.json b/_sa_food_models/03_汽水能量饮料/cola.json new file mode 100644 index 0000000..df27d23 --- /dev/null +++ b/_sa_food_models/03_汽水能量饮料/cola.json @@ -0,0 +1,163 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/cola" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 6.5, 3, 12.5], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 13, 11]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#1"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#1"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#1"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#1"}, + "up": {"uv": [10, 10, 7, 7], "texture": "#1"}, + "down": {"uv": [13.5, 0, 10.5, 3], "texture": "#1"} + } + }, + { + "from": [7, 13.55, 7.5], + "to": [9, 13.55, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 13.55, 8.5]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#missing"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#missing"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#missing"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#missing"}, + "up": {"uv": [9, 11, 8.5, 10.5], "texture": "#1"}, + "down": {"uv": [9.5, 9, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 11], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [10.5, 3.5, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 12, 7, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 4.5, 13.5, 5], "texture": "#1"}, + "west": {"uv": [7.5, 12, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 8, 12], "texture": "#1"}, + "down": {"uv": [14.5, 12, 11.5, 12], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [5, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [8, 12.5, 8, 13], "texture": "#1"}, + "east": {"uv": [10.5, 5.5, 13.5, 6], "texture": "#1"}, + "south": {"uv": [8.5, 12.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [10.5, 6.5, 13.5, 7], "texture": "#1"}, + "up": {"uv": [9, 15.5, 9, 12.5], "texture": "#1"}, + "down": {"uv": [9.5, 12.5, 9.5, 15.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [11, 13, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [7, 10.5, 10, 11], "texture": "#1"}, + "east": {"uv": [10, 12.5, 10, 13], "texture": "#1"}, + "south": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [10.5, 12.5, 10.5, 13], "texture": "#1"}, + "up": {"uv": [14, 12.5, 11, 12.5], "texture": "#1"}, + "down": {"uv": [3, 13, 0, 13], "texture": "#1"} + } + }, + { + "from": [11, 12, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [3.5, 13, 3.5, 13.5], "texture": "#1"}, + "east": {"uv": [10.5, 8.5, 13.5, 9], "texture": "#1"}, + "south": {"uv": [4, 13, 4, 13.5], "texture": "#1"}, + "west": {"uv": [10.5, 9.5, 13.5, 10], "texture": "#1"}, + "up": {"uv": [4.5, 16, 4.5, 13], "texture": "#1"}, + "down": {"uv": [5, 13, 5, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0, 1.5, 0], + "scale": [1.02812, 1.02812, 1.02812] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0] + }, + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [1, 2, 3, 4, 5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/03_汽水能量饮料/energy_drink.json b/_sa_food_models/03_汽水能量饮料/energy_drink.json new file mode 100644 index 0000000..ef3a975 --- /dev/null +++ b/_sa_food_models/03_汽水能量饮料/energy_drink.json @@ -0,0 +1,163 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/energy_drink" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 6.5, 3, 12.5], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 13, 11]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#1"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#1"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#1"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#1"}, + "up": {"uv": [10, 10, 7, 7], "texture": "#1"}, + "down": {"uv": [13.5, 0, 10.5, 3], "texture": "#1"} + } + }, + { + "from": [7, 13.55, 7.5], + "to": [9, 13.55, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 13.55, 8.5]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#missing"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#missing"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#missing"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#missing"}, + "up": {"uv": [9, 11, 8.5, 10.5], "texture": "#1"}, + "down": {"uv": [9.5, 9, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 11], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [10.5, 3.5, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 12, 7, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 4.5, 13.5, 5], "texture": "#1"}, + "west": {"uv": [7.5, 12, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 8, 12], "texture": "#1"}, + "down": {"uv": [14.5, 12, 11.5, 12], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [5, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [8, 12.5, 8, 13], "texture": "#1"}, + "east": {"uv": [10.5, 5.5, 13.5, 6], "texture": "#1"}, + "south": {"uv": [8.5, 12.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [10.5, 6.5, 13.5, 7], "texture": "#1"}, + "up": {"uv": [9, 15.5, 9, 12.5], "texture": "#1"}, + "down": {"uv": [9.5, 12.5, 9.5, 15.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [11, 13, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [7, 10.5, 10, 11], "texture": "#1"}, + "east": {"uv": [10, 12.5, 10, 13], "texture": "#1"}, + "south": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [10.5, 12.5, 10.5, 13], "texture": "#1"}, + "up": {"uv": [14, 12.5, 11, 12.5], "texture": "#1"}, + "down": {"uv": [3, 13, 0, 13], "texture": "#1"} + } + }, + { + "from": [11, 12, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [3.5, 13, 3.5, 13.5], "texture": "#1"}, + "east": {"uv": [10.5, 8.5, 13.5, 9], "texture": "#1"}, + "south": {"uv": [4, 13, 4, 13.5], "texture": "#1"}, + "west": {"uv": [10.5, 9.5, 13.5, 10], "texture": "#1"}, + "up": {"uv": [4.5, 16, 4.5, 13], "texture": "#1"}, + "down": {"uv": [5, 13, 5, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0, 1.5, 0], + "scale": [1.02812, 1.02812, 1.02812] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0] + }, + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [1, 2, 3, 4, 5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/03_汽水能量饮料/fanta_grape_soda.json b/_sa_food_models/03_汽水能量饮料/fanta_grape_soda.json new file mode 100644 index 0000000..f51c683 --- /dev/null +++ b/_sa_food_models/03_汽水能量饮料/fanta_grape_soda.json @@ -0,0 +1,163 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/fanta_grape_soda" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 6.5, 3, 12.5], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 13, 11]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#1"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#1"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#1"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#1"}, + "up": {"uv": [10, 10, 7, 7], "texture": "#1"}, + "down": {"uv": [13.5, 0, 10.5, 3], "texture": "#1"} + } + }, + { + "from": [7, 13.55, 7.5], + "to": [9, 13.55, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 13.55, 8.5]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#missing"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#missing"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#missing"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#missing"}, + "up": {"uv": [9, 11, 8.5, 10.5], "texture": "#1"}, + "down": {"uv": [9.5, 9, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 11], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [10.5, 3.5, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 12, 7, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 4.5, 13.5, 5], "texture": "#1"}, + "west": {"uv": [7.5, 12, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 8, 12], "texture": "#1"}, + "down": {"uv": [14.5, 12, 11.5, 12], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [5, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [8, 12.5, 8, 13], "texture": "#1"}, + "east": {"uv": [10.5, 5.5, 13.5, 6], "texture": "#1"}, + "south": {"uv": [8.5, 12.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [10.5, 6.5, 13.5, 7], "texture": "#1"}, + "up": {"uv": [9, 15.5, 9, 12.5], "texture": "#1"}, + "down": {"uv": [9.5, 12.5, 9.5, 15.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [11, 13, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [7, 10.5, 10, 11], "texture": "#1"}, + "east": {"uv": [10, 12.5, 10, 13], "texture": "#1"}, + "south": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [10.5, 12.5, 10.5, 13], "texture": "#1"}, + "up": {"uv": [14, 12.5, 11, 12.5], "texture": "#1"}, + "down": {"uv": [3, 13, 0, 13], "texture": "#1"} + } + }, + { + "from": [11, 12, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [3.5, 13, 3.5, 13.5], "texture": "#1"}, + "east": {"uv": [10.5, 8.5, 13.5, 9], "texture": "#1"}, + "south": {"uv": [4, 13, 4, 13.5], "texture": "#1"}, + "west": {"uv": [10.5, 9.5, 13.5, 10], "texture": "#1"}, + "up": {"uv": [4.5, 16, 4.5, 13], "texture": "#1"}, + "down": {"uv": [5, 13, 5, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0, 1.5, 0], + "scale": [1.02812, 1.02812, 1.02812] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0] + }, + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [1, 2, 3, 4, 5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/03_汽水能量饮料/fanta_orange_soda.json b/_sa_food_models/03_汽水能量饮料/fanta_orange_soda.json new file mode 100644 index 0000000..2dcad93 --- /dev/null +++ b/_sa_food_models/03_汽水能量饮料/fanta_orange_soda.json @@ -0,0 +1,163 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/fanta_orange_soda" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 6.5, 3, 12.5], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 13, 11]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#1"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#1"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#1"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#1"}, + "up": {"uv": [10, 10, 7, 7], "texture": "#1"}, + "down": {"uv": [13.5, 0, 10.5, 3], "texture": "#1"} + } + }, + { + "from": [7, 13.55, 7.5], + "to": [9, 13.55, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 13.55, 8.5]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#missing"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#missing"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#missing"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#missing"}, + "up": {"uv": [9, 11, 8.5, 10.5], "texture": "#1"}, + "down": {"uv": [9.5, 9, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 11], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [10.5, 3.5, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 12, 7, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 4.5, 13.5, 5], "texture": "#1"}, + "west": {"uv": [7.5, 12, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 8, 12], "texture": "#1"}, + "down": {"uv": [14.5, 12, 11.5, 12], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [5, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [8, 12.5, 8, 13], "texture": "#1"}, + "east": {"uv": [10.5, 5.5, 13.5, 6], "texture": "#1"}, + "south": {"uv": [8.5, 12.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [10.5, 6.5, 13.5, 7], "texture": "#1"}, + "up": {"uv": [9, 15.5, 9, 12.5], "texture": "#1"}, + "down": {"uv": [9.5, 12.5, 9.5, 15.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [11, 13, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [7, 10.5, 10, 11], "texture": "#1"}, + "east": {"uv": [10, 12.5, 10, 13], "texture": "#1"}, + "south": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [10.5, 12.5, 10.5, 13], "texture": "#1"}, + "up": {"uv": [14, 12.5, 11, 12.5], "texture": "#1"}, + "down": {"uv": [3, 13, 0, 13], "texture": "#1"} + } + }, + { + "from": [11, 12, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [3.5, 13, 3.5, 13.5], "texture": "#1"}, + "east": {"uv": [10.5, 8.5, 13.5, 9], "texture": "#1"}, + "south": {"uv": [4, 13, 4, 13.5], "texture": "#1"}, + "west": {"uv": [10.5, 9.5, 13.5, 10], "texture": "#1"}, + "up": {"uv": [4.5, 16, 4.5, 13], "texture": "#1"}, + "down": {"uv": [5, 13, 5, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0, 1.5, 0], + "scale": [1.02812, 1.02812, 1.02812] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0] + }, + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [1, 2, 3, 4, 5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/03_汽水能量饮料/guarana_soda.json b/_sa_food_models/03_汽水能量饮料/guarana_soda.json new file mode 100644 index 0000000..8d07921 --- /dev/null +++ b/_sa_food_models/03_汽水能量饮料/guarana_soda.json @@ -0,0 +1,163 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/guarana_soda" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 6.5, 3, 12.5], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 13, 11]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#1"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#1"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#1"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#1"}, + "up": {"uv": [10, 10, 7, 7], "texture": "#1"}, + "down": {"uv": [13.5, 0, 10.5, 3], "texture": "#1"} + } + }, + { + "from": [7, 13.55, 7.5], + "to": [9, 13.55, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 13.55, 8.5]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#missing"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#missing"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#missing"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#missing"}, + "up": {"uv": [9, 11, 8.5, 10.5], "texture": "#1"}, + "down": {"uv": [9.5, 9, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 11], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [10.5, 3.5, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 12, 7, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 4.5, 13.5, 5], "texture": "#1"}, + "west": {"uv": [7.5, 12, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 8, 12], "texture": "#1"}, + "down": {"uv": [14.5, 12, 11.5, 12], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [5, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [8, 12.5, 8, 13], "texture": "#1"}, + "east": {"uv": [10.5, 5.5, 13.5, 6], "texture": "#1"}, + "south": {"uv": [8.5, 12.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [10.5, 6.5, 13.5, 7], "texture": "#1"}, + "up": {"uv": [9, 15.5, 9, 12.5], "texture": "#1"}, + "down": {"uv": [9.5, 12.5, 9.5, 15.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [11, 13, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [7, 10.5, 10, 11], "texture": "#1"}, + "east": {"uv": [10, 12.5, 10, 13], "texture": "#1"}, + "south": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [10.5, 12.5, 10.5, 13], "texture": "#1"}, + "up": {"uv": [14, 12.5, 11, 12.5], "texture": "#1"}, + "down": {"uv": [3, 13, 0, 13], "texture": "#1"} + } + }, + { + "from": [11, 12, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [3.5, 13, 3.5, 13.5], "texture": "#1"}, + "east": {"uv": [10.5, 8.5, 13.5, 9], "texture": "#1"}, + "south": {"uv": [4, 13, 4, 13.5], "texture": "#1"}, + "west": {"uv": [10.5, 9.5, 13.5, 10], "texture": "#1"}, + "up": {"uv": [4.5, 16, 4.5, 13], "texture": "#1"}, + "down": {"uv": [5, 13, 5, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0, 1.5, 0], + "scale": [1.02812, 1.02812, 1.02812] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0] + }, + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [1, 2, 3, 4, 5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/03_汽水能量饮料/monster.json b/_sa_food_models/03_汽水能量饮料/monster.json new file mode 100644 index 0000000..b18aa07 --- /dev/null +++ b/_sa_food_models/03_汽水能量饮料/monster.json @@ -0,0 +1,163 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/monster" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 6.5, 3, 12.5], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 13, 11]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#1"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#1"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#1"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#1"}, + "up": {"uv": [10, 10, 7, 7], "texture": "#1"}, + "down": {"uv": [13.5, 0, 10.5, 3], "texture": "#1"} + } + }, + { + "from": [7, 13.55, 7.5], + "to": [9, 13.55, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 13.55, 8.5]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#missing"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#missing"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#missing"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#missing"}, + "up": {"uv": [9, 11, 8.5, 10.5], "texture": "#1"}, + "down": {"uv": [9.5, 9, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 11], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [10.5, 3.5, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 12, 7, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 4.5, 13.5, 5], "texture": "#1"}, + "west": {"uv": [7.5, 12, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 8, 12], "texture": "#1"}, + "down": {"uv": [14.5, 12, 11.5, 12], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [5, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [8, 12.5, 8, 13], "texture": "#1"}, + "east": {"uv": [10.5, 5.5, 13.5, 6], "texture": "#1"}, + "south": {"uv": [8.5, 12.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [10.5, 6.5, 13.5, 7], "texture": "#1"}, + "up": {"uv": [9, 15.5, 9, 12.5], "texture": "#1"}, + "down": {"uv": [9.5, 12.5, 9.5, 15.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [11, 13, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [7, 10.5, 10, 11], "texture": "#1"}, + "east": {"uv": [10, 12.5, 10, 13], "texture": "#1"}, + "south": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [10.5, 12.5, 10.5, 13], "texture": "#1"}, + "up": {"uv": [14, 12.5, 11, 12.5], "texture": "#1"}, + "down": {"uv": [3, 13, 0, 13], "texture": "#1"} + } + }, + { + "from": [11, 12, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [3.5, 13, 3.5, 13.5], "texture": "#1"}, + "east": {"uv": [10.5, 8.5, 13.5, 9], "texture": "#1"}, + "south": {"uv": [4, 13, 4, 13.5], "texture": "#1"}, + "west": {"uv": [10.5, 9.5, 13.5, 10], "texture": "#1"}, + "up": {"uv": [4.5, 16, 4.5, 13], "texture": "#1"}, + "down": {"uv": [5, 13, 5, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0, 1.5, 0], + "scale": [1.02812, 1.02812, 1.02812] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0] + }, + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [1, 2, 3, 4, 5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/03_汽水能量饮料/pepsi.json b/_sa_food_models/03_汽水能量饮料/pepsi.json new file mode 100644 index 0000000..0f81b4d --- /dev/null +++ b/_sa_food_models/03_汽水能量饮料/pepsi.json @@ -0,0 +1,163 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/pepsi" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 6.5, 3, 12.5], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 13, 11]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#1"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#1"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#1"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#1"}, + "up": {"uv": [10, 10, 7, 7], "texture": "#1"}, + "down": {"uv": [13.5, 0, 10.5, 3], "texture": "#1"} + } + }, + { + "from": [7, 13.55, 7.5], + "to": [9, 13.55, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 13.55, 8.5]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#missing"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#missing"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#missing"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#missing"}, + "up": {"uv": [9, 11, 8.5, 10.5], "texture": "#1"}, + "down": {"uv": [9.5, 9, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 11], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [10.5, 3.5, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 12, 7, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 4.5, 13.5, 5], "texture": "#1"}, + "west": {"uv": [7.5, 12, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 8, 12], "texture": "#1"}, + "down": {"uv": [14.5, 12, 11.5, 12], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [5, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [8, 12.5, 8, 13], "texture": "#1"}, + "east": {"uv": [10.5, 5.5, 13.5, 6], "texture": "#1"}, + "south": {"uv": [8.5, 12.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [10.5, 6.5, 13.5, 7], "texture": "#1"}, + "up": {"uv": [9, 15.5, 9, 12.5], "texture": "#1"}, + "down": {"uv": [9.5, 12.5, 9.5, 15.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [11, 13, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [7, 10.5, 10, 11], "texture": "#1"}, + "east": {"uv": [10, 12.5, 10, 13], "texture": "#1"}, + "south": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [10.5, 12.5, 10.5, 13], "texture": "#1"}, + "up": {"uv": [14, 12.5, 11, 12.5], "texture": "#1"}, + "down": {"uv": [3, 13, 0, 13], "texture": "#1"} + } + }, + { + "from": [11, 12, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [3.5, 13, 3.5, 13.5], "texture": "#1"}, + "east": {"uv": [10.5, 8.5, 13.5, 9], "texture": "#1"}, + "south": {"uv": [4, 13, 4, 13.5], "texture": "#1"}, + "west": {"uv": [10.5, 9.5, 13.5, 10], "texture": "#1"}, + "up": {"uv": [4.5, 16, 4.5, 13], "texture": "#1"}, + "down": {"uv": [5, 13, 5, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0, 1.5, 0], + "scale": [1.02812, 1.02812, 1.02812] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0] + }, + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [1, 2, 3, 4, 5, 6] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/04_酒类/beer.json b/_sa_food_models/04_酒类/beer.json new file mode 100644 index 0000000..8b76dba --- /dev/null +++ b/_sa_food_models/04_酒类/beer.json @@ -0,0 +1,106 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/beer", + "particle": "sa_combat:item/beer" + }, + "elements": [ + { + "from": [6.8, 12.5, 6.8], + "to": [9.2, 13.5, 9.2], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 3, 8]}, + "faces": { + "north": {"uv": [8.5, 8, 9.5, 8.5], "texture": "#2"}, + "east": {"uv": [9, 0, 10, 0.5], "texture": "#2"}, + "south": {"uv": [9, 1, 10, 1.5], "texture": "#2"}, + "west": {"uv": [9, 2, 10, 2.5], "texture": "#2"}, + "up": {"uv": [8.5, 6, 7.5, 5], "texture": "#2"}, + "down": {"uv": [6.5, 7.5, 5.5, 8.5], "texture": "#2"} + } + }, + { + "from": [7, 9, 7], + "to": [9, 13, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 2.5, 8]}, + "faces": { + "north": {"uv": [7.5, 0, 8.5, 2], "texture": "#2"}, + "east": {"uv": [2.5, 7.5, 3.5, 9.5], "texture": "#2"}, + "south": {"uv": [7.5, 2.5, 8.5, 4.5], "texture": "#2"}, + "west": {"uv": [4, 7.5, 5, 9.5], "texture": "#2"}, + "up": {"uv": [8.5, 7.5, 7.5, 6.5], "texture": "#2"}, + "down": {"uv": [8, 8, 7, 9], "texture": "#2"} + } + }, + { + "from": [6, 0, 6], + "to": [10, 9, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -6.5, 8]}, + "faces": { + "north": {"uv": [0, 0, 2, 4.5], "texture": "#2"}, + "east": {"uv": [2.5, 0, 4.5, 4.5], "texture": "#2"}, + "south": {"uv": [0, 5, 2, 9.5], "texture": "#2"}, + "west": {"uv": [5, 0, 7, 4.5], "texture": "#2"}, + "up": {"uv": [4.5, 7, 2.5, 5], "texture": "#2"}, + "down": {"uv": [7, 5, 5, 7], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.25, 2, 0], + "scale": [1.21953, 1.21953, 1.21953] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4.5, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + 0, + 1, + { + "name": "group", + "origin": [7, -0.5, 8], + "scope": 0, + "color": 0, + "children": [2] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/04_酒类/duff_beer.json b/_sa_food_models/04_酒类/duff_beer.json new file mode 100644 index 0000000..1cf5e51 --- /dev/null +++ b/_sa_food_models/04_酒类/duff_beer.json @@ -0,0 +1,176 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/duff_beer" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 12, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [0, 0, 3, 6], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 6.5, 3, 12.5], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5.3, 3.3, 4.99], + "to": [10.7, 7.7, 4.99], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 9]}, + "faces": { + "north": {"uv": [8, 12, 12.5, 15.5], "texture": "#1"}, + "east": {"uv": [3.5, 0, 6.5, 6], "texture": "#1"}, + "south": {"uv": [0, 14, 3, 14], "texture": "#1"}, + "west": {"uv": [3.5, 6.5, 6.5, 12.5], "texture": "#1"}, + "up": {"uv": [10, 3, 7, 0], "texture": "#1"}, + "down": {"uv": [10, 3.5, 7, 6.5], "texture": "#1"} + } + }, + { + "from": [5, 13, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "x", "origin": [8, 13, 11]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#1"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#1"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#1"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#1"}, + "up": {"uv": [10, 10, 7, 7], "texture": "#1"}, + "down": {"uv": [13.5, 0, 10.5, 3], "texture": "#1"} + } + }, + { + "from": [7, 13.55, 7.5], + "to": [9, 13.55, 9.5], + "rotation": {"angle": -45, "axis": "x", "origin": [8, 13.55, 8.5]}, + "faces": { + "north": {"uv": [10.5, 10.5, 13.5, 10.5], "texture": "#missing"}, + "east": {"uv": [10.5, 11, 13.5, 11], "texture": "#missing"}, + "south": {"uv": [7, 11.5, 10, 11.5], "texture": "#missing"}, + "west": {"uv": [10.5, 11.5, 13.5, 11.5], "texture": "#missing"}, + "up": {"uv": [9, 11, 8.5, 10.5], "texture": "#1"}, + "down": {"uv": [9.5, 9, 9, 8.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 11], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [10.5, 3.5, 13.5, 4], "texture": "#1"}, + "east": {"uv": [7, 12, 7, 12.5], "texture": "#1"}, + "south": {"uv": [10.5, 4.5, 13.5, 5], "texture": "#1"}, + "west": {"uv": [7.5, 12, 7.5, 12.5], "texture": "#1"}, + "up": {"uv": [11, 12, 8, 12], "texture": "#1"}, + "down": {"uv": [14.5, 12, 11.5, 12], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [5, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [8, 12.5, 8, 13], "texture": "#1"}, + "east": {"uv": [10.5, 5.5, 13.5, 6], "texture": "#1"}, + "south": {"uv": [8.5, 12.5, 8.5, 13], "texture": "#1"}, + "west": {"uv": [10.5, 6.5, 13.5, 7], "texture": "#1"}, + "up": {"uv": [9, 15.5, 9, 12.5], "texture": "#1"}, + "down": {"uv": [9.5, 12.5, 9.5, 15.5], "texture": "#1"} + } + }, + { + "from": [5, 12, 5], + "to": [11, 13, 5], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [7, 10.5, 10, 11], "texture": "#1"}, + "east": {"uv": [10, 12.5, 10, 13], "texture": "#1"}, + "south": {"uv": [10.5, 7.5, 13.5, 8], "texture": "#1"}, + "west": {"uv": [10.5, 12.5, 10.5, 13], "texture": "#1"}, + "up": {"uv": [14, 12.5, 11, 12.5], "texture": "#1"}, + "down": {"uv": [3, 13, 0, 13], "texture": "#1"} + } + }, + { + "from": [11, 12, 5], + "to": [11, 13, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 7.5, 9]}, + "faces": { + "north": {"uv": [3.5, 13, 3.5, 13.5], "texture": "#1"}, + "east": {"uv": [10.5, 8.5, 13.5, 9], "texture": "#1"}, + "south": {"uv": [4, 13, 4, 13.5], "texture": "#1"}, + "west": {"uv": [10.5, 9.5, 13.5, 10], "texture": "#1"}, + "up": {"uv": [4.5, 16, 4.5, 13], "texture": "#1"}, + "down": {"uv": [5, 13, 5, 16], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1, 2.25, 2.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [-1.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0, 1.5, 0], + "scale": [1.02812, 1.02812, 1.02812] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [0, 1] + }, + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [2, 3, 4, 5, 6, 7] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/04_酒类/vodka.json b/_sa_food_models/04_酒类/vodka.json new file mode 100644 index 0000000..fd699df --- /dev/null +++ b/_sa_food_models/04_酒类/vodka.json @@ -0,0 +1,150 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/vodka", + "particle": "sa_combat:item/vodka" + }, + "elements": [ + { + "from": [7, 12, 7], + "to": [9, 15, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4.5, 8]}, + "faces": { + "north": {"uv": [8.5, 0, 9.5, 1.5], "texture": "#0"}, + "east": {"uv": [8.5, 2, 9.5, 3.5], "texture": "#0"}, + "south": {"uv": [8.5, 4, 9.5, 5.5], "texture": "#0"}, + "west": {"uv": [8.5, 6, 9.5, 7.5], "texture": "#0"}, + "up": {"uv": [9.5, 9, 8.5, 8], "texture": "#0"}, + "down": {"uv": [3.5, 9, 2.5, 10], "texture": "#0"} + } + }, + { + "from": [6.9, 12.8, 6.9], + "to": [9.1, 13.2, 9.1], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 4, 8]}, + "faces": { + "north": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "east": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "south": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "west": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "up": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "down": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"} + } + }, + { + "from": [6.9, 14.6, 6.9], + "to": [9.1, 15, 9.1], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.8, 8]}, + "faces": { + "north": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "east": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "south": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "west": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "up": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"}, + "down": {"uv": [11.5, 7.5, 12.5, 8], "texture": "#0"} + } + }, + { + "from": [6.8, 15, 6.8], + "to": [9.2, 16, 9.2], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 5.5, 8]}, + "faces": { + "north": {"uv": [7, 9, 8, 9.5], "texture": "#0"}, + "east": {"uv": [8.5, 9.5, 9.5, 10], "texture": "#0"}, + "south": {"uv": [10, 0, 11, 0.5], "texture": "#0"}, + "west": {"uv": [10, 1, 11, 1.5], "texture": "#0"}, + "up": {"uv": [5, 10, 4, 9], "texture": "#0"}, + "down": {"uv": [6.5, 9, 5.5, 10], "texture": "#0"} + } + }, + { + "from": [5.5, 0, 6], + "to": [10.5, 12, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -6.5, 8]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 6], "texture": "#0"}, + "east": {"uv": [6, 0, 8, 6], "texture": "#0"}, + "south": {"uv": [3, 0, 5.5, 6], "texture": "#0"}, + "west": {"uv": [0, 6.5, 2, 12.5], "texture": "#0"}, + "up": {"uv": [5, 8.5, 2.5, 6.5], "texture": "#0"}, + "down": {"uv": [8, 6.5, 5.5, 8.5], "texture": "#0"} + } + }, + { + "from": [6.5, 1.4, 5.99], + "to": [9.5, 3.2, 5.99], + "rotation": {"angle": 0, "axis": "y", "origin": [7, -4.3, 8]}, + "faces": { + "north": {"uv": [11.5, 5, 14, 6.5], "texture": "#0"}, + "east": {"uv": [13.5, 0, 15.5, 0], "texture": "#0"}, + "south": {"uv": [13.5, 0, 15.5, 0], "texture": "#0"}, + "west": {"uv": [13.5, 0, 15.5, 0], "texture": "#0"}, + "up": {"uv": [13.5, 0, 15.5, 0], "texture": "#0"}, + "down": {"uv": [13.5, 0, 15.5, 0], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.25, -0.25, 0], + "scale": [1.05937, 1.05937, 1.05937] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4.5, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 4.5, 8], + "scope": 0, + "color": 0, + "children": [ + { + "name": "group", + "origin": [7, 2.5, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2, 3] + }, + { + "name": "group", + "origin": [7, -0.5, 8], + "scope": 0, + "color": 0, + "children": [4, 5] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/04_酒类/whiskey.json b/_sa_food_models/04_酒类/whiskey.json new file mode 100644 index 0000000..751cfac --- /dev/null +++ b/_sa_food_models/04_酒类/whiskey.json @@ -0,0 +1,96 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/whiskey" + }, + "elements": [ + { + "from": [3.7, -0.3, 4.7], + "to": [11.3, 11.1, 10.3], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, 8]}, + "faces": { + "north": {"uv": [0, 0, 4, 5.5], "texture": "#1"}, + "east": {"uv": [0, 6, 3, 11.5], "texture": "#1"}, + "south": {"uv": [4.5, 0, 8.5, 5.5], "texture": "#1"}, + "west": {"uv": [3.5, 6, 6.5, 11.5], "texture": "#1"}, + "up": {"uv": [11, 9, 7, 6], "texture": "#1"}, + "down": {"uv": [13, 0, 9, 3], "texture": "#1"} + } + }, + { + "from": [6.1, 10.4, 6.1], + "to": [8.9, 16.3, 8.9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14.8, 8]}, + "faces": { + "north": {"uv": [7, 9.5, 8.5, 12.5], "texture": "#1"}, + "east": {"uv": [9, 9.5, 10.5, 12.5], "texture": "#1"}, + "south": {"uv": [11, 9.5, 12.5, 12.5], "texture": "#1"}, + "west": {"uv": [11.5, 3.5, 13, 6.5], "texture": "#1"}, + "up": {"uv": [10.5, 5, 9, 3.5], "texture": "#1"}, + "down": {"uv": [13, 7, 11.5, 8.5], "texture": "#1"} + } + }, + { + "from": [5.9, 16, 5.9], + "to": [9.1, 17.4, 9.1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 11.8, 8]}, + "faces": { + "north": {"uv": [4, 12, 5.5, 12.5], "texture": "#1"}, + "east": {"uv": [4, 13, 5.5, 13.5], "texture": "#1"}, + "south": {"uv": [6, 13, 7.5, 13.5], "texture": "#1"}, + "west": {"uv": [8, 13, 9.5, 13.5], "texture": "#1"}, + "up": {"uv": [1.5, 13.5, 0, 12], "texture": "#1"}, + "down": {"uv": [3.5, 12, 2, 13.5], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.36719, 0.36719, 0.36719] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.36719, 0.36719, 0.36719] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.25, 0, 0], + "scale": [0.93047, 0.93047, 0.93047] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4.5, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 8, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/04_酒类/wine.json b/_sa_food_models/04_酒类/wine.json new file mode 100644 index 0000000..c51b2ba --- /dev/null +++ b/_sa_food_models/04_酒类/wine.json @@ -0,0 +1,97 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/wine", + "particle": "sa_combat:item/wine" + }, + "elements": [ + { + "from": [4.8, -0.3, 4.8], + "to": [10.2, 11.1, 10.2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, 8]}, + "faces": { + "north": {"uv": [0, 0, 2.5, 5.5], "texture": "#0"}, + "east": {"uv": [3, 0, 5.5, 5.5], "texture": "#0"}, + "south": {"uv": [0, 6, 2.5, 11.5], "texture": "#0"}, + "west": {"uv": [6, 0, 8.5, 5.5], "texture": "#0"}, + "up": {"uv": [5.5, 8.5, 3, 6], "texture": "#0"}, + "down": {"uv": [8.5, 6, 6, 8.5], "texture": "#0"} + } + }, + { + "from": [6.1, 10.4, 6.1], + "to": [8.9, 17.3, 8.9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14.8, 8]}, + "faces": { + "north": {"uv": [9, 0, 10.5, 3.5], "texture": "#0"}, + "east": {"uv": [3, 9, 4.5, 12.5], "texture": "#0"}, + "south": {"uv": [9, 4, 10.5, 7.5], "texture": "#0"}, + "west": {"uv": [5, 9, 6.5, 12.5], "texture": "#0"}, + "up": {"uv": [8.5, 10.5, 7, 9], "texture": "#0"}, + "down": {"uv": [10.5, 8, 9, 9.5], "texture": "#0"} + } + }, + { + "from": [5.9, 17, 5.9], + "to": [9.1, 18.4, 9.1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 12.8, 8]}, + "faces": { + "north": {"uv": [11, 2, 12.5, 2.5], "texture": "#0"}, + "east": {"uv": [11, 3, 12.5, 3.5], "texture": "#0"}, + "south": {"uv": [11, 4, 12.5, 4.5], "texture": "#0"}, + "west": {"uv": [11, 5, 12.5, 5.5], "texture": "#0"}, + "up": {"uv": [10.5, 11.5, 9, 10], "texture": "#0"}, + "down": {"uv": [12.5, 0, 11, 1.5], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 1.75, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.5, 2.25, 2.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.36719, 0.36719, 0.36719] + }, + "firstperson_lefthand": { + "rotation": [-9, 93, 0], + "translation": [0.5, 3.5, 2], + "scale": [0.36719, 0.36719, 0.36719] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [-0.5, -0.5, 0], + "scale": [0.86015, 0.86015, 0.86015] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 4.5, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 8, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/big_burger.json b/_sa_food_models/05_快餐熟食/big_burger.json new file mode 100644 index 0000000..93e4e14 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/big_burger.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/big_burger" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/big_burger_rotten.json b/_sa_food_models/05_快餐熟食/big_burger_rotten.json new file mode 100644 index 0000000..e982f36 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/big_burger_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/big_burger_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/biscuit.json b/_sa_food_models/05_快餐熟食/biscuit.json new file mode 100644 index 0000000..e8d003a --- /dev/null +++ b/_sa_food_models/05_快餐熟食/biscuit.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/biscuit" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/biscuit_rotten.json b/_sa_food_models/05_快餐熟食/biscuit_rotten.json new file mode 100644 index 0000000..c175c61 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/biscuit_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/biscuit_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/burger.json b/_sa_food_models/05_快餐熟食/burger.json new file mode 100644 index 0000000..3401ac0 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/burger.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/burger" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/burger_rotten.json b/_sa_food_models/05_快餐熟食/burger_rotten.json new file mode 100644 index 0000000..d535431 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/burger_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/burger_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/burrito.json b/_sa_food_models/05_快餐熟食/burrito.json new file mode 100644 index 0000000..f4a7859 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/burrito.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/burrito" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/burrito_rotten.json b/_sa_food_models/05_快餐熟食/burrito_rotten.json new file mode 100644 index 0000000..8b395a9 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/burrito_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/burrito_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/cheese_burger.json b/_sa_food_models/05_快餐熟食/cheese_burger.json new file mode 100644 index 0000000..9b59ae1 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/cheese_burger.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/cheese_burger" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/cheese_burger_rotten.json b/_sa_food_models/05_快餐熟食/cheese_burger_rotten.json new file mode 100644 index 0000000..dd93387 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/cheese_burger_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/cheese_burger_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/donut.json b/_sa_food_models/05_快餐熟食/donut.json new file mode 100644 index 0000000..0f6a1bc --- /dev/null +++ b/_sa_food_models/05_快餐熟食/donut.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/donut" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/donut_rotten.json b/_sa_food_models/05_快餐熟食/donut_rotten.json new file mode 100644 index 0000000..6414a7f --- /dev/null +++ b/_sa_food_models/05_快餐熟食/donut_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/donut_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/hot_dog.json b/_sa_food_models/05_快餐熟食/hot_dog.json new file mode 100644 index 0000000..67731ce --- /dev/null +++ b/_sa_food_models/05_快餐熟食/hot_dog.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/hot_dog" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/hot_dog_rotten.json b/_sa_food_models/05_快餐熟食/hot_dog_rotten.json new file mode 100644 index 0000000..d95fc17 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/hot_dog_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/hot_dog_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/taco.json b/_sa_food_models/05_快餐熟食/taco.json new file mode 100644 index 0000000..9f8237c --- /dev/null +++ b/_sa_food_models/05_快餐熟食/taco.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/taco" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/taco_rotten.json b/_sa_food_models/05_快餐熟食/taco_rotten.json new file mode 100644 index 0000000..a4b573f --- /dev/null +++ b/_sa_food_models/05_快餐熟食/taco_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/taco_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/toast.json b/_sa_food_models/05_快餐熟食/toast.json new file mode 100644 index 0000000..d7ad905 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/toast.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/toast" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/toast_rotten.json b/_sa_food_models/05_快餐熟食/toast_rotten.json new file mode 100644 index 0000000..7a2b7f7 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/toast_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/toast_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/waffles.json b/_sa_food_models/05_快餐熟食/waffles.json new file mode 100644 index 0000000..973fcc5 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/waffles.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/waffles" + } +} \ No newline at end of file diff --git a/_sa_food_models/05_快餐熟食/waffles_rotten.json b/_sa_food_models/05_快餐熟食/waffles_rotten.json new file mode 100644 index 0000000..cf3b947 --- /dev/null +++ b/_sa_food_models/05_快餐熟食/waffles_rotten.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/waffles_rotten" + } +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/butter.json b/_sa_food_models/06_零食甜食酱料/butter.json new file mode 100644 index 0000000..1bd2a2f --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/butter.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/butter" + } +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/candys.json b/_sa_food_models/06_零食甜食酱料/candys.json new file mode 100644 index 0000000..2967a92 --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/candys.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/candys" + } +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/cheese.json b/_sa_food_models/06_零食甜食酱料/cheese.json new file mode 100644 index 0000000..b764ff2 --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/cheese.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/cheese" + } +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/cheese_bread.json b/_sa_food_models/06_零食甜食酱料/cheese_bread.json new file mode 100644 index 0000000..2b7dc0a --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/cheese_bread.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/cheese_bread" + } +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/chocolate_bar.json b/_sa_food_models/06_零食甜食酱料/chocolate_bar.json new file mode 100644 index 0000000..be18cff --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/chocolate_bar.json @@ -0,0 +1,145 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [32, 32], + "textures": { + "2": "sa_combat:item/chocolate_bar", + "particle": "sa_combat:item/particule_smirkers" + }, + "elements": [ + { + "from": [4, 0, 7], + "to": [12, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [4.5, 0, 9, 7], "texture": "#2"}, + "east": {"uv": [1.5, 7.5, 2.5, 14.5], "texture": "#2"}, + "south": {"uv": [4.5, 0, 9, 7], "texture": "#2"}, + "west": {"uv": [1.5, 7.5, 2.5, 14.5], "texture": "#2"}, + "up": {"uv": [13, 1, 9, 0], "texture": "#2"}, + "down": {"uv": [13, 1.5, 9, 2.5], "texture": "#2"} + } + }, + { + "from": [4, 5.55, 9.9], + "to": [12, 8.55, 9.9], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6.5, 7.9]}, + "faces": { + "north": {"uv": [3, 7.5, 7, 9], "texture": "#2"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#2"}, + "south": {"uv": [7.5, 7.5, 11.5, 9], "texture": "#2"}, + "west": {"uv": [3.5, 9.5, 3.5, 11], "texture": "#2"}, + "up": {"uv": [13, 7, 9, 7], "texture": "#2"}, + "down": {"uv": [8, 9.5, 4, 9.5], "texture": "#2"} + } + }, + { + "from": [12.9, 5.45, 7], + "to": [12.9, 8.45, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [10.9, 6.45, 11]}, + "faces": { + "north": {"uv": [8.5, 9.5, 8.5, 11], "texture": "#2"}, + "east": {"uv": [9, 3, 10, 4.5], "texture": "#2"}, + "south": {"uv": [9, 9.5, 9, 11], "texture": "#2"}, + "west": {"uv": [9, 5, 10, 6.5], "texture": "#2"}, + "up": {"uv": [9.5, 10.5, 9.5, 9.5], "texture": "#2"}, + "down": {"uv": [4, 10, 4, 11], "texture": "#2"} + } + }, + { + "from": [4, 5.55, 6.1], + "to": [12, 8.55, 6.1], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6.5, 8.1]}, + "faces": { + "north": {"uv": [7.5, 7.5, 11.5, 9], "texture": "#2"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#2"}, + "south": {"uv": [3, 7.5, 7, 9], "texture": "#2"}, + "west": {"uv": [3.5, 9.5, 3.5, 11], "texture": "#2"}, + "up": {"uv": [9, 7, 13, 7], "texture": "#2"}, + "down": {"uv": [4, 9.5, 8, 9.5], "texture": "#2"} + } + }, + { + "from": [3.1, 5.45, 7], + "to": [3.1, 8.45, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [5.1, 6.45, 5]}, + "faces": { + "north": {"uv": [9, 9.5, 9, 11], "texture": "#2"}, + "east": {"uv": [9, 5, 10, 6.5], "texture": "#2"}, + "south": {"uv": [8.5, 9.5, 8.5, 11], "texture": "#2"}, + "west": {"uv": [9, 3, 10, 4.5], "texture": "#2"}, + "up": {"uv": [9.5, 9.5, 9.5, 10.5], "texture": "#2"}, + "down": {"uv": [4, 10, 4, 11], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-19, 169, 26], + "translation": [0.25, 1, 0], + "scale": [0.99923, 0.99923, 0.99923] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3.25, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 7], + "scope": 0, + "color": 0, + "children": [ + 0, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [1, 2] + }, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/energy_bar.json b/_sa_food_models/06_零食甜食酱料/energy_bar.json new file mode 100644 index 0000000..444c2b9 --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/energy_bar.json @@ -0,0 +1,145 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/energy_bar", + "particle": "sa_combat:item/particule_smirkers" + }, + "elements": [ + { + "from": [6, 0, 7], + "to": [10, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 2, 7], "texture": "#0"}, + "east": {"uv": [5, 0, 6, 7], "texture": "#0"}, + "south": {"uv": [2.5, 0, 4.5, 7], "texture": "#0"}, + "west": {"uv": [6.5, 0, 7.5, 7], "texture": "#0"}, + "up": {"uv": [10, 1, 8, 0], "texture": "#0"}, + "down": {"uv": [10, 1.5, 8, 2.5], "texture": "#0"} + } + }, + { + "from": [6, 5.55, 9.9], + "to": [10, 8.55, 9.9], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6.5, 7.9]}, + "faces": { + "north": {"uv": [4.5, 7.5, 2.5, 9], "texture": "#0"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#0"}, + "south": {"uv": [2, 7.5, 0, 9], "texture": "#0"}, + "west": {"uv": [9.5, 3, 9.5, 4.5], "texture": "#0"}, + "up": {"uv": [10, 7, 8, 7], "texture": "#0"}, + "down": {"uv": [5.5, 9.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [10.9, 5.45, 7], + "to": [10.9, 8.45, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8.9, 6.45, 11]}, + "faces": { + "north": {"uv": [3.5, 10, 3.5, 11.5], "texture": "#0"}, + "east": {"uv": [8, 5, 9, 6.5], "texture": "#0"}, + "south": {"uv": [10, 3, 10, 4.5], "texture": "#0"}, + "west": {"uv": [8, 3, 9, 4.5], "texture": "#0"}, + "up": {"uv": [4, 10, 4, 11], "texture": "#0"}, + "down": {"uv": [4.5, 11, 4.5, 10], "texture": "#0"} + } + }, + { + "from": [6, 5.55, 6.1], + "to": [10, 8.55, 6.1], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6.5, 8.1]}, + "faces": { + "north": {"uv": [0, 7.5, 2, 9], "texture": "#0"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#0"}, + "south": {"uv": [2.5, 7.5, 4.5, 9], "texture": "#0"}, + "west": {"uv": [9.5, 3, 9.5, 4.5], "texture": "#0"}, + "up": {"uv": [10, 7, 8, 7], "texture": "#0"}, + "down": {"uv": [5.5, 9.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5.1, 5.45, 7], + "to": [5.1, 8.45, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [7.1, 6.45, 5]}, + "faces": { + "north": {"uv": [10, 3, 10, 4.5], "texture": "#0"}, + "east": {"uv": [8, 3, 9, 4.5], "texture": "#0"}, + "south": {"uv": [3.5, 10, 3.5, 11.5], "texture": "#0"}, + "west": {"uv": [8, 5, 9, 6.5], "texture": "#0"}, + "up": {"uv": [4, 11, 4, 10], "texture": "#0"}, + "down": {"uv": [4.5, 10, 4.5, 11], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-19, 169, 26], + "translation": [0.25, 1, 0], + "scale": [0.99923, 0.99923, 0.99923] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3.25, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 7], + "scope": 0, + "color": 0, + "children": [ + 0, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [1, 2] + }, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/fruit_jam.json b/_sa_food_models/06_零食甜食酱料/fruit_jam.json new file mode 100644 index 0000000..cddcd3c --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/fruit_jam.json @@ -0,0 +1,80 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/fruit_jam", + "particle": "sa_combat:item/fruit_jam" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 3, 5], "texture": "#0"}, + "east": {"uv": [3, 0, 6, 5], "texture": "#0"}, + "south": {"uv": [0, 5, 3, 10], "texture": "#0"}, + "west": {"uv": [3, 5, 6, 10], "texture": "#0"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#0"}, + "down": {"uv": [9, 3, 6, 6], "texture": "#0"} + } + }, + { + "from": [5.3, 10, 5.3], + "to": [10.7, 12, 10.7], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 10, 7]}, + "faces": { + "north": {"uv": [8.5, 6, 11, 7], "texture": "#0"}, + "east": {"uv": [8.5, 7, 11, 8], "texture": "#0"}, + "south": {"uv": [8.5, 8, 11, 9], "texture": "#0"}, + "west": {"uv": [9, 0, 11.5, 1], "texture": "#0"}, + "up": {"uv": [8.5, 8.5, 6, 6], "texture": "#0"}, + "down": {"uv": [8.5, 8.5, 6, 11], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 2.5, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + } +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/granola_bar.json b/_sa_food_models/06_零食甜食酱料/granola_bar.json new file mode 100644 index 0000000..1c9fd17 --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/granola_bar.json @@ -0,0 +1,145 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/granola_bar", + "particle": "sa_combat:item/particle_granola" + }, + "elements": [ + { + "from": [6, 0, 7], + "to": [10, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 2, 7], "texture": "#0"}, + "east": {"uv": [5, 0, 6, 7], "texture": "#0"}, + "south": {"uv": [2.5, 0, 4.5, 7], "texture": "#0"}, + "west": {"uv": [6.5, 0, 7.5, 7], "texture": "#0"}, + "up": {"uv": [10, 1, 8, 0], "texture": "#0"}, + "down": {"uv": [10, 1.5, 8, 2.5], "texture": "#0"} + } + }, + { + "from": [6, 5.55, 9.9], + "to": [10, 8.55, 9.9], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6.5, 7.9]}, + "faces": { + "north": {"uv": [4.5, 7.5, 2.5, 9], "texture": "#0"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#0"}, + "south": {"uv": [2, 7.5, 0, 9], "texture": "#0"}, + "west": {"uv": [9.5, 3, 9.5, 4.5], "texture": "#0"}, + "up": {"uv": [10, 7, 8, 7], "texture": "#0"}, + "down": {"uv": [5.5, 9.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [10.9, 5.45, 7], + "to": [10.9, 8.45, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8.9, 6.45, 11]}, + "faces": { + "north": {"uv": [3.5, 10, 3.5, 11.5], "texture": "#0"}, + "east": {"uv": [8, 5, 9, 6.5], "texture": "#0"}, + "south": {"uv": [10, 3, 10, 4.5], "texture": "#0"}, + "west": {"uv": [8, 3, 9, 4.5], "texture": "#0"}, + "up": {"uv": [4, 10, 4, 11], "texture": "#0"}, + "down": {"uv": [4.5, 11, 4.5, 10], "texture": "#0"} + } + }, + { + "from": [6, 5.55, 6.1], + "to": [10, 8.55, 6.1], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6.5, 8.1]}, + "faces": { + "north": {"uv": [0, 7.5, 2, 9], "texture": "#0"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#0"}, + "south": {"uv": [2.5, 7.5, 4.5, 9], "texture": "#0"}, + "west": {"uv": [9.5, 3, 9.5, 4.5], "texture": "#0"}, + "up": {"uv": [10, 7, 8, 7], "texture": "#0"}, + "down": {"uv": [5.5, 9.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5.1, 5.45, 7], + "to": [5.1, 8.45, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [7.1, 6.45, 5]}, + "faces": { + "north": {"uv": [10, 3, 10, 4.5], "texture": "#0"}, + "east": {"uv": [8, 3, 9, 4.5], "texture": "#0"}, + "south": {"uv": [3.5, 10, 3.5, 11.5], "texture": "#0"}, + "west": {"uv": [8, 5, 9, 6.5], "texture": "#0"}, + "up": {"uv": [4, 11, 4, 10], "texture": "#0"}, + "down": {"uv": [4.5, 10, 4.5, 11], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-19, 169, 26], + "translation": [0.25, 1, 0], + "scale": [0.99923, 0.99923, 0.99923] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3.25, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 7], + "scope": 0, + "color": 0, + "children": [ + 0, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [1, 2] + }, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/peanut_butter.json b/_sa_food_models/06_零食甜食酱料/peanut_butter.json new file mode 100644 index 0000000..dea6ca0 --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/peanut_butter.json @@ -0,0 +1,80 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/peanut_butter", + "particle": "sa_combat:item/peanut_butter" + }, + "elements": [ + { + "from": [5, 0, 5], + "to": [11, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 3, 5], "texture": "#0"}, + "east": {"uv": [3, 0, 6, 5], "texture": "#0"}, + "south": {"uv": [0, 5, 3, 10], "texture": "#0"}, + "west": {"uv": [3, 5, 6, 10], "texture": "#0"}, + "up": {"uv": [9, 3, 6, 0], "texture": "#0"}, + "down": {"uv": [9, 3, 6, 6], "texture": "#0"} + } + }, + { + "from": [5.3, 10, 5.3], + "to": [10.7, 12, 10.7], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 10, 7]}, + "faces": { + "north": {"uv": [8.5, 6, 11, 7], "texture": "#0"}, + "east": {"uv": [8.5, 7, 11, 8], "texture": "#0"}, + "south": {"uv": [8.5, 8, 11, 9], "texture": "#0"}, + "west": {"uv": [9, 0, 11.5, 1], "texture": "#0"}, + "up": {"uv": [8.5, 8.5, 6, 6], "texture": "#0"}, + "down": {"uv": [8.5, 8.5, 6, 11], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [0, 90, 0], + "translation": [-1.25, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-0.75, 4, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [0.5, 2.5, 0], + "scale": [1.07695, 1.07695, 1.07695] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "translation": [0, 4, 0], + "scale": [0.85938, 0.85938, 0.85938] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + } +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/smirkers_bar.json b/_sa_food_models/06_零食甜食酱料/smirkers_bar.json new file mode 100644 index 0000000..3677af9 --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/smirkers_bar.json @@ -0,0 +1,145 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/smirkers_bar", + "particle": "sa_combat:item/particule_smirkers" + }, + "elements": [ + { + "from": [6, 0, 7], + "to": [10, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 2, 7], "texture": "#0"}, + "east": {"uv": [5, 0, 6, 7], "texture": "#0"}, + "south": {"uv": [2.5, 0, 4.5, 7], "texture": "#0"}, + "west": {"uv": [6.5, 0, 7.5, 7], "texture": "#0"}, + "up": {"uv": [10, 1, 8, 0], "texture": "#0"}, + "down": {"uv": [10, 1.5, 8, 2.5], "texture": "#0"} + } + }, + { + "from": [6, 5.55, 9.9], + "to": [10, 8.55, 9.9], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6.5, 7.9]}, + "faces": { + "north": {"uv": [4.5, 7.5, 2.5, 9], "texture": "#0"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#0"}, + "south": {"uv": [2, 7.5, 0, 9], "texture": "#0"}, + "west": {"uv": [9.5, 3, 9.5, 4.5], "texture": "#0"}, + "up": {"uv": [10, 7, 8, 7], "texture": "#0"}, + "down": {"uv": [5.5, 9.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [10.9, 5.45, 7], + "to": [10.9, 8.45, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8.9, 6.45, 11]}, + "faces": { + "north": {"uv": [3.5, 10, 3.5, 11.5], "texture": "#0"}, + "east": {"uv": [8, 5, 9, 6.5], "texture": "#0"}, + "south": {"uv": [10, 3, 10, 4.5], "texture": "#0"}, + "west": {"uv": [8, 3, 9, 4.5], "texture": "#0"}, + "up": {"uv": [4, 10, 4, 11], "texture": "#0"}, + "down": {"uv": [4.5, 11, 4.5, 10], "texture": "#0"} + } + }, + { + "from": [6, 5.55, 6.1], + "to": [10, 8.55, 6.1], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6.5, 8.1]}, + "faces": { + "north": {"uv": [0, 7.5, 2, 9], "texture": "#0"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#0"}, + "south": {"uv": [2.5, 7.5, 4.5, 9], "texture": "#0"}, + "west": {"uv": [9.5, 3, 9.5, 4.5], "texture": "#0"}, + "up": {"uv": [10, 7, 8, 7], "texture": "#0"}, + "down": {"uv": [5.5, 9.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5.1, 5.45, 7], + "to": [5.1, 8.45, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [7.1, 6.45, 5]}, + "faces": { + "north": {"uv": [10, 3, 10, 4.5], "texture": "#0"}, + "east": {"uv": [8, 3, 9, 4.5], "texture": "#0"}, + "south": {"uv": [3.5, 10, 3.5, 11.5], "texture": "#0"}, + "west": {"uv": [8, 5, 9, 6.5], "texture": "#0"}, + "up": {"uv": [4, 11, 4, 10], "texture": "#0"}, + "down": {"uv": [4.5, 10, 4.5, 11], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-19, 169, 26], + "translation": [0.25, 1, 0], + "scale": [0.99923, 0.99923, 0.99923] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3.25, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 7], + "scope": 0, + "color": 0, + "children": [ + 0, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [1, 2] + }, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/06_零食甜食酱料/sniksnak_bar.json b/_sa_food_models/06_零食甜食酱料/sniksnak_bar.json new file mode 100644 index 0000000..d55ed41 --- /dev/null +++ b/_sa_food_models/06_零食甜食酱料/sniksnak_bar.json @@ -0,0 +1,145 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [32, 32], + "textures": { + "0": "sa_combat:item/sniksnak_bar", + "particle": "sa_combat:item/particule_smirkers" + }, + "elements": [ + { + "from": [6, 0, 7], + "to": [10, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 2, 7], "texture": "#0"}, + "east": {"uv": [5, 0, 6, 7], "texture": "#0"}, + "south": {"uv": [2.5, 0, 4.5, 7], "texture": "#0"}, + "west": {"uv": [6.5, 0, 7.5, 7], "texture": "#0"}, + "up": {"uv": [10, 1, 8, 0], "texture": "#0"}, + "down": {"uv": [10, 1.5, 8, 2.5], "texture": "#0"} + } + }, + { + "from": [6, 5.55, 9.9], + "to": [10, 8.55, 9.9], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 6.5, 7.9]}, + "faces": { + "north": {"uv": [4.5, 7.5, 2.5, 9], "texture": "#0"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#0"}, + "south": {"uv": [2, 7.5, 0, 9], "texture": "#0"}, + "west": {"uv": [9.5, 3, 9.5, 4.5], "texture": "#0"}, + "up": {"uv": [10, 7, 8, 7], "texture": "#0"}, + "down": {"uv": [5.5, 9.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [10.9, 5.45, 7], + "to": [10.9, 8.45, 9], + "rotation": {"angle": 22.5, "axis": "z", "origin": [8.9, 6.45, 11]}, + "faces": { + "north": {"uv": [3.5, 10, 3.5, 11.5], "texture": "#0"}, + "east": {"uv": [8, 5, 9, 6.5], "texture": "#0"}, + "south": {"uv": [10, 3, 10, 4.5], "texture": "#0"}, + "west": {"uv": [8, 3, 9, 4.5], "texture": "#0"}, + "up": {"uv": [4, 10, 4, 11], "texture": "#0"}, + "down": {"uv": [4.5, 11, 4.5, 10], "texture": "#0"} + } + }, + { + "from": [6, 5.55, 6.1], + "to": [10, 8.55, 6.1], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 6.5, 8.1]}, + "faces": { + "north": {"uv": [0, 7.5, 2, 9], "texture": "#0"}, + "east": {"uv": [3, 9.5, 3, 11], "texture": "#0"}, + "south": {"uv": [2.5, 7.5, 4.5, 9], "texture": "#0"}, + "west": {"uv": [9.5, 3, 9.5, 4.5], "texture": "#0"}, + "up": {"uv": [10, 7, 8, 7], "texture": "#0"}, + "down": {"uv": [5.5, 9.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5.1, 5.45, 7], + "to": [5.1, 8.45, 9], + "rotation": {"angle": -22.5, "axis": "z", "origin": [7.1, 6.45, 5]}, + "faces": { + "north": {"uv": [10, 3, 10, 4.5], "texture": "#0"}, + "east": {"uv": [8, 3, 9, 4.5], "texture": "#0"}, + "south": {"uv": [3.5, 10, 3.5, 11.5], "texture": "#0"}, + "west": {"uv": [8, 5, 9, 6.5], "texture": "#0"}, + "up": {"uv": [4, 11, 4, 10], "texture": "#0"}, + "down": {"uv": [4.5, 10, 4.5, 11], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1, 1, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 107, 17], + "translation": [-0.5, 2.25, 1.25], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-19, 169, 26], + "translation": [0.25, 1, 0], + "scale": [0.99923, 0.99923, 0.99923] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3.25, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 7], + "scope": 0, + "color": 0, + "children": [ + 0, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [1, 2] + }, + { + "name": "group", + "origin": [8, 6, 8], + "scope": 0, + "color": 0, + "children": [3, 4] + } + ] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/brigadeiro.json b/_sa_food_models/07_巴西小食/brigadeiro.json new file mode 100644 index 0000000..cf5a560 --- /dev/null +++ b/_sa_food_models/07_巴西小食/brigadeiro.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/brigadeiro" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/coxinha.json b/_sa_food_models/07_巴西小食/coxinha.json new file mode 100644 index 0000000..39a99df --- /dev/null +++ b/_sa_food_models/07_巴西小食/coxinha.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/coxinha" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/coxinha_dough.json b/_sa_food_models/07_巴西小食/coxinha_dough.json new file mode 100644 index 0000000..01b7c9b --- /dev/null +++ b/_sa_food_models/07_巴西小食/coxinha_dough.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/coxinha_dough" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/meat_pastel.json b/_sa_food_models/07_巴西小食/meat_pastel.json new file mode 100644 index 0000000..46c00c4 --- /dev/null +++ b/_sa_food_models/07_巴西小食/meat_pastel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/meat_pastel" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/pacoquita.json b/_sa_food_models/07_巴西小食/pacoquita.json new file mode 100644 index 0000000..c40fac2 --- /dev/null +++ b/_sa_food_models/07_巴西小食/pacoquita.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/pacoquita" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/pastel_dough.json b/_sa_food_models/07_巴西小食/pastel_dough.json new file mode 100644 index 0000000..3676da7 --- /dev/null +++ b/_sa_food_models/07_巴西小食/pastel_dough.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/pastel_dough" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/raw_cheese_pastel.json b/_sa_food_models/07_巴西小食/raw_cheese_pastel.json new file mode 100644 index 0000000..b7d036c --- /dev/null +++ b/_sa_food_models/07_巴西小食/raw_cheese_pastel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/raw_cheese_pastel" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/raw_coxinha.json b/_sa_food_models/07_巴西小食/raw_coxinha.json new file mode 100644 index 0000000..a3017e4 --- /dev/null +++ b/_sa_food_models/07_巴西小食/raw_coxinha.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/raw_coxinha" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/raw_meat_pastel.json b/_sa_food_models/07_巴西小食/raw_meat_pastel.json new file mode 100644 index 0000000..7d56c4e --- /dev/null +++ b/_sa_food_models/07_巴西小食/raw_meat_pastel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/raw_meat_pastel" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/raw_wind_pastel.json b/_sa_food_models/07_巴西小食/raw_wind_pastel.json new file mode 100644 index 0000000..3eae98e --- /dev/null +++ b/_sa_food_models/07_巴西小食/raw_wind_pastel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/raw_wind_pastel" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/rotten_coxinha.json b/_sa_food_models/07_巴西小食/rotten_coxinha.json new file mode 100644 index 0000000..3393d5b --- /dev/null +++ b/_sa_food_models/07_巴西小食/rotten_coxinha.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/rotten_coxinha" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/saltine_cracker.json b/_sa_food_models/07_巴西小食/saltine_cracker.json new file mode 100644 index 0000000..473855b --- /dev/null +++ b/_sa_food_models/07_巴西小食/saltine_cracker.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/saltine_cracker" + } +} \ No newline at end of file diff --git a/_sa_food_models/07_巴西小食/wind_pastel.json b/_sa_food_models/07_巴西小食/wind_pastel.json new file mode 100644 index 0000000..5e1cbb4 --- /dev/null +++ b/_sa_food_models/07_巴西小食/wind_pastel.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/wind_pastel" + } +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/barbecue_chips_bag.json b/_sa_food_models/08_披萨薯片谷物/barbecue_chips_bag.json new file mode 100644 index 0000000..a074baf --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/barbecue_chips_bag.json @@ -0,0 +1,104 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [64, 64], + "textures": { + "0": "sa_combat:item/barbecue_chips_bag", + "particle": "sa_combat:item/chips" + }, + "elements": [ + { + "from": [3, 0, 8], + "to": [13, 2, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [4.25, 3.25, 6.75, 3.75], "texture": "#0"}, + "east": {"uv": [5.5, 0, 5.5, 0.5], "texture": "#0"}, + "south": {"uv": [4.25, 3.25, 6.75, 3.75], "texture": "#0"}, + "west": {"uv": [5.5, 0.75, 5.5, 1.25], "texture": "#0"}, + "up": {"uv": [4, 5.5, 1.5, 5.5], "texture": "#0"}, + "down": {"uv": [8, 1.5, 5.5, 1.5], "texture": "#0"} + } + }, + { + "from": [3, 14, 8], + "to": [13, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 14, 7]}, + "faces": { + "north": {"uv": [1.5, 4.75, 4, 5.25], "texture": "#0"}, + "east": {"uv": [5.5, 1.75, 5.5, 2.25], "texture": "#0"}, + "south": {"uv": [1.5, 4.75, 4, 5.25], "texture": "#0"}, + "west": {"uv": [5.5, 2.5, 5.5, 3], "texture": "#0"}, + "up": {"uv": [6.75, 5.5, 4.25, 5.5], "texture": "#0"}, + "down": {"uv": [8.25, 0, 5.75, 0], "texture": "#0"} + } + }, + { + "from": [3, 2, 7], + "to": [13, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 7]}, + "faces": { + "north": {"uv": [2.75, 0, 5.25, 3], "texture": "#0"}, + "east": {"uv": [0, 3.25, 0.5, 6.25], "texture": "#0"}, + "south": {"uv": [0, 0, 2.5, 3], "texture": "#0"}, + "west": {"uv": [0.75, 3.25, 1.25, 6.25], "texture": "#0"}, + "up": {"uv": [4, 3.75, 1.5, 3.25], "texture": "#0"}, + "down": {"uv": [4, 4, 1.5, 4.5], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [-4, 117, 19], + "translation": [-1.5, 2.75, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [-4, 117, 19], + "translation": [-1.5, 2.75, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-31, 157, 23], + "translation": [0.25, 0, 0], + "scale": [0.90352, 0.90352, 0.90352] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/candy_package.json b/_sa_food_models/08_披萨薯片谷物/candy_package.json new file mode 100644 index 0000000..85688b7 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/candy_package.json @@ -0,0 +1,104 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [32, 32], + "textures": { + "1": "sa_combat:item/candy_package", + "particle": "sa_combat:item/candys" + }, + "elements": [ + { + "from": [3, 0, 8], + "to": [13, 2, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [9, 6, 14, 7], "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "texture": "#1"}, + "south": {"uv": [9, 6, 14, 7], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "texture": "#1"}, + "up": {"uv": [5, 0, 0, 0], "texture": "#1"}, + "down": {"uv": [5, 0, 0, 0], "texture": "#1"} + } + }, + { + "from": [3, 14, 8], + "to": [13, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 14, 7]}, + "faces": { + "north": {"uv": [9, 7, 14, 6], "texture": "#1"}, + "east": {"uv": [0, 0, 0, 1], "texture": "#1"}, + "south": {"uv": [9, 7, 14, 6], "texture": "#1"}, + "west": {"uv": [0, 0, 0, 1], "texture": "#1"}, + "up": {"uv": [5, 0, 0, 0], "texture": "#1"}, + "down": {"uv": [5, 0, 0, 0], "texture": "#1"} + } + }, + { + "from": [3, 2, 6], + "to": [13, 14, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 7]}, + "faces": { + "north": {"uv": [0, 0, 5, 6], "texture": "#1"}, + "east": {"uv": [0, 6, 2, 12], "texture": "#1"}, + "south": {"uv": [0, 0, 5, 6], "texture": "#1"}, + "west": {"uv": [2, 6, 0, 12], "texture": "#1"}, + "up": {"uv": [9, 8, 4, 6], "texture": "#1"}, + "down": {"uv": [9, 8, 4, 10], "texture": "#1"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [-22, 121, 19], + "translation": [-1.5, 3.25, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [-22, 121, 19], + "translation": [-1.5, 3.25, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-31, 157, 23], + "translation": [0.25, 0, 0], + "scale": [0.90352, 0.90352, 0.90352] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/cereal.json b/_sa_food_models/08_披萨薯片谷物/cereal.json new file mode 100644 index 0000000..68cba75 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/cereal.json @@ -0,0 +1,67 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "sa_combat:item/cereal", + "particle": "sa_combat:item/cereal_kelloggys_flakes" + }, + "elements": [ + { + "from": [2, 0, 6], + "to": [14, 17, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 5, 7], "texture": "#0"}, + "east": {"uv": [2.5, 7.5, 4.5, 14.5], "texture": "#0"}, + "south": {"uv": [5.5, 0, 10.5, 7], "texture": "#0"}, + "west": {"uv": [0, 7.5, 2, 14.5], "texture": "#0"}, + "up": {"uv": [5, 7.5, 10, 9.5], "texture": "#0"}, + "down": {"uv": [5, 7.5, 10, 9.5], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [92.75, 73.5, -67.5], + "translation": [-2, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [92.75, 73.5, -67.5], + "translation": [-2, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-1.5, 3.25, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-1.5, 3.25, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [-0.25, -0.25, 0], + "scale": [0.81718, 0.81718, 0.81718] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "rotation": [0, 1, 0], + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + } +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/cereal_fruit_loops.json b/_sa_food_models/08_披萨薯片谷物/cereal_fruit_loops.json new file mode 100644 index 0000000..f541530 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/cereal_fruit_loops.json @@ -0,0 +1,67 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "sa_combat:item/cereal_fruit_loops", + "particle": "sa_combat:item/cereal_fruit_loops" + }, + "elements": [ + { + "from": [2, 0, 6], + "to": [14, 17, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 5, 7], "texture": "#0"}, + "east": {"uv": [2.5, 7.5, 4.5, 14.5], "texture": "#0"}, + "south": {"uv": [5.5, 0, 10.5, 7], "texture": "#0"}, + "west": {"uv": [0, 7.5, 2, 14.5], "texture": "#0"}, + "up": {"uv": [5, 7.5, 10, 9.5], "texture": "#0"}, + "down": {"uv": [5, 7.5, 10, 9.5], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [92.75, 73.5, -67.5], + "translation": [-2, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [92.75, 73.5, -67.5], + "translation": [-2, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-1.5, 3.25, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-1.5, 3.25, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [-0.25, -0.25, 0], + "scale": [0.81718, 0.81718, 0.81718] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "rotation": [0, 1, 0], + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + } +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/cereal_fruit_loops_flakes.json b/_sa_food_models/08_披萨薯片谷物/cereal_fruit_loops_flakes.json new file mode 100644 index 0000000..26d8a57 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/cereal_fruit_loops_flakes.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/cereal_fruit_loops_flakes" + } +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/cereal_kelloggys.json b/_sa_food_models/08_披萨薯片谷物/cereal_kelloggys.json new file mode 100644 index 0000000..d2eefc4 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/cereal_kelloggys.json @@ -0,0 +1,67 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "sa_combat:item/cereal_kelloggys", + "particle": "sa_combat:item/cereal_kelloggys_flakes" + }, + "elements": [ + { + "from": [2, 0, 6], + "to": [14, 17, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 7]}, + "faces": { + "north": {"uv": [0, 0, 3, 4.25], "texture": "#0"}, + "east": {"uv": [0, 4.25, 1, 8.5], "texture": "#0"}, + "south": {"uv": [3, 0, 6, 4.25], "texture": "#0"}, + "west": {"uv": [1, 4.25, 2, 8.5], "texture": "#0"}, + "up": {"uv": [5, 5.25, 2, 4.25], "texture": "#0"}, + "down": {"uv": [8, 4.25, 5, 5.25], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [92.75, 73.5, -67.5], + "translation": [-2, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "thirdperson_lefthand": { + "rotation": [92.75, 73.5, -67.5], + "translation": [-2, 2.25, 2.25], + "scale": [0.55, 0.55, 0.55] + }, + "firstperson_righthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-1.5, 3.25, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "firstperson_lefthand": { + "rotation": [-155.67, 87.24, 146.71], + "translation": [-1.5, 3.25, 2.25], + "scale": [0.44883, 0.44883, 0.44883] + }, + "ground": { + "translation": [0, 2.5, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-171.31, 28.48, -168.29], + "translation": [-0.25, -0.25, 0], + "scale": [0.81718, 0.81718, 0.81718] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 0.25] + }, + "fixed": { + "rotation": [0, 1, 0], + "translation": [0, 4.75, 0] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + } +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/cereal_kelloggys_flakes.json b/_sa_food_models/08_披萨薯片谷物/cereal_kelloggys_flakes.json new file mode 100644 index 0000000..82f5269 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/cereal_kelloggys_flakes.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/cereal_kelloggys_flakes" + } +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/chips.json b/_sa_food_models/08_披萨薯片谷物/chips.json new file mode 100644 index 0000000..cf12863 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/chips.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/chips" + } +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/pizza.json b/_sa_food_models/08_披萨薯片谷物/pizza.json new file mode 100644 index 0000000..64ff5c9 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/pizza.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/pizza" + } +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/pizza_box.json b/_sa_food_models/08_披萨薯片谷物/pizza_box.json new file mode 100644 index 0000000..8d3dbbd --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/pizza_box.json @@ -0,0 +1,135 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "texture_size": [64, 64], + "textures": { + "0": "sa_combat:item/pizza_box", + "particle": "sa_combat:item/pizza_box" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [4.25, 0, 8.25, 0.5], "texture": "#0"}, + "east": {"uv": [4.25, 0.75, 8.25, 1.25], "texture": "#0"}, + "south": {"uv": [4.25, 1.5, 8.25, 2], "texture": "#0"}, + "west": {"uv": [4.25, 2.25, 8.25, 2.75], "texture": "#0"}, + "up": {"uv": [4, 4, 0, 0], "texture": "#0"}, + "down": {"uv": [4, 4.25, 0, 8.25], "texture": "#0"} + } + }, + { + "from": [1, 2.01, 5], + "to": [15, 2.01, 11], + "rotation": {"angle": 45, "axis": "y", "origin": [8, 2, 8]}, + "faces": { + "north": {"uv": [4.25, 0, 8.25, 0.5], "texture": "#0"}, + "east": {"uv": [4.25, 0.75, 8.25, 1.25], "texture": "#0"}, + "south": {"uv": [4.25, 1.5, 8.25, 2], "texture": "#0"}, + "west": {"uv": [4.25, 2.25, 8.25, 2.75], "texture": "#0"}, + "up": {"uv": [13.25, 2.75, 9, 0.75], "texture": "#0"}, + "down": {"uv": [12.75, 0, 8.75, 4], "texture": "#0"} + } + }, + { + "from": [16, 1, 0], + "to": [16, 2, 16], + "rotation": {"angle": 22.5, "axis": "z", "origin": [16, 2, 8]}, + "faces": { + "north": {"uv": [4.25, 7, 4.25, 7.25], "texture": "#0"}, + "east": {"uv": [4.25, 3, 8.25, 3.25], "texture": "#0"}, + "south": {"uv": [4.5, 7, 4.5, 7.25], "texture": "#0"}, + "west": {"uv": [4.25, 3.5, 8.25, 3.75], "texture": "#0"}, + "up": {"uv": [4.75, 11, 4.75, 7], "texture": "#0"}, + "down": {"uv": [5, 7, 5, 11], "texture": "#0"} + } + }, + { + "from": [0, 1, 0], + "to": [0, 2, 16], + "rotation": {"angle": -22.5, "axis": "z", "origin": [0, 2, 8]}, + "faces": { + "north": {"uv": [5.25, 7, 5.25, 7.25], "texture": "#0"}, + "east": {"uv": [4.25, 4, 8.25, 4.25], "texture": "#0"}, + "south": {"uv": [5.5, 7, 5.5, 7.25], "texture": "#0"}, + "west": {"uv": [4.25, 4.5, 8.25, 4.75], "texture": "#0"}, + "up": {"uv": [5.75, 11, 5.75, 7], "texture": "#0"}, + "down": {"uv": [6, 7, 6, 11], "texture": "#0"} + } + }, + { + "from": [0, 1, 0], + "to": [16, 2, 0], + "rotation": {"angle": 22.5, "axis": "x", "origin": [7, 2, 0]}, + "faces": { + "north": {"uv": [4.25, 5, 8.25, 5.25], "texture": "#0"}, + "east": {"uv": [6.25, 7, 6.25, 7.25], "texture": "#0"}, + "south": {"uv": [4.25, 5.5, 8.25, 5.75], "texture": "#0"}, + "west": {"uv": [6.5, 7, 6.5, 7.25], "texture": "#0"}, + "up": {"uv": [10.75, 7, 6.75, 7], "texture": "#0"}, + "down": {"uv": [10.75, 7.25, 6.75, 7.25], "texture": "#0"} + } + }, + { + "from": [0, 1, 16], + "to": [16, 2, 16], + "rotation": {"angle": -22.5, "axis": "x", "origin": [7, 2, 16]}, + "faces": { + "north": {"uv": [4.25, 6, 8.25, 6.25], "texture": "#0"}, + "east": {"uv": [4.25, 7.5, 4.25, 7.75], "texture": "#0"}, + "south": {"uv": [4.25, 6.5, 8.25, 6.75], "texture": "#0"}, + "west": {"uv": [4.5, 7.5, 4.5, 7.75], "texture": "#0"}, + "up": {"uv": [10.25, 7.5, 6.25, 7.5], "texture": "#0"}, + "down": {"uv": [10.25, 7.75, 6.25, 7.75], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [8, 60, 0], + "translation": [0.5, 3.75, 1], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [8, 60, 0], + "translation": [0.5, 3.75, 1], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [15, 55, 0], + "translation": [-1.5, 6, 2], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [15, -126, 0], + "translation": [-1.5, 6, 2], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [42, 138, 0], + "translation": [-0.25, 4.25, 0], + "scale": [0.85078, 0.85078, 0.85078] + }, + "head": { + "translation": [0, 14.25, 0] + }, + "fixed": { + "translation": [0, 5.5, 0], + "scale": [1.09375, 1.09375, 1.09375] + } + }, + "groups": [ + { + "name": "group", + "origin": [0, 0, 0], + "scope": 0, + "color": 0, + "children": [0, 1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/plain_chips_bag.json b/_sa_food_models/08_披萨薯片谷物/plain_chips_bag.json new file mode 100644 index 0000000..541dfe5 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/plain_chips_bag.json @@ -0,0 +1,104 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [64, 64], + "textures": { + "0": "sa_combat:item/plain_chips_bag", + "particle": "sa_combat:item/chips" + }, + "elements": [ + { + "from": [3, 0, 8], + "to": [13, 2, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [4.25, 3.25, 6.75, 3.75], "texture": "#0"}, + "east": {"uv": [5.5, 0, 5.5, 0.5], "texture": "#0"}, + "south": {"uv": [4.25, 3.25, 6.75, 3.75], "texture": "#0"}, + "west": {"uv": [5.5, 0.75, 5.5, 1.25], "texture": "#0"}, + "up": {"uv": [4, 5.5, 1.5, 5.5], "texture": "#0"}, + "down": {"uv": [8, 1.5, 5.5, 1.5], "texture": "#0"} + } + }, + { + "from": [3, 14, 8], + "to": [13, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 14, 7]}, + "faces": { + "north": {"uv": [1.5, 4.75, 4, 5.25], "texture": "#0"}, + "east": {"uv": [5.5, 1.75, 5.5, 2.25], "texture": "#0"}, + "south": {"uv": [1.5, 4.75, 4, 5.25], "texture": "#0"}, + "west": {"uv": [5.5, 2.5, 5.5, 3], "texture": "#0"}, + "up": {"uv": [6.75, 5.5, 4.25, 5.5], "texture": "#0"}, + "down": {"uv": [8.25, 0, 5.75, 0], "texture": "#0"} + } + }, + { + "from": [3, 2, 7], + "to": [13, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 7]}, + "faces": { + "north": {"uv": [2.75, 0, 5.25, 3], "texture": "#0"}, + "east": {"uv": [0, 3.25, 0.5, 6.25], "texture": "#0"}, + "south": {"uv": [0, 0, 2.5, 3], "texture": "#0"}, + "west": {"uv": [0.75, 3.25, 1.25, 6.25], "texture": "#0"}, + "up": {"uv": [4, 3.75, 1.5, 3.25], "texture": "#0"}, + "down": {"uv": [4, 4, 1.5, 4.5], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [-4, 117, 19], + "translation": [-1.5, 2.75, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [-4, 117, 19], + "translation": [-1.5, 2.75, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-31, 157, 23], + "translation": [0.25, 0, 0], + "scale": [0.90352, 0.90352, 0.90352] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/salt_vinegar_chips_bag.json b/_sa_food_models/08_披萨薯片谷物/salt_vinegar_chips_bag.json new file mode 100644 index 0000000..03a4b1d --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/salt_vinegar_chips_bag.json @@ -0,0 +1,104 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [64, 64], + "textures": { + "0": "sa_combat:item/salt_vinegar_chips_bag", + "particle": "sa_combat:item/chips" + }, + "elements": [ + { + "from": [3, 0, 8], + "to": [13, 2, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [4.25, 3.25, 6.75, 3.75], "texture": "#0"}, + "east": {"uv": [5.5, 0, 5.5, 0.5], "texture": "#0"}, + "south": {"uv": [4.25, 3.25, 6.75, 3.75], "texture": "#0"}, + "west": {"uv": [5.5, 0.75, 5.5, 1.25], "texture": "#0"}, + "up": {"uv": [4, 5.5, 1.5, 5.5], "texture": "#0"}, + "down": {"uv": [8, 1.5, 5.5, 1.5], "texture": "#0"} + } + }, + { + "from": [3, 14, 8], + "to": [13, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 14, 7]}, + "faces": { + "north": {"uv": [1.5, 5.25, 4, 4.75], "texture": "#0"}, + "east": {"uv": [5.5, 1.75, 5.5, 2.25], "texture": "#0"}, + "south": {"uv": [1.5, 5.25, 4, 4.75], "texture": "#0"}, + "west": {"uv": [5.5, 2.5, 5.5, 3], "texture": "#0"}, + "up": {"uv": [6.75, 5.5, 4.25, 5.5], "texture": "#0"}, + "down": {"uv": [8.25, 0, 5.75, 0], "texture": "#0"} + } + }, + { + "from": [3, 2, 7], + "to": [13, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 7]}, + "faces": { + "north": {"uv": [2.75, 0, 5.25, 3], "texture": "#0"}, + "east": {"uv": [0, 3.25, 0.5, 6.25], "texture": "#0"}, + "south": {"uv": [0, 0, 2.5, 3], "texture": "#0"}, + "west": {"uv": [0.75, 3.25, 1.25, 6.25], "texture": "#0"}, + "up": {"uv": [4, 3.75, 1.5, 3.25], "texture": "#0"}, + "down": {"uv": [4, 4, 1.5, 4.5], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [-4, 117, 19], + "translation": [-1.5, 2.75, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [-4, 117, 19], + "translation": [-1.5, 2.75, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-31, 157, 23], + "translation": [0.25, 0, 0], + "scale": [0.90352, 0.90352, 0.90352] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/08_披萨薯片谷物/sour_cream_onion_chips_bag.json b/_sa_food_models/08_披萨薯片谷物/sour_cream_onion_chips_bag.json new file mode 100644 index 0000000..8dadda2 --- /dev/null +++ b/_sa_food_models/08_披萨薯片谷物/sour_cream_onion_chips_bag.json @@ -0,0 +1,104 @@ +{ + "format_version": "1.21.11", + "credit": "Made with Blockbench", + "parent": "survival_instinct:custom/adrenaline_injector", + "texture_size": [64, 64], + "textures": { + "0": "sa_combat:item/sour_cream_onion_chips_bag", + "particle": "sa_combat:item/chips" + }, + "elements": [ + { + "from": [3, 0, 8], + "to": [13, 2, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 0, 7]}, + "faces": { + "north": {"uv": [4.25, 3.25, 6.75, 3.75], "texture": "#0"}, + "east": {"uv": [5.5, 0, 5.5, 0.5], "texture": "#0"}, + "south": {"uv": [4.25, 3.25, 6.75, 3.75], "texture": "#0"}, + "west": {"uv": [5.5, 0.75, 5.5, 1.25], "texture": "#0"}, + "up": {"uv": [4, 5.5, 1.5, 5.5], "texture": "#0"}, + "down": {"uv": [8, 1.5, 5.5, 1.5], "texture": "#0"} + } + }, + { + "from": [3, 14, 8], + "to": [13, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 14, 7]}, + "faces": { + "north": {"uv": [1.5, 4.75, 4, 5.25], "texture": "#0"}, + "east": {"uv": [5.5, 1.75, 5.5, 2.25], "texture": "#0"}, + "south": {"uv": [1.5, 4.75, 4, 5.25], "texture": "#0"}, + "west": {"uv": [5.5, 2.5, 5.5, 3], "texture": "#0"}, + "up": {"uv": [6.75, 5.5, 4.25, 5.5], "texture": "#0"}, + "down": {"uv": [8.25, 0, 5.75, 0], "texture": "#0"} + } + }, + { + "from": [3, 2, 7], + "to": [13, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 2, 7]}, + "faces": { + "north": {"uv": [2.75, 0, 5.25, 3], "texture": "#0"}, + "east": {"uv": [0, 3.25, 0.5, 6.25], "texture": "#0"}, + "south": {"uv": [0, 0, 2.5, 3], "texture": "#0"}, + "west": {"uv": [0.75, 3.25, 1.25, 6.25], "texture": "#0"}, + "up": {"uv": [4, 3.75, 1.5, 3.25], "texture": "#0"}, + "down": {"uv": [4, 4, 1.5, 4.5], "texture": "#0"} + } + } + ], + "gui_light": "front", + "display": { + "thirdperson_righthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "thirdperson_lefthand": { + "rotation": [56, 64, 0], + "translation": [-1.75, 0.25, 0.25], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_righthand": { + "rotation": [-4, 117, 19], + "translation": [-1.5, 2.75, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [-4, 117, 19], + "translation": [-1.5, 2.75, 2.75], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 2, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [-31, 157, 23], + "translation": [0.25, 0, 0], + "scale": [0.90352, 0.90352, 0.90352] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 13, 7] + }, + "fixed": { + "rotation": [25, 0, 0], + "translation": [0, 3, 0.25], + "scale": [0.83594, 0.83594, 0.83594] + }, + "on_shelf": { + "rotation": [0, -180, 0] + } + }, + "groups": [ + { + "name": "group", + "origin": [7, 0, 8], + "scope": 0, + "color": 0, + "children": [0, 1, 2] + } + ] +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/blue_herb.json b/_sa_food_models/09_草药/blue_herb.json new file mode 100644 index 0000000..4fa3ba7 --- /dev/null +++ b/_sa_food_models/09_草药/blue_herb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/blue_herb" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/crushed_blue_herb.json b/_sa_food_models/09_草药/crushed_blue_herb.json new file mode 100644 index 0000000..b921180 --- /dev/null +++ b/_sa_food_models/09_草药/crushed_blue_herb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/crushed_blue_herb" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/crushed_green_herb.json b/_sa_food_models/09_草药/crushed_green_herb.json new file mode 100644 index 0000000..587c4b7 --- /dev/null +++ b/_sa_food_models/09_草药/crushed_green_herb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/crushed_green_herb" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/crushed_red_herb.json b/_sa_food_models/09_草药/crushed_red_herb.json new file mode 100644 index 0000000..690fad4 --- /dev/null +++ b/_sa_food_models/09_草药/crushed_red_herb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/crushed_red_herb" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/crushed_yellow_herb.json b/_sa_food_models/09_草药/crushed_yellow_herb.json new file mode 100644 index 0000000..caee75c --- /dev/null +++ b/_sa_food_models/09_草药/crushed_yellow_herb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/crushed_yellow_herb" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/green_herb.json b/_sa_food_models/09_草药/green_herb.json new file mode 100644 index 0000000..3004917 --- /dev/null +++ b/_sa_food_models/09_草药/green_herb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/green_herb" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_gb_herbs.json b/_sa_food_models/09_草药/mixed_gb_herbs.json new file mode 100644 index 0000000..aeca01e --- /dev/null +++ b/_sa_food_models/09_草药/mixed_gb_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_gb_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_gg_herbs.json b/_sa_food_models/09_草药/mixed_gg_herbs.json new file mode 100644 index 0000000..632da39 --- /dev/null +++ b/_sa_food_models/09_草药/mixed_gg_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_gg_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_ggb_herbs.json b/_sa_food_models/09_草药/mixed_ggb_herbs.json new file mode 100644 index 0000000..3c559c1 --- /dev/null +++ b/_sa_food_models/09_草药/mixed_ggb_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_ggb_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_ggg_herbs.json b/_sa_food_models/09_草药/mixed_ggg_herbs.json new file mode 100644 index 0000000..3dbe90e --- /dev/null +++ b/_sa_food_models/09_草药/mixed_ggg_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_ggg_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_ggr_herbs.json b/_sa_food_models/09_草药/mixed_ggr_herbs.json new file mode 100644 index 0000000..de8a934 --- /dev/null +++ b/_sa_food_models/09_草药/mixed_ggr_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_ggr_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_ggy_herbs.json b/_sa_food_models/09_草药/mixed_ggy_herbs.json new file mode 100644 index 0000000..086dffe --- /dev/null +++ b/_sa_food_models/09_草药/mixed_ggy_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_ggy_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_gr_herbs.json b/_sa_food_models/09_草药/mixed_gr_herbs.json new file mode 100644 index 0000000..2facc60 --- /dev/null +++ b/_sa_food_models/09_草药/mixed_gr_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_gr_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_grb_herbs.json b/_sa_food_models/09_草药/mixed_grb_herbs.json new file mode 100644 index 0000000..25d81b8 --- /dev/null +++ b/_sa_food_models/09_草药/mixed_grb_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_grb_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_gry_herbs.json b/_sa_food_models/09_草药/mixed_gry_herbs.json new file mode 100644 index 0000000..4c7c63e --- /dev/null +++ b/_sa_food_models/09_草药/mixed_gry_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_gry_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_gy_herbs.json b/_sa_food_models/09_草药/mixed_gy_herbs.json new file mode 100644 index 0000000..6f4ef5b --- /dev/null +++ b/_sa_food_models/09_草药/mixed_gy_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_gy_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_gyb_herbs.json b/_sa_food_models/09_草药/mixed_gyb_herbs.json new file mode 100644 index 0000000..b3fa8c2 --- /dev/null +++ b/_sa_food_models/09_草药/mixed_gyb_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_gyb_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/mixed_rb_herbs.json b/_sa_food_models/09_草药/mixed_rb_herbs.json new file mode 100644 index 0000000..9335588 --- /dev/null +++ b/_sa_food_models/09_草药/mixed_rb_herbs.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/mixed_rb_herbs" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/red_herb.json b/_sa_food_models/09_草药/red_herb.json new file mode 100644 index 0000000..6e06028 --- /dev/null +++ b/_sa_food_models/09_草药/red_herb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/red_herb" + } +} \ No newline at end of file diff --git a/_sa_food_models/09_草药/yellow_herb.json b/_sa_food_models/09_草药/yellow_herb.json new file mode 100644 index 0000000..ca9297b --- /dev/null +++ b/_sa_food_models/09_草药/yellow_herb.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "sa_combat:item/yellow_herb" + } +} \ No newline at end of file diff --git a/_sa_food_textures/barbecue_chips_bag.png b/_sa_food_textures/barbecue_chips_bag.png new file mode 100644 index 0000000..340534a Binary files /dev/null and b/_sa_food_textures/barbecue_chips_bag.png differ diff --git a/_sa_food_textures/beer.png b/_sa_food_textures/beer.png new file mode 100644 index 0000000..c01a6ba Binary files /dev/null and b/_sa_food_textures/beer.png differ diff --git a/_sa_food_textures/blue_herb.png b/_sa_food_textures/blue_herb.png new file mode 100644 index 0000000..44628d1 Binary files /dev/null and b/_sa_food_textures/blue_herb.png differ diff --git a/_sa_food_textures/candy_package.png b/_sa_food_textures/candy_package.png new file mode 100644 index 0000000..d71d23d Binary files /dev/null and b/_sa_food_textures/candy_package.png differ diff --git a/_sa_food_textures/canned_foods/canned_beans.png b/_sa_food_textures/canned_foods/canned_beans.png new file mode 100644 index 0000000..1c6fae8 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_beans.png differ diff --git a/_sa_food_textures/canned_foods/canned_beans_p.png b/_sa_food_textures/canned_foods/canned_beans_p.png new file mode 100644 index 0000000..f5a1cdc Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_beans_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_carrots.png b/_sa_food_textures/canned_foods/canned_carrots.png new file mode 100644 index 0000000..2324596 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_carrots.png differ diff --git a/_sa_food_textures/canned_foods/canned_carrots_p.png b/_sa_food_textures/canned_foods/canned_carrots_p.png new file mode 100644 index 0000000..fa32c96 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_carrots_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_chilli.png b/_sa_food_textures/canned_foods/canned_chilli.png new file mode 100644 index 0000000..16d317b Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_chilli.png differ diff --git a/_sa_food_textures/canned_foods/canned_chilli_p.png b/_sa_food_textures/canned_foods/canned_chilli_p.png new file mode 100644 index 0000000..1415e9a Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_chilli_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_corn.png b/_sa_food_textures/canned_foods/canned_corn.png new file mode 100644 index 0000000..f52dac5 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_corn.png differ diff --git a/_sa_food_textures/canned_foods/canned_corn_p.png b/_sa_food_textures/canned_foods/canned_corn_p.png new file mode 100644 index 0000000..71a7d22 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_corn_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_corned_beef.png b/_sa_food_textures/canned_foods/canned_corned_beef.png new file mode 100644 index 0000000..3723da3 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_corned_beef.png differ diff --git a/_sa_food_textures/canned_foods/canned_corned_beef_p.png b/_sa_food_textures/canned_foods/canned_corned_beef_p.png new file mode 100644 index 0000000..1415e9a Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_corned_beef_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_dog_food.png b/_sa_food_textures/canned_foods/canned_dog_food.png new file mode 100644 index 0000000..461b445 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_dog_food.png differ diff --git a/_sa_food_textures/canned_foods/canned_evaporated_milk.png b/_sa_food_textures/canned_foods/canned_evaporated_milk.png new file mode 100644 index 0000000..dc05069 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_evaporated_milk.png differ diff --git a/_sa_food_textures/canned_foods/canned_evaporated_milk_p.png b/_sa_food_textures/canned_foods/canned_evaporated_milk_p.png new file mode 100644 index 0000000..2828b73 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_evaporated_milk_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_fruit_cocktail.png b/_sa_food_textures/canned_foods/canned_fruit_cocktail.png new file mode 100644 index 0000000..5257344 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_fruit_cocktail.png differ diff --git a/_sa_food_textures/canned_foods/canned_fruit_cocktail_p.png b/_sa_food_textures/canned_foods/canned_fruit_cocktail_p.png new file mode 100644 index 0000000..40bd8f4 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_fruit_cocktail_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_mushroom_soup.png b/_sa_food_textures/canned_foods/canned_mushroom_soup.png new file mode 100644 index 0000000..8e54528 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_mushroom_soup.png differ diff --git a/_sa_food_textures/canned_foods/canned_mushroom_soup_p.png b/_sa_food_textures/canned_foods/canned_mushroom_soup_p.png new file mode 100644 index 0000000..f15a39c Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_mushroom_soup_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_peaches.png b/_sa_food_textures/canned_foods/canned_peaches.png new file mode 100644 index 0000000..a0d34ef Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_peaches.png differ diff --git a/_sa_food_textures/canned_foods/canned_peaches_p.png b/_sa_food_textures/canned_foods/canned_peaches_p.png new file mode 100644 index 0000000..b65bff6 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_peaches_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_peas.png b/_sa_food_textures/canned_foods/canned_peas.png new file mode 100644 index 0000000..dab09d8 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_peas.png differ diff --git a/_sa_food_textures/canned_foods/canned_peas_p.png b/_sa_food_textures/canned_foods/canned_peas_p.png new file mode 100644 index 0000000..d6eadff Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_peas_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_pineapple.png b/_sa_food_textures/canned_foods/canned_pineapple.png new file mode 100644 index 0000000..ba180bd Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_pineapple.png differ diff --git a/_sa_food_textures/canned_foods/canned_pineapple_p.png b/_sa_food_textures/canned_foods/canned_pineapple_p.png new file mode 100644 index 0000000..1af8b83 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_pineapple_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_potato.png b/_sa_food_textures/canned_foods/canned_potato.png new file mode 100644 index 0000000..f41957c Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_potato.png differ diff --git a/_sa_food_textures/canned_foods/canned_sardines.png b/_sa_food_textures/canned_foods/canned_sardines.png new file mode 100644 index 0000000..1890dc0 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_sardines.png differ diff --git a/_sa_food_textures/canned_foods/canned_sardines_p.png b/_sa_food_textures/canned_foods/canned_sardines_p.png new file mode 100644 index 0000000..2b58d30 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_sardines_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_spaghetti_bolognese.png b/_sa_food_textures/canned_foods/canned_spaghetti_bolognese.png new file mode 100644 index 0000000..01158ac Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_spaghetti_bolognese.png differ diff --git a/_sa_food_textures/canned_foods/canned_spaghetti_bolognese_p.png b/_sa_food_textures/canned_foods/canned_spaghetti_bolognese_p.png new file mode 100644 index 0000000..1415e9a Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_spaghetti_bolognese_p.png differ diff --git a/_sa_food_textures/canned_foods/canned_tuna.png b/_sa_food_textures/canned_foods/canned_tuna.png new file mode 100644 index 0000000..fc28e7a Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_tuna.png differ diff --git a/_sa_food_textures/canned_foods/canned_vegetable_soup.png b/_sa_food_textures/canned_foods/canned_vegetable_soup.png new file mode 100644 index 0000000..7368619 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_vegetable_soup.png differ diff --git a/_sa_food_textures/canned_foods/canned_vegetable_soup_p.png b/_sa_food_textures/canned_foods/canned_vegetable_soup_p.png new file mode 100644 index 0000000..43fd676 Binary files /dev/null and b/_sa_food_textures/canned_foods/canned_vegetable_soup_p.png differ diff --git a/_sa_food_textures/canned_foods/fruit_beverage.png b/_sa_food_textures/canned_foods/fruit_beverage.png new file mode 100644 index 0000000..3db4559 Binary files /dev/null and b/_sa_food_textures/canned_foods/fruit_beverage.png differ diff --git a/_sa_food_textures/canned_foods/fruit_beverage_open.png b/_sa_food_textures/canned_foods/fruit_beverage_open.png new file mode 100644 index 0000000..55c22a3 Binary files /dev/null and b/_sa_food_textures/canned_foods/fruit_beverage_open.png differ diff --git a/_sa_food_textures/cereal.png b/_sa_food_textures/cereal.png new file mode 100644 index 0000000..2f49874 Binary files /dev/null and b/_sa_food_textures/cereal.png differ diff --git a/_sa_food_textures/cereal_fruit_loops.png b/_sa_food_textures/cereal_fruit_loops.png new file mode 100644 index 0000000..a9cbd4a Binary files /dev/null and b/_sa_food_textures/cereal_fruit_loops.png differ diff --git a/_sa_food_textures/cereal_kelloggys.png b/_sa_food_textures/cereal_kelloggys.png new file mode 100644 index 0000000..f9d1f41 Binary files /dev/null and b/_sa_food_textures/cereal_kelloggys.png differ diff --git a/_sa_food_textures/chocolate_bar.png b/_sa_food_textures/chocolate_bar.png new file mode 100644 index 0000000..c733e18 Binary files /dev/null and b/_sa_food_textures/chocolate_bar.png differ diff --git a/_sa_food_textures/coffee.png b/_sa_food_textures/coffee.png new file mode 100644 index 0000000..3591557 Binary files /dev/null and b/_sa_food_textures/coffee.png differ diff --git a/_sa_food_textures/cola.png b/_sa_food_textures/cola.png new file mode 100644 index 0000000..69b83a6 Binary files /dev/null and b/_sa_food_textures/cola.png differ diff --git a/_sa_food_textures/coxinha_dough.png b/_sa_food_textures/coxinha_dough.png new file mode 100644 index 0000000..c68cb17 Binary files /dev/null and b/_sa_food_textures/coxinha_dough.png differ diff --git a/_sa_food_textures/crushed_blue_herb.png b/_sa_food_textures/crushed_blue_herb.png new file mode 100644 index 0000000..405d7ba Binary files /dev/null and b/_sa_food_textures/crushed_blue_herb.png differ diff --git a/_sa_food_textures/crushed_green_herb.png b/_sa_food_textures/crushed_green_herb.png new file mode 100644 index 0000000..0eba8f5 Binary files /dev/null and b/_sa_food_textures/crushed_green_herb.png differ diff --git a/_sa_food_textures/crushed_red_herb.png b/_sa_food_textures/crushed_red_herb.png new file mode 100644 index 0000000..27a28be Binary files /dev/null and b/_sa_food_textures/crushed_red_herb.png differ diff --git a/_sa_food_textures/crushed_yellow_herb.png b/_sa_food_textures/crushed_yellow_herb.png new file mode 100644 index 0000000..1f97d0d Binary files /dev/null and b/_sa_food_textures/crushed_yellow_herb.png differ diff --git a/_sa_food_textures/duff_beer.png b/_sa_food_textures/duff_beer.png new file mode 100644 index 0000000..8a05ce9 Binary files /dev/null and b/_sa_food_textures/duff_beer.png differ diff --git a/_sa_food_textures/energy_bar.png b/_sa_food_textures/energy_bar.png new file mode 100644 index 0000000..9389107 Binary files /dev/null and b/_sa_food_textures/energy_bar.png differ diff --git a/_sa_food_textures/energy_drink.png b/_sa_food_textures/energy_drink.png new file mode 100644 index 0000000..822e43f Binary files /dev/null and b/_sa_food_textures/energy_drink.png differ diff --git a/_sa_food_textures/fanta_grape_soda.png b/_sa_food_textures/fanta_grape_soda.png new file mode 100644 index 0000000..f794f3e Binary files /dev/null and b/_sa_food_textures/fanta_grape_soda.png differ diff --git a/_sa_food_textures/fanta_orange_soda.png b/_sa_food_textures/fanta_orange_soda.png new file mode 100644 index 0000000..6e2944b Binary files /dev/null and b/_sa_food_textures/fanta_orange_soda.png differ diff --git a/_sa_food_textures/fruit_jam.png b/_sa_food_textures/fruit_jam.png new file mode 100644 index 0000000..7979e6a Binary files /dev/null and b/_sa_food_textures/fruit_jam.png differ diff --git a/_sa_food_textures/granola_bar.png b/_sa_food_textures/granola_bar.png new file mode 100644 index 0000000..bc1be23 Binary files /dev/null and b/_sa_food_textures/granola_bar.png differ diff --git a/_sa_food_textures/green_herb.png b/_sa_food_textures/green_herb.png new file mode 100644 index 0000000..dca52e3 Binary files /dev/null and b/_sa_food_textures/green_herb.png differ diff --git a/_sa_food_textures/guarana_soda.png b/_sa_food_textures/guarana_soda.png new file mode 100644 index 0000000..3b036f4 Binary files /dev/null and b/_sa_food_textures/guarana_soda.png differ diff --git a/_sa_food_textures/milk_box.png b/_sa_food_textures/milk_box.png new file mode 100644 index 0000000..103d224 Binary files /dev/null and b/_sa_food_textures/milk_box.png differ diff --git a/_sa_food_textures/milk_gallon.png b/_sa_food_textures/milk_gallon.png new file mode 100644 index 0000000..6ad874f Binary files /dev/null and b/_sa_food_textures/milk_gallon.png differ diff --git a/_sa_food_textures/mixed_gb_herbs.png b/_sa_food_textures/mixed_gb_herbs.png new file mode 100644 index 0000000..c214ba4 Binary files /dev/null and b/_sa_food_textures/mixed_gb_herbs.png differ diff --git a/_sa_food_textures/mixed_gg_herbs.png b/_sa_food_textures/mixed_gg_herbs.png new file mode 100644 index 0000000..3279c4c Binary files /dev/null and b/_sa_food_textures/mixed_gg_herbs.png differ diff --git a/_sa_food_textures/mixed_ggb_herbs.png b/_sa_food_textures/mixed_ggb_herbs.png new file mode 100644 index 0000000..2e1c1b6 Binary files /dev/null and b/_sa_food_textures/mixed_ggb_herbs.png differ diff --git a/_sa_food_textures/mixed_ggg_herbs.png b/_sa_food_textures/mixed_ggg_herbs.png new file mode 100644 index 0000000..405eb95 Binary files /dev/null and b/_sa_food_textures/mixed_ggg_herbs.png differ diff --git a/_sa_food_textures/mixed_ggr_herbs.png b/_sa_food_textures/mixed_ggr_herbs.png new file mode 100644 index 0000000..86f3246 Binary files /dev/null and b/_sa_food_textures/mixed_ggr_herbs.png differ diff --git a/_sa_food_textures/mixed_ggy_herbs.png b/_sa_food_textures/mixed_ggy_herbs.png new file mode 100644 index 0000000..8c2cb3a Binary files /dev/null and b/_sa_food_textures/mixed_ggy_herbs.png differ diff --git a/_sa_food_textures/mixed_gr_herbs.png b/_sa_food_textures/mixed_gr_herbs.png new file mode 100644 index 0000000..e133640 Binary files /dev/null and b/_sa_food_textures/mixed_gr_herbs.png differ diff --git a/_sa_food_textures/mixed_grb_herbs.png b/_sa_food_textures/mixed_grb_herbs.png new file mode 100644 index 0000000..f97c730 Binary files /dev/null and b/_sa_food_textures/mixed_grb_herbs.png differ diff --git a/_sa_food_textures/mixed_gry_herbs.png b/_sa_food_textures/mixed_gry_herbs.png new file mode 100644 index 0000000..6747945 Binary files /dev/null and b/_sa_food_textures/mixed_gry_herbs.png differ diff --git a/_sa_food_textures/mixed_gy_herbs.png b/_sa_food_textures/mixed_gy_herbs.png new file mode 100644 index 0000000..cb1b45b Binary files /dev/null and b/_sa_food_textures/mixed_gy_herbs.png differ diff --git a/_sa_food_textures/mixed_gyb_herbs.png b/_sa_food_textures/mixed_gyb_herbs.png new file mode 100644 index 0000000..3620d53 Binary files /dev/null and b/_sa_food_textures/mixed_gyb_herbs.png differ diff --git a/_sa_food_textures/mixed_rb_herbs.png b/_sa_food_textures/mixed_rb_herbs.png new file mode 100644 index 0000000..bf55711 Binary files /dev/null and b/_sa_food_textures/mixed_rb_herbs.png differ diff --git a/_sa_food_textures/monster.png b/_sa_food_textures/monster.png new file mode 100644 index 0000000..ae83fbb Binary files /dev/null and b/_sa_food_textures/monster.png differ diff --git a/_sa_food_textures/pastel_dough.png b/_sa_food_textures/pastel_dough.png new file mode 100644 index 0000000..7390129 Binary files /dev/null and b/_sa_food_textures/pastel_dough.png differ diff --git a/_sa_food_textures/peach_juice_bottle.png b/_sa_food_textures/peach_juice_bottle.png new file mode 100644 index 0000000..e3080e0 Binary files /dev/null and b/_sa_food_textures/peach_juice_bottle.png differ diff --git a/_sa_food_textures/peanut_butter.png b/_sa_food_textures/peanut_butter.png new file mode 100644 index 0000000..e53461d Binary files /dev/null and b/_sa_food_textures/peanut_butter.png differ diff --git a/_sa_food_textures/pepsi.png b/_sa_food_textures/pepsi.png new file mode 100644 index 0000000..bd2f3cd Binary files /dev/null and b/_sa_food_textures/pepsi.png differ diff --git a/_sa_food_textures/pineapple_juice_bottle.png b/_sa_food_textures/pineapple_juice_bottle.png new file mode 100644 index 0000000..bd1e974 Binary files /dev/null and b/_sa_food_textures/pineapple_juice_bottle.png differ diff --git a/_sa_food_textures/pizza_box.png b/_sa_food_textures/pizza_box.png new file mode 100644 index 0000000..90b228b Binary files /dev/null and b/_sa_food_textures/pizza_box.png differ diff --git a/_sa_food_textures/plain_chips_bag.png b/_sa_food_textures/plain_chips_bag.png new file mode 100644 index 0000000..5fe0e88 Binary files /dev/null and b/_sa_food_textures/plain_chips_bag.png differ diff --git a/_sa_food_textures/red_herb.png b/_sa_food_textures/red_herb.png new file mode 100644 index 0000000..e19dca6 Binary files /dev/null and b/_sa_food_textures/red_herb.png differ diff --git a/_sa_food_textures/salt_vinegar_chips_bag.png b/_sa_food_textures/salt_vinegar_chips_bag.png new file mode 100644 index 0000000..c460183 Binary files /dev/null and b/_sa_food_textures/salt_vinegar_chips_bag.png differ diff --git a/_sa_food_textures/smirkers_bar.png b/_sa_food_textures/smirkers_bar.png new file mode 100644 index 0000000..6669454 Binary files /dev/null and b/_sa_food_textures/smirkers_bar.png differ diff --git a/_sa_food_textures/sniksnak_bar.png b/_sa_food_textures/sniksnak_bar.png new file mode 100644 index 0000000..927b6cb Binary files /dev/null and b/_sa_food_textures/sniksnak_bar.png differ diff --git a/_sa_food_textures/sour_cream_onion_chips_bag.png b/_sa_food_textures/sour_cream_onion_chips_bag.png new file mode 100644 index 0000000..795b51b Binary files /dev/null and b/_sa_food_textures/sour_cream_onion_chips_bag.png differ diff --git a/_sa_food_textures/vodka.png b/_sa_food_textures/vodka.png new file mode 100644 index 0000000..e9f2ebd Binary files /dev/null and b/_sa_food_textures/vodka.png differ diff --git a/_sa_food_textures/whiskey.png b/_sa_food_textures/whiskey.png new file mode 100644 index 0000000..80b63f6 Binary files /dev/null and b/_sa_food_textures/whiskey.png differ diff --git a/_sa_food_textures/wine.png b/_sa_food_textures/wine.png new file mode 100644 index 0000000..11f2c7c Binary files /dev/null and b/_sa_food_textures/wine.png differ diff --git a/_sa_food_textures/yellow_herb.png b/_sa_food_textures/yellow_herb.png new file mode 100644 index 0000000..51d5c3a Binary files /dev/null and b/_sa_food_textures/yellow_herb.png differ diff --git a/_sa_food_textures/手持食物/apple_juice_box.png b/_sa_food_textures/手持食物/apple_juice_box.png new file mode 100644 index 0000000..8ed95f4 Binary files /dev/null and b/_sa_food_textures/手持食物/apple_juice_box.png differ diff --git a/_sa_food_textures/手持食物/berry_juice_box.png b/_sa_food_textures/手持食物/berry_juice_box.png new file mode 100644 index 0000000..3389fd8 Binary files /dev/null and b/_sa_food_textures/手持食物/berry_juice_box.png differ diff --git a/_sa_food_textures/手持食物/big_burger.png b/_sa_food_textures/手持食物/big_burger.png new file mode 100644 index 0000000..43e17d5 Binary files /dev/null and b/_sa_food_textures/手持食物/big_burger.png differ diff --git a/_sa_food_textures/手持食物/big_burger_rotten.png b/_sa_food_textures/手持食物/big_burger_rotten.png new file mode 100644 index 0000000..59b2122 Binary files /dev/null and b/_sa_food_textures/手持食物/big_burger_rotten.png differ diff --git a/_sa_food_textures/手持食物/biscuit.png b/_sa_food_textures/手持食物/biscuit.png new file mode 100644 index 0000000..cba811a Binary files /dev/null and b/_sa_food_textures/手持食物/biscuit.png differ diff --git a/_sa_food_textures/手持食物/biscuit_rotten.png b/_sa_food_textures/手持食物/biscuit_rotten.png new file mode 100644 index 0000000..988aa51 Binary files /dev/null and b/_sa_food_textures/手持食物/biscuit_rotten.png differ diff --git a/_sa_food_textures/手持食物/brigadeiro.png b/_sa_food_textures/手持食物/brigadeiro.png new file mode 100644 index 0000000..c7ff873 Binary files /dev/null and b/_sa_food_textures/手持食物/brigadeiro.png differ diff --git a/_sa_food_textures/手持食物/burger.png b/_sa_food_textures/手持食物/burger.png new file mode 100644 index 0000000..c080fe9 Binary files /dev/null and b/_sa_food_textures/手持食物/burger.png differ diff --git a/_sa_food_textures/手持食物/burger_rotten.png b/_sa_food_textures/手持食物/burger_rotten.png new file mode 100644 index 0000000..188aa99 Binary files /dev/null and b/_sa_food_textures/手持食物/burger_rotten.png differ diff --git a/_sa_food_textures/手持食物/burrito.png b/_sa_food_textures/手持食物/burrito.png new file mode 100644 index 0000000..d6dc709 Binary files /dev/null and b/_sa_food_textures/手持食物/burrito.png differ diff --git a/_sa_food_textures/手持食物/burrito_rotten.png b/_sa_food_textures/手持食物/burrito_rotten.png new file mode 100644 index 0000000..e4ad3ab Binary files /dev/null and b/_sa_food_textures/手持食物/burrito_rotten.png differ diff --git a/_sa_food_textures/手持食物/butter.png b/_sa_food_textures/手持食物/butter.png new file mode 100644 index 0000000..8c1a18f Binary files /dev/null and b/_sa_food_textures/手持食物/butter.png differ diff --git a/_sa_food_textures/手持食物/candys.png b/_sa_food_textures/手持食物/candys.png new file mode 100644 index 0000000..0609544 Binary files /dev/null and b/_sa_food_textures/手持食物/candys.png differ diff --git a/_sa_food_textures/手持食物/cereal_fruit_loops_flakes.png b/_sa_food_textures/手持食物/cereal_fruit_loops_flakes.png new file mode 100644 index 0000000..8c38e85 Binary files /dev/null and b/_sa_food_textures/手持食物/cereal_fruit_loops_flakes.png differ diff --git a/_sa_food_textures/手持食物/cereal_kelloggys_flakes.png b/_sa_food_textures/手持食物/cereal_kelloggys_flakes.png new file mode 100644 index 0000000..00f7efd Binary files /dev/null and b/_sa_food_textures/手持食物/cereal_kelloggys_flakes.png differ diff --git a/_sa_food_textures/手持食物/cheese.png b/_sa_food_textures/手持食物/cheese.png new file mode 100644 index 0000000..936ab3b Binary files /dev/null and b/_sa_food_textures/手持食物/cheese.png differ diff --git a/_sa_food_textures/手持食物/cheese_bread.png b/_sa_food_textures/手持食物/cheese_bread.png new file mode 100644 index 0000000..206a38b Binary files /dev/null and b/_sa_food_textures/手持食物/cheese_bread.png differ diff --git a/_sa_food_textures/手持食物/cheese_burger.png b/_sa_food_textures/手持食物/cheese_burger.png new file mode 100644 index 0000000..78d8a11 Binary files /dev/null and b/_sa_food_textures/手持食物/cheese_burger.png differ diff --git a/_sa_food_textures/手持食物/cheese_burger_rotten.png b/_sa_food_textures/手持食物/cheese_burger_rotten.png new file mode 100644 index 0000000..73771cf Binary files /dev/null and b/_sa_food_textures/手持食物/cheese_burger_rotten.png differ diff --git a/_sa_food_textures/手持食物/chips.png b/_sa_food_textures/手持食物/chips.png new file mode 100644 index 0000000..0799a42 Binary files /dev/null and b/_sa_food_textures/手持食物/chips.png differ diff --git a/_sa_food_textures/手持食物/coxinha.png b/_sa_food_textures/手持食物/coxinha.png new file mode 100644 index 0000000..0c439de Binary files /dev/null and b/_sa_food_textures/手持食物/coxinha.png differ diff --git a/_sa_food_textures/手持食物/donut.png b/_sa_food_textures/手持食物/donut.png new file mode 100644 index 0000000..e1a69a1 Binary files /dev/null and b/_sa_food_textures/手持食物/donut.png differ diff --git a/_sa_food_textures/手持食物/donut_rotten.png b/_sa_food_textures/手持食物/donut_rotten.png new file mode 100644 index 0000000..d3c6990 Binary files /dev/null and b/_sa_food_textures/手持食物/donut_rotten.png differ diff --git a/_sa_food_textures/手持食物/empty_juice_box.png b/_sa_food_textures/手持食物/empty_juice_box.png new file mode 100644 index 0000000..aea84b4 Binary files /dev/null and b/_sa_food_textures/手持食物/empty_juice_box.png differ diff --git a/_sa_food_textures/手持食物/grape_juice_box.png b/_sa_food_textures/手持食物/grape_juice_box.png new file mode 100644 index 0000000..39799f8 Binary files /dev/null and b/_sa_food_textures/手持食物/grape_juice_box.png differ diff --git a/_sa_food_textures/手持食物/hot_dog.png b/_sa_food_textures/手持食物/hot_dog.png new file mode 100644 index 0000000..9a5ca00 Binary files /dev/null and b/_sa_food_textures/手持食物/hot_dog.png differ diff --git a/_sa_food_textures/手持食物/hot_dog_rotten.png b/_sa_food_textures/手持食物/hot_dog_rotten.png new file mode 100644 index 0000000..9f8dbef Binary files /dev/null and b/_sa_food_textures/手持食物/hot_dog_rotten.png differ diff --git a/_sa_food_textures/手持食物/meat_pastel.png b/_sa_food_textures/手持食物/meat_pastel.png new file mode 100644 index 0000000..4cd5c4d Binary files /dev/null and b/_sa_food_textures/手持食物/meat_pastel.png differ diff --git a/_sa_food_textures/手持食物/orange_juice_box.png b/_sa_food_textures/手持食物/orange_juice_box.png new file mode 100644 index 0000000..a35dd8a Binary files /dev/null and b/_sa_food_textures/手持食物/orange_juice_box.png differ diff --git a/_sa_food_textures/手持食物/pacoquita.png b/_sa_food_textures/手持食物/pacoquita.png new file mode 100644 index 0000000..0cce972 Binary files /dev/null and b/_sa_food_textures/手持食物/pacoquita.png differ diff --git a/_sa_food_textures/手持食物/particle_granola.png b/_sa_food_textures/手持食物/particle_granola.png new file mode 100644 index 0000000..704215e Binary files /dev/null and b/_sa_food_textures/手持食物/particle_granola.png differ diff --git a/_sa_food_textures/手持食物/particule_smirkers.png b/_sa_food_textures/手持食物/particule_smirkers.png new file mode 100644 index 0000000..4730841 Binary files /dev/null and b/_sa_food_textures/手持食物/particule_smirkers.png differ diff --git a/_sa_food_textures/手持食物/pizza.png b/_sa_food_textures/手持食物/pizza.png new file mode 100644 index 0000000..5e55707 Binary files /dev/null and b/_sa_food_textures/手持食物/pizza.png differ diff --git a/_sa_food_textures/手持食物/raw_cheese_pastel.png b/_sa_food_textures/手持食物/raw_cheese_pastel.png new file mode 100644 index 0000000..96142ab Binary files /dev/null and b/_sa_food_textures/手持食物/raw_cheese_pastel.png differ diff --git a/_sa_food_textures/手持食物/raw_coxinha.png b/_sa_food_textures/手持食物/raw_coxinha.png new file mode 100644 index 0000000..d417fe4 Binary files /dev/null and b/_sa_food_textures/手持食物/raw_coxinha.png differ diff --git a/_sa_food_textures/手持食物/raw_meat_pastel.png b/_sa_food_textures/手持食物/raw_meat_pastel.png new file mode 100644 index 0000000..9978209 Binary files /dev/null and b/_sa_food_textures/手持食物/raw_meat_pastel.png differ diff --git a/_sa_food_textures/手持食物/raw_wind_pastel.png b/_sa_food_textures/手持食物/raw_wind_pastel.png new file mode 100644 index 0000000..ebe308c Binary files /dev/null and b/_sa_food_textures/手持食物/raw_wind_pastel.png differ diff --git a/_sa_food_textures/手持食物/rotten_coxinha.png b/_sa_food_textures/手持食物/rotten_coxinha.png new file mode 100644 index 0000000..bc4806f Binary files /dev/null and b/_sa_food_textures/手持食物/rotten_coxinha.png differ diff --git a/_sa_food_textures/手持食物/saltine_cracker.png b/_sa_food_textures/手持食物/saltine_cracker.png new file mode 100644 index 0000000..2a8b1e7 Binary files /dev/null and b/_sa_food_textures/手持食物/saltine_cracker.png differ diff --git a/_sa_food_textures/手持食物/taco.png b/_sa_food_textures/手持食物/taco.png new file mode 100644 index 0000000..d1c7fbd Binary files /dev/null and b/_sa_food_textures/手持食物/taco.png differ diff --git a/_sa_food_textures/手持食物/taco_rotten.png b/_sa_food_textures/手持食物/taco_rotten.png new file mode 100644 index 0000000..329d09d Binary files /dev/null and b/_sa_food_textures/手持食物/taco_rotten.png differ diff --git a/_sa_food_textures/手持食物/toast.png b/_sa_food_textures/手持食物/toast.png new file mode 100644 index 0000000..1d9c7a2 Binary files /dev/null and b/_sa_food_textures/手持食物/toast.png differ diff --git a/_sa_food_textures/手持食物/toast_rotten.png b/_sa_food_textures/手持食物/toast_rotten.png new file mode 100644 index 0000000..0586ca1 Binary files /dev/null and b/_sa_food_textures/手持食物/toast_rotten.png differ diff --git a/_sa_food_textures/手持食物/waffles.png b/_sa_food_textures/手持食物/waffles.png new file mode 100644 index 0000000..47d527c Binary files /dev/null and b/_sa_food_textures/手持食物/waffles.png differ diff --git a/_sa_food_textures/手持食物/waffles_rotten.png b/_sa_food_textures/手持食物/waffles_rotten.png new file mode 100644 index 0000000..8f20d6c Binary files /dev/null and b/_sa_food_textures/手持食物/waffles_rotten.png differ diff --git a/_sa_food_textures/手持食物/wind_pastel.png b/_sa_food_textures/手持食物/wind_pastel.png new file mode 100644 index 0000000..77a8fe7 Binary files /dev/null and b/_sa_food_textures/手持食物/wind_pastel.png differ diff --git a/_sa_hanhua_out/_preview_craft_cn.png b/_sa_hanhua_out/_preview_craft_cn.png new file mode 100644 index 0000000..350fd43 Binary files /dev/null and b/_sa_hanhua_out/_preview_craft_cn.png differ diff --git a/_sa_hanhua_out/_tmp/add_customtips.py b/_sa_hanhua_out/_tmp/add_customtips.py new file mode 100644 index 0000000..1e27b09 --- /dev/null +++ b/_sa_hanhua_out/_tmp/add_customtips.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +"""给 71 个材料 beh json 添加 netease:customtips 描述,清理 lang 无效 .desc 条目""" +import csv, os, json + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +DROP = {'box_of_nails', 'box_of_paperclips', 'box_of_screws', 'gunpowder_bottle', 'rope'} + +SPECIAL = { + 'dirty_water_bottle': '饮用可能引起饥饿', + 'generator_manual': '学习手册并完成实践训练以操作汽油发电机。', + 'matchbox': '点燃方块和火焰', + 'sterilized_rags': '清洁医用布。使用后返还脏抹布', + 'jerry_can': '用于储存液体:右键液体源收集,Shift+右键倒出', + 'saw_blade': '锯子部件,用于制作工具', + 'money': '战利品货币', + 'money_bundle': '一捆货币', + 'blank': '空白物品', +} +META = ('ashen_steel_ingot', 'ashen_steel_mixture', 'ashen_steel_nugget', 'ashen_steel_rod', 'metal_pipe', + 'metal_sheet', 'small_metal_sheet', 'scrap_nugget', 'diamond_nugget', 'netherite_nugget') +FABRIC = ('cloth', 'dirty_rags', 'dish_towel', 'fabric_patch', 'fiber_fabric', 'polyester', + 'rags', 'sterilized_rags', 'kevlar', 'leather_strip') +THREAD = ('thread', 'kevlar_thread', 'polyester_thread', 'copper_wire', 'insulated_copper_wire', 'wire') +FASTENER = ('nails', 'screws', 'box_of_nails', 'box_of_screws', 'box_of_paperclips', 'paperclip') +SCRAP = ('metal_scrap', 'electric_scrap', 'scrap_wood') +PLASTIC = ('plastic', 'plastic_bag', 'plastic_plate', 'cardboard') +ADHESIVE = ('glue', 'medical_adhesive', 'adhesive_tape', 'duct_tape') + +def desc(name): + if name in SPECIAL: + return SPECIAL[name] + if name in META: + return '用于锻造与回收的金属材料。' + if name in SCRAP: + return '可回收利用的材料。' + if name in FABRIC: + return '用于缝制、修复与回收的织物材料。' + if name in THREAD: + return '用于制作与缝合的线材。' + if name in FASTENER: + return '用于组装的紧固件。' + if name in PLASTIC: + return '可用于制作物品的塑料材料。' + if name in ADHESIVE: + return '修复与组装的粘合材料。' + if name in ('battery', 'camera', 'cellphone', 'classic_watch', 'falsh_lights'): + return '可拆解的电子元件。' + if name in ('sulfur', 'sulfur_dust', 'charcoal_dust'): + return '可用于制作的化学材料。' + if name in ('empty_can', 'dented_can', 'tin_can', 'empty_glass_bottle'): + return '空容器,可回收利用。' + if name in ('water_bottle', 'water_bottle2', 'alcohol', 'rubbing_alcohol', 'cleaning_liquid', + 'hair_gel', 'fermented_mash', 'gasoline_bucket'): + return '装有液体的容器。' + if name == 'lunch_bag': + return '存放食物的袋子。' + return '合成与回收材料。' + +mats = [] +with open(os.path.join(BASE, '_sa_materials.csv'), encoding='utf-8-sig') as f: + for row in csv.reader(f): + if row and row[1].endswith('.png') and row[0].isdigit() and row[1][:-4] not in DROP: + mats.append(row[1][:-4]) + +updated = 0 +for m in mats: + p = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_%s.json' % m) + d = json.load(open(p, encoding='utf-8')) + d['minecraft:item']['components']['netease:customtips'] = {'value': desc(m)} + json.dump(d, open(p, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + updated += 1 +print('beh json 添加 customtips 描述:', updated) + +LP = os.path.join(BASE, 'resource_pack_t7eJjrxY/texts/zh_CN.lang') +lines = open(LP, encoding='utf-8').read().splitlines() +keep = [l for l in lines if not (l.startswith('item.dn_sa:') and '.desc=' in l)] +open(LP, 'w', encoding='utf-8').write('\n'.join(keep) + ('\n' if keep else '')) +print('lang 清理 .desc 无效条目:', len(lines) - len(keep), '| 剩余行:', len(keep)) + +p = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_scrap.json') +print('示例 metal_scrap components:', json.dumps(json.load(open(p, encoding='utf-8'))['minecraft:item']['components'], ensure_ascii=False)) diff --git a/_sa_hanhua_out/_tmp/add_drinks.py b/_sa_hanhua_out/_tmp/add_drinks.py new file mode 100644 index 0000000..771154c --- /dev/null +++ b/_sa_hanhua_out/_tmp/add_drinks.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +"""给可饮用液体材料添加饮用功能:beh food 组件 + res drink 动画""" +import os, json + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +DRINKS = ['alcohol', 'rubbing_alcohol', 'cleaning_liquid', 'hair_gel', 'fermented_mash'] + +for m in DRINKS: + # beh json + p = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_%s.json' % m) + d = json.load(open(p, encoding='utf-8')) + c = d['minecraft:item']['components'] + c['minecraft:use_duration'] = 32 + c['minecraft:food'] = { + 'nutrition': 2, + 'saturation_modifier': 'low', + 'can_always_eat': True + } + json.dump(d, open(p, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + # res json + rp = os.path.join(BASE, 'resource_pack_t7eJjrxY/netease_items_res/dn_sa_%s.json' % m) + r = json.load(open(rp, encoding='utf-8')) + r['minecraft:item']['components']['minecraft:use_animation'] = 'drink' + json.dump(r, open(rp, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + print('已添加饮用功能:', m) + +# 验证 +p = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_alcohol.json') +print(json.dumps(json.load(open(p, encoding='utf-8'))['minecraft:item']['components'], ensure_ascii=False, indent=1)) diff --git a/_sa_hanhua_out/_tmp/add_materials.py b/_sa_hanhua_out/_tmp/add_materials.py new file mode 100644 index 0000000..6072fb4 --- /dev/null +++ b/_sa_hanhua_out/_tmp/add_materials.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +"""把 sa_core 76 个材料做成网易版 AddOn 物品:beh json + res json + item_texture + zh_CN.lang + 贴图""" +import csv, os, json, shutil + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +BEH = os.path.join(BASE, 'behavior_pack_kcH4M5u0', 'netease_items_beh') +RES = os.path.join(BASE, 'resource_pack_t7eJjrxY', 'netease_items_res') +TEX = os.path.join(BASE, 'resource_pack_t7eJjrxY', 'textures', 'items') +SRC_TEX = os.path.join(BASE, '_sa_material_textures') +ITEM_TEX = os.path.join(BASE, 'resource_pack_t7eJjrxY', 'textures', 'item_texture.json') +LANG = os.path.join(BASE, 'resource_pack_t7eJjrxY', 'texts', 'zh_CN.lang') + +# 读取材料清单(序号,贴图文件,物品ID,中文名,英文名,路径) +mats = [] +with open(os.path.join(BASE, '_sa_materials.csv'), encoding='utf-8-sig') as f: + for row in csv.reader(f): + if row and row[1].endswith('.png') and row[0].isdigit(): + mats.append((row[1][:-4], row[3])) # (name, zh) + +# 描述:特判字典 + 关键词兜底 +SPECIAL = { + 'dirty_water_bottle': '饮用可能引起饥饿', + 'generator_manual': '学习手册并完成实践训练以操作汽油发电机。', + 'matchbox': '点燃方块和火焰', + 'sterilized_rags': '清洁医用布。使用后返还脏抹布', + 'rope': '可放置且可攀爬,落上时可防止摔落伤害', + 'jerry_can': '用于储存液体:右键液体源收集,Shift+右键倒出', + 'saw_blade': '锯子部件,用于制作工具', + 'money': '战利品货币', + 'money_bundle': '一捆货币', + 'blank': '', +} +META_KEYS = ('ashen_steel_ingot', 'ashen_steel_mixture', 'ashen_steel_nugget', 'ashen_steel_rod', + 'metal_pipe', 'metal_sheet', 'small_metal_sheet', 'scrap_nugget', + 'diamond_nugget', 'netherite_nugget') +FABRIC_KEYS = ('cloth', 'dirty_rags', 'dish_towel', 'fabric_patch', 'fiber_fabric', 'polyester', + 'rags', 'sterilized_rags', 'kevlar', 'leather_strip') +THREAD_KEYS = ('thread', 'kevlar_thread', 'polyester_thread', 'copper_wire', 'insulated_copper_wire', 'wire') +FASTENER_KEYS = ('nails', 'screws', 'box_of_nails', 'box_of_screws', 'box_of_paperclips', 'paperclip') +SCRAP_KEYS = ('metal_scrap', 'electric_scrap', 'scrap_wood') +PLASTIC_KEYS = ('plastic', 'plastic_bag', 'plastic_plate', 'cardboard') +ADHESIVE_KEYS = ('glue', 'medical_adhesive', 'adhesive_tape', 'duct_tape') + +def make_desc(name, zh): + if name in SPECIAL: + return SPECIAL[name] + if name in META_KEYS: + return '用于锻造与回收的金属材料。' + if name in SCRAP_KEYS: + return '可回收利用的材料。' + if name in FABRIC_KEYS: + return '用于缝制、修复与回收的织物材料。' + if name in THREAD_KEYS: + return '用于制作与缝合的线材。' + if name in FASTENER_KEYS: + return '用于组装的紧固件。' + if name in PLASTIC_KEYS: + return '可用于制作物品的塑料材料。' + if name in ADHESIVE_KEYS: + return '修复与组装的粘合材料。' + if name in ('battery', 'camera', 'cellphone', 'classic_watch', 'falsh_lights'): + return '可拆解的电子元件。' + if name in ('sulfur', 'sulfur_dust', 'charcoal_dust', 'gunpowder_bottle'): + return '可用于制作的化学材料。' + if name in ('empty_can', 'dented_can', 'tin_can', 'empty_glass_bottle'): + return '空容器,可回收利用。' + if name in ('water_bottle', 'water_bottle2', 'alcohol', 'rubbing_alcohol', 'cleaning_liquid', + 'hair_gel', 'fermented_mash', 'gasoline_bucket'): + return '装有液体的容器。' + if name in ('lunch_bag',): + return '存放食物的袋子。' + return '合成与回收材料。' + +# 1) 生成 beh / res json + 复制贴图 +beh_tpl = {'format_version': '1.10', 'minecraft:item': { + 'components': {'minecraft:max_stack_size': 64}, + 'description': {'category': 'dn_sa', 'identifier': 'dn_sa:%s'}}} +res_tpl = {'format_version': '1.10', 'minecraft:item': { + 'components': {'minecraft:icon': 'dn_sa:%s'}, + 'description': {'identifier': 'dn_sa:%s'}}} + +count = 0 +for name, zh in mats: + beh_path = os.path.join(BEH, 'dn_sa_%s.json' % name) + res_path = os.path.join(RES, 'dn_sa_%s.json' % name) + with open(beh_path, 'w', encoding='utf-8') as f: + json.dump(beh_tpl, f, ensure_ascii=False, indent=4) + with open(res_path, 'w', encoding='utf-8') as f: + json.dump(res_tpl, f, ensure_ascii=False, indent=4) + shutil.copy2(os.path.join(SRC_TEX, name + '.png'), os.path.join(TEX, name + '.png')) + count += 1 +print('已生成物品 json + 复制贴图:', count) + +# 2) item_texture.json 追加 +with open(ITEM_TEX, encoding='utf-8') as f: + it = json.load(f) +added = 0 +for name, zh in mats: + key = 'dn_sa:%s' % name + if key not in it['texture_data']: + it['texture_data'][key] = {'textures': 'textures/items/%s' % name} + added += 1 +with open(ITEM_TEX, 'w', encoding='utf-8') as f: + json.dump(it, f, ensure_ascii=False, indent=4) +print('item_texture.json 新增条目:', added, '| 总数:', len(it['texture_data'])) + +# 3) zh_CN.lang 追加 name + desc +lang = open(LANG, encoding='utf-8').read() +lines_added = 0 +new_lines = [] +existing = set(lang.splitlines()) +for name, zh in mats: + nk = 'item.dn_sa:%s.name=%s' % (name, zh) + dk = 'item.dn_sa:%s.desc=%s' % (name, make_desc(name, zh)) + if nk not in existing: + new_lines.append(nk); new_lines.append(dk); lines_added += 2 +if new_lines: + with open(LANG, 'a', encoding='utf-8') as f: + f.write('\n' + '\n'.join(new_lines) + '\n') +print('zh_CN.lang 追加条目:', lines_added) diff --git a/_sa_hanhua_out/_tmp/check_decor_english.py b/_sa_hanhua_out/_tmp/check_decor_english.py new file mode 100644 index 0000000..2364f48 --- /dev/null +++ b/_sa_hanhua_out/_tmp/check_decor_english.py @@ -0,0 +1,33 @@ +import zipfile, os, subprocess + +jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_decor-forge-1.20.1-1.0.3.jar' +out = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\classes' + +targets = [ + 'com/ogaba/sa_decor/command/SADecorLootCommand.class', + 'com/ogaba/sa_decor/common/loot/DecorLootConfigManager.class', +] + +with zipfile.ZipFile(jar) as z: + for t in targets: + p = os.path.join(out, t.replace('/', os.sep)) + os.makedirs(os.path.dirname(p), exist_ok=True) + with open(p, 'wb') as f: + f.write(z.read(t)) + print('extracted:', t) + +javap = r'D:\我的世界\bin\javap.EXE' +for t in targets: + cname = t[:-6].replace('/', '.') + r = subprocess.run([javap, '-c', '-p', '-classpath', out, cname], capture_output=True, text=True, encoding='utf-8', errors='replace') + text = r.stdout if r.returncode == 0 else r.stderr + with open(os.path.join(out, cname.replace('.', '_') + '.txt'), 'w', encoding='utf-8') as f: + f.write(text) + print('\n=====', cname, '=====') + # 输出含 Survivor 的行上下文 + lines = text.splitlines() + for i, line in enumerate(lines): + if 'Survivor' in line or 'Arsenal' in line: + for j in range(max(0, i-2), min(len(lines), i+4)): + print(lines[j]) + print('---') diff --git a/_sa_hanhua_out/_tmp/check_jianbing.py b/_sa_hanhua_out/_tmp/check_jianbing.py new file mode 100644 index 0000000..63d3290 --- /dev/null +++ b/_sa_hanhua_out/_tmp/check_jianbing.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from PIL import Image +import os +base = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\resource_pack_t7eJjrxY\textures\items" + +# 打印若干物品贴图尺寸对比 +for n in ["burrito", "burrito_rotten", "hot_dog", "taco", "jianbing"]: + p = os.path.join(base, n + ".png") + if os.path.exists(p): + im = Image.open(p) + print(n, im.size, im.mode, os.path.getsize(p)) + +# 校验 jianbing 是否是有效完整PNG且内容是煎饼(采样角点颜色) +p = os.path.join(base, "jianbing.png") +im = Image.open(p) +im.load() +print("jianbing corners:", im.getpixel((0,0)), im.getpixel((15,0)), im.getpixel((0,15)), im.getpixel((15,15))) +print("jianbing center:", im.getpixel((8,8))) \ No newline at end of file diff --git a/_sa_hanhua_out/_tmp/check_names.py b/_sa_hanhua_out/_tmp/check_names.py new file mode 100644 index 0000000..5125c42 --- /dev/null +++ b/_sa_hanhua_out/_tmp/check_names.py @@ -0,0 +1,21 @@ +import zipfile + +base = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out' +jars = { + 'essentials': base + r'\sa_essentials-forge-1.20.1-1.0.0.jar', + 'lib': base + r'\sa_lib-forge-1.20.1-1.0.1.jar', + 'decor': base + r'\sa_decor-forge-1.20.1-1.0.3.jar', +} + +import json +for name, jar in jars.items(): + print('='*30, name, '='*30) + with zipfile.ZipFile(jar) as z: + for n in z.namelist(): + if n.startswith('assets/') and n.endswith('/lang/zh_cn.json'): + data = json.loads(z.read(n).decode('utf-8')) + print('---', n, '---') + for k, v in data.items(): + if 'mod' in k or 'arsenal' in k.lower() or 'survivor' in k.lower() or 'creative' in k or 'tab' in k: + print(f' {k} = {v}') + print() diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition.class new file mode 100644 index 0000000..a4fac55 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.class new file mode 100644 index 0000000..0edce0d Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/CompoundBowClientEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/CompoundBowClientEvents.class new file mode 100644 index 0000000..7b2bdd3 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/CompoundBowClientEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/HitMarkerClientEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/HitMarkerClientEvents.class new file mode 100644 index 0000000..a09cbcf Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/HitMarkerClientEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/SACombatClientForgeEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/SACombatClientForgeEvents.class new file mode 100644 index 0000000..49d065f Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/event/SACombatClientForgeEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/model/SAWeaponGeoModel.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/model/SAWeaponGeoModel.class new file mode 100644 index 0000000..ee7b3ce Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/model/SAWeaponGeoModel.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowCameraAnimation.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowCameraAnimation.class new file mode 100644 index 0000000..9b9b29b Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowCameraAnimation.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowClient.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowClient.class new file mode 100644 index 0000000..77a6b17 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowClient.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowViewSettings.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowViewSettings.class new file mode 100644 index 0000000..591aaa3 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CompoundBowViewSettings.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CrossbowCameraAnimation.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CrossbowCameraAnimation.class new file mode 100644 index 0000000..a0a4814 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/CrossbowCameraAnimation.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/FixedFirstPersonView.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/FixedFirstPersonView.class new file mode 100644 index 0000000..3d28e92 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/FixedFirstPersonView.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/GeoArmorRenderOptimizer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/GeoArmorRenderOptimizer.class new file mode 100644 index 0000000..936fec7 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/GeoArmorRenderOptimizer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/GrenadeCameraAnimation.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/GrenadeCameraAnimation.class new file mode 100644 index 0000000..1797bb7 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/GrenadeCameraAnimation.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/HitMarkerClient.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/HitMarkerClient.class new file mode 100644 index 0000000..172188f Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/HitMarkerClient.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/ImprovisedGrenadeRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/ImprovisedGrenadeRenderer.class new file mode 100644 index 0000000..68a0dbc Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/ImprovisedGrenadeRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/MerchantRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/MerchantRenderer.class new file mode 100644 index 0000000..afc054f Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/MerchantRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/MolotovRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/MolotovRenderer.class new file mode 100644 index 0000000..0718c21 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/MolotovRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailGunAimClient.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailGunAimClient.class new file mode 100644 index 0000000..8e15c9c Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailGunAimClient.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailGunCameraAnimation.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailGunCameraAnimation.class new file mode 100644 index 0000000..b5e8d8b Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailGunCameraAnimation.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailRenderer.class new file mode 100644 index 0000000..8b65bbb Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/NailRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/PlayerArmSkinLayer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/PlayerArmSkinLayer.class new file mode 100644 index 0000000..947a52f Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/PlayerArmSkinLayer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAArmorCurioRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAArmorCurioRenderer.class new file mode 100644 index 0000000..c4b18b5 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAArmorCurioRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAArmorRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAArmorRenderer.class new file mode 100644 index 0000000..b1d50bf Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAArmorRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAWeaponItemRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAWeaponItemRenderer.class new file mode 100644 index 0000000..f5538bc Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SAWeaponItemRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$1.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$1.class new file mode 100644 index 0000000..9ceae05 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$1.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$SmoothResult.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$SmoothResult.class new file mode 100644 index 0000000..a17e0d2 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$SmoothResult.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$StaticGrenadeRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$StaticGrenadeRenderer.class new file mode 100644 index 0000000..cf9ae20 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer$StaticGrenadeRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer.class new file mode 100644 index 0000000..7f19678 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeItemRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadePlayerArmSkinLayer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadePlayerArmSkinLayer.class new file mode 100644 index 0000000..89cc577 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadePlayerArmSkinLayer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeRenderer.class new file mode 100644 index 0000000..b468c54 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/SpecialGrenadeRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalBoltRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalBoltRenderer.class new file mode 100644 index 0000000..dd92d2a Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalBoltRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalTomahawkRenderer$1.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalTomahawkRenderer$1.class new file mode 100644 index 0000000..c24e16e Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalTomahawkRenderer$1.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalTomahawkRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalTomahawkRenderer.class new file mode 100644 index 0000000..c8c8210 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/render/TacticalTomahawkRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent$1.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent$1.class new file mode 100644 index 0000000..25b941b Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent$1.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent.class new file mode 100644 index 0000000..727441f Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintItemDecorator.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintItemDecorator.class new file mode 100644 index 0000000..bbc0854 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintItemDecorator.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintPreviewResolver.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintPreviewResolver.class new file mode 100644 index 0000000..1cdebfd Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintPreviewResolver.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintPreviewResolverFromData.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintPreviewResolverFromData.class new file mode 100644 index 0000000..0c46bbc Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/BlueprintPreviewResolverFromData.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/WeaponClientTooltipComponent$AttachmentRow.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/WeaponClientTooltipComponent$AttachmentRow.class new file mode 100644 index 0000000..d49c857 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/WeaponClientTooltipComponent$AttachmentRow.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/WeaponClientTooltipComponent.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/WeaponClientTooltipComponent.class new file mode 100644 index 0000000..2caff04 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/client/tooltip/WeaponClientTooltipComponent.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/combat/armor/BallisticProtection$HudState.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/combat/armor/BallisticProtection$HudState.class new file mode 100644 index 0000000..13cfa40 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/combat/armor/BallisticProtection$HudState.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/combat/weapon/NailGunItem.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/combat/weapon/NailGunItem.class new file mode 100644 index 0000000..6863cd0 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/combat/weapon/NailGunItem.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/CuriosArmorDurabilityEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/CuriosArmorDurabilityEvents.class new file mode 100644 index 0000000..d76d53f Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/CuriosArmorDurabilityEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatForgeEvents$1.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatForgeEvents$1.class new file mode 100644 index 0000000..49919c4 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatForgeEvents$1.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatForgeEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatForgeEvents.class new file mode 100644 index 0000000..d5f0876 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatForgeEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatModEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatModEvents.class new file mode 100644 index 0000000..53a123d Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/event/SACombatModEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/item/BlueprintItem.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/item/BlueprintItem.class new file mode 100644 index 0000000..9ca8039 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/item/BlueprintItem.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/item/BlueprintTooltipComponent.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/item/BlueprintTooltipComponent.class new file mode 100644 index 0000000..a120390 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/item/BlueprintTooltipComponent.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket.class new file mode 100644 index 0000000..20ec4e4 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_decor/command/SADecorLootCommand.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_decor/command/SADecorLootCommand.class new file mode 100644 index 0000000..af3cca3 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_decor/command/SADecorLootCommand.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_decor/common/loot/DecorLootConfigManager.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_decor/common/loot/DecorLootConfigManager.class new file mode 100644 index 0000000..91eda2d Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_decor/common/loot/DecorLootConfigManager.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackGuiKeyHandler.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackGuiKeyHandler.class new file mode 100644 index 0000000..ff38648 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackGuiKeyHandler.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$Layout.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$Layout.class new file mode 100644 index 0000000..d26a176 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$Layout.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$RenderSnapshot.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$RenderSnapshot.class new file mode 100644 index 0000000..1282234 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$RenderSnapshot.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$SlotVisualState.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$SlotVisualState.class new file mode 100644 index 0000000..7c29d4f Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay$SlotVisualState.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay.class new file mode 100644 index 0000000..66c09e8 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/BackpackInventoryPanelOverlay.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$ParsedWeaponTransform.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$ParsedWeaponTransform.class new file mode 100644 index 0000000..779e3ae Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$ParsedWeaponTransform.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$WeaponMountSide.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$WeaponMountSide.class new file mode 100644 index 0000000..5467386 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$WeaponMountSide.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$WeaponTransform.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$WeaponTransform.class new file mode 100644 index 0000000..f807db5 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer$WeaponTransform.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer.class new file mode 100644 index 0000000..112b897 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/BackpackCurioRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/ClothingCurioRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/ClothingCurioRenderer.class new file mode 100644 index 0000000..d77117c Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/ClothingCurioRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/FlashlightItemRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/FlashlightItemRenderer.class new file mode 100644 index 0000000..372bf3c Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/FlashlightItemRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/GeckoClothingArmorRenderer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/GeckoClothingArmorRenderer.class new file mode 100644 index 0000000..3957603 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/GeckoClothingArmorRenderer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/GeoArmorRenderOptimizer.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/GeoArmorRenderOptimizer.class new file mode 100644 index 0000000..820e731 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/renderer/GeoArmorRenderOptimizer.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/tooltip/ClientBackpackContentsTooltip.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/tooltip/ClientBackpackContentsTooltip.class new file mode 100644 index 0000000..cb4031b Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/client/tooltip/ClientBackpackContentsTooltip.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/BackpackInventoryMenuEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/BackpackInventoryMenuEvents.class new file mode 100644 index 0000000..ef10158 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/BackpackInventoryMenuEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/CuriosArmorDurabilityEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/CuriosArmorDurabilityEvents.class new file mode 100644 index 0000000..d5a8711 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/CuriosArmorDurabilityEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/DrinkCraftingEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/DrinkCraftingEvents.class new file mode 100644 index 0000000..af0fa6d Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/DrinkCraftingEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/ExternalEquipmentStorageTooltipEvents.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/ExternalEquipmentStorageTooltipEvents.class new file mode 100644 index 0000000..3b275dc Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/event/ExternalEquipmentStorageTooltipEvents.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip.class new file mode 100644 index 0000000..34c3d2e Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipSource.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipSource.class new file mode 100644 index 0000000..8f5eed6 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipSource.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipUtil$1.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipUtil$1.class new file mode 100644 index 0000000..030395b Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipUtil$1.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipUtil.class b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipUtil.class new file mode 100644 index 0000000..777f577 Binary files /dev/null and b/_sa_hanhua_out/_tmp/classes/com/ogaba/sa_survival/item/tooltip/EffectTooltipUtil.class differ diff --git a/_sa_hanhua_out/_tmp/classes/com_ogaba_sa_decor_command_SADecorLootCommand.txt b/_sa_hanhua_out/_tmp/classes/com_ogaba_sa_decor_command_SADecorLootCommand.txt new file mode 100644 index 0000000..c9aadcf --- /dev/null +++ b/_sa_hanhua_out/_tmp/classes/com_ogaba_sa_decor_command_SADecorLootCommand.txt @@ -0,0 +1,4271 @@ +Compiled from "SADecorLootCommand.java" +public final class com.ogaba.sa_decor.command.SADecorLootCommand { + public static final java.lang.String LOOT_ITEM_TAG; + + public static final java.lang.String LOOT_SEED_TAG; + + private static final java.lang.String BLOCK_ENTITY_TAG; + + private static final double RAYCAST_DISTANCE; + + private static final int SIMPLE_DEFAULT_WEIGHT; + + private static final int SIMPLE_DEFAULT_MIN_COUNT; + + private static final int SIMPLE_DEFAULT_MAX_COUNT; + + private static final float SIMPLE_DEFAULT_CHANCE; + + private static final com.mojang.brigadier.exceptions.SimpleCommandExceptionType NO_BLOCK_HIT; + + private static final com.mojang.brigadier.exceptions.SimpleCommandExceptionType NOT_LOOT_CONTAINER; + + private static boolean canUseAdminCommands(net.minecraft.commands.CommandSourceStack); + Code: + 0: aload_0 + 1: iconst_2 + 2: invokevirtual #75 // Method net/minecraft/commands/CommandSourceStack.m_6761_:(I)Z + 5: ifeq 10 + 8: iconst_1 + 9: ireturn + 10: aload_0 + 11: invokevirtual #79 // Method net/minecraft/commands/CommandSourceStack.m_81375_:()Lnet/minecraft/server/level/ServerPlayer; + 14: astore_1 + 15: aload_0 + 16: invokevirtual #83 // Method net/minecraft/commands/CommandSourceStack.m_81377_:()Lnet/minecraft/server/MinecraftServer; + 19: aload_1 + 20: invokevirtual #89 // Method net/minecraft/server/level/ServerPlayer.m_36316_:()Lcom/mojang/authlib/GameProfile; + 23: invokevirtual #95 // Method net/minecraft/server/MinecraftServer.m_7779_:(Lcom/mojang/authlib/GameProfile;)Z + 26: ireturn + 27: astore_1 + 28: iconst_0 + 29: ireturn + Exception table: + from to target type + 10 26 27 Class com/mojang/brigadier/exceptions/CommandSyntaxException + + private com.ogaba.sa_decor.command.SADecorLootCommand(); + Code: + 0: aload_0 + 1: invokespecial #105 // Method java/lang/Object."":()V + 4: return + + public static void register(net.minecraftforge.event.RegisterCommandsEvent); + Code: + 0: getstatic #115 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 3: ldc #117 // String Registering SA Decor commands. + 5: invokeinterface #123, 2 // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;)V + 10: aload_0 + 11: invokevirtual #129 // Method net/minecraftforge/event/RegisterCommandsEvent.getDispatcher:()Lcom/mojang/brigadier/CommandDispatcher; + 14: ldc #131 // String sa_decor + 16: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 19: invokedynamic #154, 0 // InvokeDynamic #0:test:()Ljava/util/function/Predicate; + 24: invokevirtual #160 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.requires:(Ljava/util/function/Predicate;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 27: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 30: invokestatic #164 // Method giveCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 33: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 36: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 39: invokestatic #171 // Method lootCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 42: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 45: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 48: invokevirtual #176 // Method com/mojang/brigadier/CommandDispatcher.register:(Lcom/mojang/brigadier/builder/LiteralArgumentBuilder;)Lcom/mojang/brigadier/tree/LiteralCommandNode; + 51: pop + 52: return + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder giveCommand(); + Code: + 0: ldc #181 // String give + 2: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 5: ldc #183 // String loot + 7: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 10: ldc #185 // String config_id + 12: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 15: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 18: ldc #197 // String block_id + 20: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 23: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 26: invokedynamic #213, 0 // InvokeDynamic #1:run:()Lcom/mojang/brigadier/Command; + 31: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 34: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 37: ldc #221 // String locked + 39: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 42: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 45: invokedynamic #232, 0 // InvokeDynamic #2:run:()Lcom/mojang/brigadier/Command; + 50: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 53: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 56: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 59: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 62: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 65: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 68: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder lootCommand(); + Code: + 0: ldc #183 // String loot + 2: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 5: ldc #235 // String help + 7: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 10: invokedynamic #240, 0 // InvokeDynamic #3:run:()Lcom/mojang/brigadier/Command; + 15: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 18: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 21: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 24: ldc #243 // String reload + 26: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 29: invokedynamic #248, 0 // InvokeDynamic #4:run:()Lcom/mojang/brigadier/Command; + 34: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 37: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 40: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 43: ldc #250 // String restore_defaults + 45: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 48: invokedynamic #255, 0 // InvokeDynamic #5:run:()Lcom/mojang/brigadier/Command; + 53: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 56: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 59: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 62: ldc_w #257 // String undo + 65: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 68: invokedynamic #262, 0 // InvokeDynamic #6:run:()Lcom/mojang/brigadier/Command; + 73: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 76: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 79: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 82: ldc_w #264 // String usage + 85: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 88: ldc_w #266 // String profile_id + 91: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 94: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 97: invokedynamic #271, 0 // InvokeDynamic #7:run:()Lcom/mojang/brigadier/Command; + 102: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 105: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 108: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 111: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 114: ldc_w #273 // String cleanup + 117: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 120: invokedynamic #278, 0 // InvokeDynamic #8:run:()Lcom/mojang/brigadier/Command; + 125: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 128: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 131: ldc_w #280 // String remove_missing_profiles + 134: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 137: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 140: invokedynamic #285, 0 // InvokeDynamic #9:run:()Lcom/mojang/brigadier/Command; + 145: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 148: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 151: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 154: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 157: ldc_w #287 // String export + 160: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 163: ldc_w #266 // String profile_id + 166: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 169: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 172: invokedynamic #292, 0 // InvokeDynamic #10:run:()Lcom/mojang/brigadier/Command; + 177: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 180: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 183: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 186: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 189: ldc_w #294 // String import + 192: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 195: ldc_w #296 // String export_id + 198: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 201: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 204: ldc_w #298 // String target_id + 207: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 210: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 213: invokedynamic #303, 0 // InvokeDynamic #11:run:()Lcom/mojang/brigadier/Command; + 218: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 221: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 224: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 227: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 230: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 233: ldc_w #305 // String preset_as + 236: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 239: ldc_w #307 // String preset_id + 242: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 245: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 248: ldc_w #298 // String target_id + 251: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 254: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 257: invokedynamic #312, 0 // InvokeDynamic #12:run:()Lcom/mojang/brigadier/Command; + 262: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 265: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 268: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 271: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 274: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 277: ldc_w #314 // String list + 280: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 283: invokedynamic #319, 0 // InvokeDynamic #13:run:()Lcom/mojang/brigadier/Command; + 288: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 291: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 294: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 297: ldc_w #321 // String folder + 300: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 303: invokedynamic #326, 0 // InvokeDynamic #14:run:()Lcom/mojang/brigadier/Command; + 308: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 311: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 314: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 317: ldc_w #328 // String preset + 320: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 323: invokedynamic #333, 0 // InvokeDynamic #15:run:()Lcom/mojang/brigadier/Command; + 328: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 331: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 334: ldc_w #307 // String preset_id + 337: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 340: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 343: invokedynamic #338, 0 // InvokeDynamic #16:run:()Lcom/mojang/brigadier/Command; + 348: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 351: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 354: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 357: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 360: invokestatic #341 // Method simpleNewCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 363: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 366: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 369: invokestatic #344 // Method simpleAddCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 372: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 375: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 378: invokestatic #347 // Method simpleUseCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 381: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 384: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 387: invokestatic #350 // Method lootGiveCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 390: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 393: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 396: ldc_w #351 // String info + 399: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 402: invokedynamic #356, 0 // InvokeDynamic #17:run:()Lcom/mojang/brigadier/Command; + 407: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 410: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 413: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 416: ldc_w #358 // String clear + 419: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 422: invokedynamic #363, 0 // InvokeDynamic #18:run:()Lcom/mojang/brigadier/Command; + 427: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 430: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 433: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 436: ldc_w #364 // String test + 439: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 442: invokedynamic #369, 0 // InvokeDynamic #19:run:()Lcom/mojang/brigadier/Command; + 447: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 450: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 453: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 456: ldc_w #371 // String lock + 459: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 462: invokedynamic #376, 0 // InvokeDynamic #20:run:()Lcom/mojang/brigadier/Command; + 467: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 470: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 473: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 476: ldc_w #378 // String unlock + 479: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 482: invokedynamic #383, 0 // InvokeDynamic #21:run:()Lcom/mojang/brigadier/Command; + 487: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 490: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 493: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 496: invokestatic #386 // Method advancedLootCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 499: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 502: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 505: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder simpleNewCommand(); + Code: + 0: ldc_w #388 // String new + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc #185 // String config_id + 8: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 11: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 14: invokedynamic #393, 0 // InvokeDynamic #22:run:()Lcom/mojang/brigadier/Command; + 19: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 22: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 25: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 28: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder simpleUseCommand(); + Code: + 0: ldc_w #395 // String use + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc #185 // String config_id + 8: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 11: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 14: invokedynamic #400, 0 // InvokeDynamic #23:run:()Lcom/mojang/brigadier/Command; + 19: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 22: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 25: ldc #221 // String locked + 27: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 30: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 33: invokedynamic #405, 0 // InvokeDynamic #24:run:()Lcom/mojang/brigadier/Command; + 38: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 41: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 44: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 47: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 50: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder simpleAddCommand(); + Code: + 0: ldc_w #407 // String add + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc_w #409 // String hand + 9: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 12: ldc #185 // String config_id + 14: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 17: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 20: invokedynamic #414, 0 // InvokeDynamic #25:run:()Lcom/mojang/brigadier/Command; + 25: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 28: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 31: invokestatic #418 // Method simpleHandEntryArgs:()Lcom/mojang/brigadier/builder/ArgumentBuilder; + 34: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 37: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 40: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 43: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 46: ldc_w #420 // String item + 49: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 52: ldc #185 // String config_id + 54: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 57: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 60: ldc_w #422 // String item_id + 63: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 66: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 69: invokedynamic #427, 0 // InvokeDynamic #26:run:()Lcom/mojang/brigadier/Command; + 74: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 77: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 80: invokestatic #430 // Method simpleItemEntryArgs:()Lcom/mojang/brigadier/builder/ArgumentBuilder; + 83: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 86: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 89: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 92: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 95: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 98: ldc_w #432 // String tag + 101: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 104: ldc #185 // String config_id + 106: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 109: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 112: ldc_w #434 // String tag_id + 115: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 118: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 121: invokedynamic #439, 0 // InvokeDynamic #27:run:()Lcom/mojang/brigadier/Command; + 126: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 129: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 132: invokestatic #442 // Method simpleTagEntryArgs:()Lcom/mojang/brigadier/builder/ArgumentBuilder; + 135: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 138: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 141: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 144: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 147: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 150: ldc_w #444 // String table + 153: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 156: ldc #185 // String config_id + 158: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 161: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 164: ldc_w #446 // String loot_table_id + 167: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 170: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 173: invokedynamic #451, 0 // InvokeDynamic #28:run:()Lcom/mojang/brigadier/Command; + 178: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 181: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 184: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 187: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 190: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 193: areturn + + private static com.mojang.brigadier.builder.ArgumentBuilder simpleHandEntryArgs(); + Code: + 0: ldc_w #454 // String weight + 3: iconst_1 + 4: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 7: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 10: invokedynamic #465, 0 // InvokeDynamic #29:run:()Lcom/mojang/brigadier/Command; + 15: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 18: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 21: ldc_w #467 // String count + 24: iconst_1 + 25: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 28: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 31: invokedynamic #472, 0 // InvokeDynamic #30:run:()Lcom/mojang/brigadier/Command; + 36: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 39: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 42: ldc_w #474 // String chance + 45: fconst_0 + 46: fconst_1 + 47: invokestatic #480 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(FF)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 50: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 53: invokedynamic #485, 0 // InvokeDynamic #31:run:()Lcom/mojang/brigadier/Command; + 58: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 61: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 64: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 67: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 70: ldc_w #487 // String min_count + 73: iconst_1 + 74: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 77: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 80: ldc_w #489 // String max_count + 83: iconst_1 + 84: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 87: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 90: invokedynamic #494, 0 // InvokeDynamic #32:run:()Lcom/mojang/brigadier/Command; + 95: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 98: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 101: ldc_w #474 // String chance + 104: fconst_0 + 105: fconst_1 + 106: invokestatic #480 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(FF)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 109: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 112: invokedynamic #499, 0 // InvokeDynamic #33:run:()Lcom/mojang/brigadier/Command; + 117: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 120: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 123: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 126: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 129: areturn + + private static com.mojang.brigadier.builder.ArgumentBuilder simpleItemEntryArgs(); + Code: + 0: ldc_w #454 // String weight + 3: iconst_1 + 4: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 7: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 10: ldc_w #487 // String min_count + 13: iconst_1 + 14: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 17: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 20: ldc_w #489 // String max_count + 23: iconst_1 + 24: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 27: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 30: ldc_w #474 // String chance + 33: fconst_0 + 34: fconst_1 + 35: invokestatic #480 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(FF)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 38: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 41: invokedynamic #504, 0 // InvokeDynamic #34:run:()Lcom/mojang/brigadier/Command; + 46: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 49: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 52: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 55: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 58: areturn + + private static com.mojang.brigadier.builder.ArgumentBuilder simpleTagEntryArgs(); + Code: + 0: ldc_w #454 // String weight + 3: iconst_1 + 4: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 7: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 10: ldc_w #487 // String min_count + 13: iconst_1 + 14: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 17: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 20: ldc_w #489 // String max_count + 23: iconst_1 + 24: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 27: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 30: ldc_w #474 // String chance + 33: fconst_0 + 34: fconst_1 + 35: invokestatic #480 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(FF)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 38: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 41: invokedynamic #509, 0 // InvokeDynamic #35:run:()Lcom/mojang/brigadier/Command; + 46: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 49: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 52: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 55: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 58: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder advancedLootCommand(); + Code: + 0: ldc_w #511 // String advanced + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: invokedynamic #516, 0 // InvokeDynamic #36:run:()Lcom/mojang/brigadier/Command; + 11: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 14: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 17: invokestatic #519 // Method createCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 20: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 23: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 26: ldc_w #521 // String copy + 29: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 32: ldc_w #523 // String from_id + 35: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 38: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 41: ldc_w #525 // String to_id + 44: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 47: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 50: invokedynamic #530, 0 // InvokeDynamic #37:run:()Lcom/mojang/brigadier/Command; + 55: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 58: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 61: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 64: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 67: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 70: invokestatic #533 // Method configCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 73: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 76: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 79: invokestatic #536 // Method forceOpenCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 82: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 85: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 88: ldc_w #538 // String format + 91: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 94: invokedynamic #543, 0 // InvokeDynamic #38:run:()Lcom/mojang/brigadier/Command; + 99: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 102: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 105: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 108: ldc_w #545 // String refresh + 111: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 114: invokedynamic #550, 0 // InvokeDynamic #39:run:()Lcom/mojang/brigadier/Command; + 119: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 122: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 125: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 128: ldc_w #552 // String clear_inventory + 131: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 134: invokedynamic #557, 0 // InvokeDynamic #40:run:()Lcom/mojang/brigadier/Command; + 139: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 142: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 145: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 148: ldc_w #559 // String reset + 151: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 154: invokedynamic #564, 0 // InvokeDynamic #41:run:()Lcom/mojang/brigadier/Command; + 159: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 162: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 165: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 168: ldc_w #566 // String respawn_now + 171: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 174: invokedynamic #571, 0 // InvokeDynamic #42:run:()Lcom/mojang/brigadier/Command; + 179: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 182: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 185: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 188: ldc_w #573 // String generate + 191: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 194: invokedynamic #578, 0 // InvokeDynamic #43:run:()Lcom/mojang/brigadier/Command; + 199: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 202: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 205: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 208: ldc_w #580 // String set + 211: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 214: ldc #185 // String config_id + 216: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 219: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 222: invokedynamic #585, 0 // InvokeDynamic #44:run:()Lcom/mojang/brigadier/Command; + 227: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 230: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 233: ldc #221 // String locked + 235: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 238: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 241: invokedynamic #590, 0 // InvokeDynamic #45:run:()Lcom/mojang/brigadier/Command; + 246: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 249: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 252: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 255: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 258: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 261: invokestatic #593 // Method addCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 264: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 267: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 270: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder createCommand(); + Code: + 0: ldc_w #595 // String create + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc #185 // String config_id + 8: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 11: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 14: invokedynamic #600, 0 // InvokeDynamic #46:run:()Lcom/mojang/brigadier/Command; + 19: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 22: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 25: ldc_w #602 // String per_player + 28: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 31: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 34: invokedynamic #607, 0 // InvokeDynamic #47:run:()Lcom/mojang/brigadier/Command; + 39: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 42: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 45: ldc_w #609 // String search_enabled + 48: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 51: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 54: invokedynamic #614, 0 // InvokeDynamic #48:run:()Lcom/mojang/brigadier/Command; + 59: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 62: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 65: ldc_w #616 // String lock_enabled + 68: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 71: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 74: invokedynamic #621, 0 // InvokeDynamic #49:run:()Lcom/mojang/brigadier/Command; + 79: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 82: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 85: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 88: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 91: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 94: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 97: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder addCommand(); + Code: + 0: ldc_w #407 // String add + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc #185 // String config_id + 8: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 11: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 14: invokestatic #624 // Method addHandCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 17: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 20: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 23: invokestatic #627 // Method addItemCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 26: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 29: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 32: invokestatic #630 // Method addTagCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 35: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 38: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 41: invokestatic #633 // Method addLootTableCommand:()Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 44: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 47: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 50: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 53: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder lootGiveCommand(); + Code: + 0: ldc #181 // String give + 2: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 5: ldc #185 // String config_id + 7: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 10: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 13: ldc #197 // String block_id + 15: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 18: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 21: invokedynamic #638, 0 // InvokeDynamic #50:run:()Lcom/mojang/brigadier/Command; + 26: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 29: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 32: ldc #221 // String locked + 34: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 37: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 40: invokedynamic #643, 0 // InvokeDynamic #51:run:()Lcom/mojang/brigadier/Command; + 45: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 48: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 51: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 54: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 57: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 60: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder addHandCommand(); + Code: + 0: ldc_w #409 // String hand + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc_w #454 // String weight + 9: iconst_1 + 10: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 13: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 16: ldc_w #467 // String count + 19: iconst_1 + 20: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 23: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 26: ldc_w #474 // String chance + 29: fconst_0 + 30: invokestatic #646 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(F)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 33: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 36: invokedynamic #651, 0 // InvokeDynamic #52:run:()Lcom/mojang/brigadier/Command; + 41: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 44: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 47: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 50: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 53: ldc_w #487 // String min_count + 56: iconst_1 + 57: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 60: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 63: ldc_w #489 // String max_count + 66: iconst_1 + 67: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 70: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 73: ldc_w #474 // String chance + 76: fconst_0 + 77: invokestatic #646 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(F)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 80: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 83: invokedynamic #656, 0 // InvokeDynamic #53:run:()Lcom/mojang/brigadier/Command; + 88: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 91: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 94: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 97: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 100: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 103: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 106: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder addItemCommand(); + Code: + 0: ldc_w #420 // String item + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc_w #422 // String item_id + 9: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 12: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 15: ldc_w #454 // String weight + 18: iconst_1 + 19: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 22: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 25: ldc_w #467 // String count + 28: iconst_1 + 29: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 32: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 35: ldc_w #474 // String chance + 38: fconst_0 + 39: invokestatic #646 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(F)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 42: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 45: invokedynamic #661, 0 // InvokeDynamic #54:run:()Lcom/mojang/brigadier/Command; + 50: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 53: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 56: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 59: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 62: ldc_w #487 // String min_count + 65: iconst_1 + 66: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 69: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 72: ldc_w #489 // String max_count + 75: iconst_1 + 76: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 79: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 82: ldc_w #474 // String chance + 85: fconst_0 + 86: invokestatic #646 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(F)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 89: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 92: invokedynamic #666, 0 // InvokeDynamic #55:run:()Lcom/mojang/brigadier/Command; + 97: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 100: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 103: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 106: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 109: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 112: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 115: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 118: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder addTagCommand(); + Code: + 0: ldc_w #432 // String tag + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc_w #434 // String tag_id + 9: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 12: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 15: ldc_w #454 // String weight + 18: iconst_1 + 19: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 22: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 25: ldc_w #467 // String count + 28: iconst_1 + 29: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 32: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 35: ldc_w #474 // String chance + 38: fconst_0 + 39: invokestatic #646 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(F)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 42: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 45: invokedynamic #671, 0 // InvokeDynamic #56:run:()Lcom/mojang/brigadier/Command; + 50: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 53: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 56: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 59: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 62: ldc_w #487 // String min_count + 65: iconst_1 + 66: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 69: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 72: ldc_w #489 // String max_count + 75: iconst_1 + 76: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 79: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 82: ldc_w #474 // String chance + 85: fconst_0 + 86: invokestatic #646 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(F)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 89: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 92: invokedynamic #676, 0 // InvokeDynamic #57:run:()Lcom/mojang/brigadier/Command; + 97: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 100: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 103: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 106: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 109: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 112: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 115: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 118: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder addLootTableCommand(); + Code: + 0: ldc_w #678 // String loot_table + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc_w #446 // String loot_table_id + 9: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 12: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 15: invokedynamic #683, 0 // InvokeDynamic #58:run:()Lcom/mojang/brigadier/Command; + 20: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 23: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 26: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 29: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder configCommand(); + Code: + 0: ldc_w #685 // String config + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc #185 // String config_id + 8: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 11: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 14: ldc_w #602 // String per_player + 17: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 20: ldc_w #687 // String enabled + 23: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 26: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 29: invokedynamic #692, 0 // InvokeDynamic #59:run:()Lcom/mojang/brigadier/Command; + 34: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 37: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 40: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 43: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 46: ldc_w #694 // String search + 49: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 52: ldc_w #687 // String enabled + 55: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 58: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 61: invokedynamic #699, 0 // InvokeDynamic #60:run:()Lcom/mojang/brigadier/Command; + 66: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 69: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 72: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 75: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 78: ldc_w #371 // String lock + 81: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 84: ldc_w #687 // String enabled + 87: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 90: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 93: invokedynamic #704, 0 // InvokeDynamic #61:run:()Lcom/mojang/brigadier/Command; + 98: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 101: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 104: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 107: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 110: ldc_w #706 // String empty + 113: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 116: ldc_w #687 // String enabled + 119: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 122: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 125: ldc_w #708 // String spawn_chance + 128: fconst_0 + 129: fconst_1 + 130: invokestatic #480 // Method com/mojang/brigadier/arguments/FloatArgumentType.floatArg:(FF)Lcom/mojang/brigadier/arguments/FloatArgumentType; + 133: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 136: invokedynamic #713, 0 // InvokeDynamic #62:run:()Lcom/mojang/brigadier/Command; + 141: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 144: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 147: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 150: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 153: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 156: ldc_w #715 // String respawn + 159: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 162: ldc_w #687 // String enabled + 165: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 168: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 171: ldc_w #717 // String time_ticks + 174: iconst_1 + 175: invokestatic #460 // Method com/mojang/brigadier/arguments/IntegerArgumentType.integer:(I)Lcom/mojang/brigadier/arguments/IntegerArgumentType; + 178: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 181: invokedynamic #722, 0 // InvokeDynamic #63:run:()Lcom/mojang/brigadier/Command; + 186: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 189: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 192: ldc_w #724 // String only_if_empty + 195: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 198: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 201: ldc_w #726 // String clear_before_respawn + 204: invokestatic #227 // Method com/mojang/brigadier/arguments/BoolArgumentType.bool:()Lcom/mojang/brigadier/arguments/BoolArgumentType; + 207: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 210: invokedynamic #731, 0 // InvokeDynamic #64:run:()Lcom/mojang/brigadier/Command; + 215: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 218: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 221: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 224: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 227: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 230: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 233: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 236: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 239: areturn + + private static com.mojang.brigadier.builder.LiteralArgumentBuilder forceOpenCommand(); + Code: + 0: ldc_w #733 // String force_open + 3: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 6: ldc_w #321 // String folder + 9: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 12: invokedynamic #738, 0 // InvokeDynamic #65:run:()Lcom/mojang/brigadier/Command; + 17: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 20: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 23: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 26: ldc #243 // String reload + 28: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 31: invokedynamic #743, 0 // InvokeDynamic #66:run:()Lcom/mojang/brigadier/Command; + 36: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 39: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 42: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 45: ldc_w #314 // String list + 48: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 51: invokedynamic #748, 0 // InvokeDynamic #67:run:()Lcom/mojang/brigadier/Command; + 56: invokevirtual #241 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 59: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 62: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 65: ldc_w #407 // String add + 68: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 71: ldc_w #420 // String item + 74: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 77: ldc_w #422 // String item_id + 80: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 83: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 86: invokedynamic #753, 0 // InvokeDynamic #68:run:()Lcom/mojang/brigadier/Command; + 91: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 94: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 97: ldc_w #755 // String difficulty + 100: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 103: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 106: invokedynamic #760, 0 // InvokeDynamic #69:run:()Lcom/mojang/brigadier/Command; + 111: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 114: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 117: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 120: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 123: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 126: ldc_w #432 // String tag + 129: invokestatic #137 // Method net/minecraft/commands/Commands.m_82127_:(Ljava/lang/String;)Lcom/mojang/brigadier/builder/LiteralArgumentBuilder; + 132: ldc_w #434 // String tag_id + 135: invokestatic #203 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_106984_:()Lnet/minecraft/commands/arguments/ResourceLocationArgument; + 138: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 141: invokedynamic #765, 0 // InvokeDynamic #70:run:()Lcom/mojang/brigadier/Command; + 146: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 149: checkcast #215 // class com/mojang/brigadier/builder/RequiredArgumentBuilder + 152: ldc_w #755 // String difficulty + 155: invokestatic #191 // Method com/mojang/brigadier/arguments/StringArgumentType.word:()Lcom/mojang/brigadier/arguments/StringArgumentType; + 158: invokestatic #195 // Method net/minecraft/commands/Commands.m_82129_:(Ljava/lang/String;Lcom/mojang/brigadier/arguments/ArgumentType;)Lcom/mojang/brigadier/builder/RequiredArgumentBuilder; + 161: invokedynamic #770, 0 // InvokeDynamic #71:run:()Lcom/mojang/brigadier/Command; + 166: invokevirtual #219 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.executes:(Lcom/mojang/brigadier/Command;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 169: invokevirtual #233 // Method com/mojang/brigadier/builder/RequiredArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 172: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 175: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 178: invokevirtual #168 // Method com/mojang/brigadier/builder/LiteralArgumentBuilder.then:(Lcom/mojang/brigadier/builder/ArgumentBuilder;)Lcom/mojang/brigadier/builder/ArgumentBuilder; + 181: checkcast #156 // class com/mojang/brigadier/builder/LiteralArgumentBuilder + 184: areturn + + private static int profileUsage(net.minecraft.commands.CommandSourceStack, java.lang.String); + Code: + 0: aload_1 + 1: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 4: ifne 22 + 7: aload_0 + 8: aload_1 + 9: invokedynamic #790, 0 // InvokeDynamic #72:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 20: iconst_0 + 21: ireturn + 22: aload_0 + 23: invokevirtual #83 // Method net/minecraft/commands/CommandSourceStack.m_81377_:()Lnet/minecraft/server/MinecraftServer; + 26: aload_1 + 27: invokestatic #803 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage.count:(Lnet/minecraft/server/MinecraftServer;Ljava/lang/String;)Lcom/ogaba/sa_decor/common/loot/DecorLootProfileUsage$Usage; + 30: astore_2 + 31: aload_0 + 32: aload_1 + 33: aload_2 + 34: invokedynamic #816, 0 // InvokeDynamic #73:get:(Ljava/lang/String;Lcom/ogaba/sa_decor/common/loot/DecorLootProfileUsage$Usage;)Ljava/util/function/Supplier; + 39: iconst_0 + 40: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 43: aload_2 + 44: invokevirtual #824 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$Usage.total:()I + 47: ireturn + + private static int cleanupLootMarkers(net.minecraft.commands.CommandSourceStack, boolean); + Code: + 0: aload_0 + 1: invokevirtual #83 // Method net/minecraft/commands/CommandSourceStack.m_81377_:()Lnet/minecraft/server/MinecraftServer; + 4: iload_1 + 5: invokestatic #831 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage.cleanup:(Lnet/minecraft/server/MinecraftServer;Z)Lcom/ogaba/sa_decor/common/loot/DecorLootProfileUsage$CleanupResult; + 8: astore_2 + 9: aload_0 + 10: aload_2 + 11: invokedynamic #839, 0 // InvokeDynamic #74:get:(Lcom/ogaba/sa_decor/common/loot/DecorLootProfileUsage$CleanupResult;)Ljava/util/function/Supplier; + 16: iconst_1 + 17: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 20: aload_2 + 21: invokevirtual #842 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$CleanupResult.removed:()I + 24: aload_2 + 25: invokevirtual #845 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$CleanupResult.indexEntriesFixed:()I + 28: iadd + 29: ireturn + + private static int exportProfile(net.minecraft.commands.CommandSourceStack, java.lang.String); + Code: + 0: aload_1 + 1: invokestatic #853 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.exportConfig:(Ljava/lang/String;)Z + 4: istore_2 + 5: iload_2 + 6: ifne 24 + 9: aload_0 + 10: aload_1 + 11: invokedynamic #856, 0 // InvokeDynamic #75:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 16: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 19: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 22: iconst_0 + 23: ireturn + 24: aload_0 + 25: aload_1 + 26: invokedynamic #864, 0 // InvokeDynamic #76:get:(Ljava/lang/String;)Ljava/util/function/Supplier; + 31: iconst_0 + 32: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 35: iconst_1 + 36: ireturn + + private static int importProfile(net.minecraft.commands.CommandSourceStack, java.lang.String, java.lang.String); + Code: + 0: aload_1 + 1: aload_2 + 2: invokestatic #871 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.importConfig:(Ljava/lang/String;Ljava/lang/String;)Z + 5: istore_3 + 6: iload_3 + 7: ifne 26 + 10: aload_0 + 11: aload_1 + 12: aload_2 + 13: invokedynamic #876, 0 // InvokeDynamic #77:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 18: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 21: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 24: iconst_0 + 25: ireturn + 26: aload_0 + 27: aload_2 + 28: invokedynamic #881, 0 // InvokeDynamic #78:get:(Ljava/lang/String;)Ljava/util/function/Supplier; + 33: iconst_1 + 34: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 37: iconst_1 + 38: ireturn + + private static int createPresetAs(net.minecraft.commands.CommandSourceStack, java.lang.String, java.lang.String); + Code: + 0: aload_2 + 1: aload_1 + 2: invokestatic #887 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.createConfigFromPreset:(Ljava/lang/String;Ljava/lang/String;)Z + 5: istore_3 + 6: iload_3 + 7: ifne 29 + 10: aload_0 + 11: aload_2 + 12: aload_1 + 13: invokestatic #893 // Method com/ogaba/sa_decor/common/loot/DecorLootDefaultProfiles.availablePresetIdsText:()Ljava/lang/String; + 16: invokedynamic #898, 0 // InvokeDynamic #79:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 21: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 24: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 27: iconst_0 + 28: ireturn + 29: aload_0 + 30: aload_2 + 31: aload_1 + 32: invokedynamic #906, 0 // InvokeDynamic #80:get:(Ljava/lang/String;Ljava/lang/String;)Ljava/util/function/Supplier; + 37: iconst_1 + 38: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 41: iconst_1 + 42: ireturn + + private static int undoWand(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #79 // Method net/minecraft/commands/CommandSourceStack.m_81375_:()Lnet/minecraft/server/level/ServerPlayer; + 4: astore_1 + 5: aload_1 + 6: invokestatic #915 // Method com/ogaba/sa_decor/common/item/LootCrateWandItem.undoLast:(Lnet/minecraft/server/level/ServerPlayer;)Z + 9: istore_2 + 10: aload_0 + 11: iload_2 + 12: invokedynamic #923, 0 // InvokeDynamic #81:get:(Z)Ljava/util/function/Supplier; + 17: iconst_0 + 18: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 21: iload_2 + 22: ifeq 29 + 25: iconst_1 + 26: goto 30 + 29: iconst_0 + 30: ireturn + + private static int reload(net.minecraft.commands.CommandSourceStack); + Code: + 0: invokestatic #925 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.reload:()V + 3: invokestatic #928 // Method com/ogaba/sa_decor/common/loot/DecorLooseLootConfigManager.reload:()V + 6: invokestatic #931 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.reload:()V + 9: invokestatic #935 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.values:()Ljava/util/Collection; + 12: invokeinterface #940, 1 // InterfaceMethod java/util/Collection.size:()I + 17: istore_1 + 18: invokestatic #941 // Method com/ogaba/sa_decor/common/loot/DecorLooseLootConfigManager.values:()Ljava/util/Collection; + 21: invokeinterface #940, 1 // InterfaceMethod java/util/Collection.size:()I + 26: istore_2 + 27: invokestatic #945 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.entries:()Ljava/util/List; + 30: invokeinterface #948, 1 // InterfaceMethod java/util/List.size:()I + 35: istore_3 + 36: aload_0 + 37: iload_1 + 38: iload_2 + 39: iload_3 + 40: invokedynamic #956, 0 // InvokeDynamic #82:get:(III)Ljava/util/function/Supplier; + 45: iconst_1 + 46: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 49: iload_1 + 50: iload_2 + 51: iadd + 52: iload_3 + 53: iadd + 54: ireturn + + private static int restoreDefaultProfiles(net.minecraft.commands.CommandSourceStack); + Code: + 0: invokestatic #962 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.restoreDefaultProfiles:()I + 3: istore_1 + 4: iload_1 + 5: ifge 20 + 8: aload_0 + 9: ldc_w #964 // String Could not restore the default loot crate profiles. Check the server log. + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 18: iconst_0 + 19: ireturn + 20: iload_1 + 21: ifne 36 + 24: aload_0 + 25: invokedynamic #971, 0 // InvokeDynamic #83:get:()Ljava/util/function/Supplier; + 30: iconst_0 + 31: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 34: iconst_1 + 35: ireturn + 36: aload_0 + 37: iload_1 + 38: invokedynamic #979, 0 // InvokeDynamic #84:get:(I)Ljava/util/function/Supplier; + 43: iconst_1 + 44: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 47: iload_1 + 48: ireturn + + private static int list(net.minecraft.commands.CommandSourceStack); + Code: + 0: invokestatic #935 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.values:()Ljava/util/Collection; + 3: invokeinterface #984, 1 // InterfaceMethod java/util/Collection.isEmpty:()Z + 8: ifeq 23 + 11: aload_0 + 12: invokedynamic #989, 0 // InvokeDynamic #85:get:()Ljava/util/function/Supplier; + 17: iconst_0 + 18: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 21: iconst_0 + 22: ireturn + 23: invokestatic #935 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.values:()Ljava/util/Collection; + 26: invokeinterface #993, 1 // InterfaceMethod java/util/Collection.stream:()Ljava/util/stream/Stream; + 31: invokedynamic #1007, 0 // InvokeDynamic #86:apply:()Ljava/util/function/Function; + 36: invokeinterface #1013, 2 // InterfaceMethod java/util/stream/Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream; + 41: ldc_w #1015 // String , + 44: invokestatic #1021 // Method java/util/stream/Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector; + 47: invokeinterface #1025, 2 // InterfaceMethod java/util/stream/Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object; + 52: checkcast #1027 // class java/lang/String + 55: astore_1 + 56: aload_0 + 57: aload_1 + 58: invokedynamic #1032, 0 // InvokeDynamic #87:get:(Ljava/lang/String;)Ljava/util/function/Supplier; + 63: iconst_0 + 64: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 67: invokestatic #935 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.values:()Ljava/util/Collection; + 70: invokeinterface #940, 1 // InterfaceMethod java/util/Collection.size:()I + 75: ireturn + + private static int folder(net.minecraft.commands.CommandSourceStack); + Code: + 0: invokestatic #1037 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 3: astore_1 + 4: aload_0 + 5: aload_1 + 6: invokedynamic #1045, 0 // InvokeDynamic #88:get:(Ljava/nio/file/Path;)Ljava/util/function/Supplier; + 11: iconst_0 + 12: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 15: iconst_1 + 16: ireturn + + private static int help(net.minecraft.commands.CommandSourceStack); + Code: + 0: aload_0 + 1: invokedynamic #1052, 0 // InvokeDynamic #89:get:()Ljava/util/function/Supplier; + 6: iconst_0 + 7: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 10: aload_0 + 11: invokedynamic #1057, 0 // InvokeDynamic #90:get:()Ljava/util/function/Supplier; + 16: iconst_0 + 17: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 20: aload_0 + 21: invokedynamic #1062, 0 // InvokeDynamic #91:get:()Ljava/util/function/Supplier; + 26: iconst_0 + 27: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 30: aload_0 + 31: invokedynamic #1067, 0 // InvokeDynamic #92:get:()Ljava/util/function/Supplier; + 36: iconst_0 + 37: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 40: aload_0 + 41: invokedynamic #1072, 0 // InvokeDynamic #93:get:()Ljava/util/function/Supplier; + 46: iconst_0 + 47: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 50: aload_0 + 51: invokedynamic #1077, 0 // InvokeDynamic #94:get:()Ljava/util/function/Supplier; + 56: iconst_0 + 57: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 60: aload_0 + 61: invokedynamic #1082, 0 // InvokeDynamic #95:get:()Ljava/util/function/Supplier; + 66: iconst_0 + 67: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 70: aload_0 + 71: invokedynamic #1087, 0 // InvokeDynamic #96:get:()Ljava/util/function/Supplier; + 76: iconst_0 + 77: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 80: aload_0 + 81: invokedynamic #1092, 0 // InvokeDynamic #97:get:()Ljava/util/function/Supplier; + 86: iconst_0 + 87: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 90: aload_0 + 91: invokedynamic #1097, 0 // InvokeDynamic #98:get:()Ljava/util/function/Supplier; + 96: iconst_0 + 97: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 100: iconst_1 + 101: ireturn + + private static int presets(net.minecraft.commands.CommandSourceStack); + Code: + 0: aload_0 + 1: invokedynamic #1103, 0 // InvokeDynamic #99:get:()Ljava/util/function/Supplier; + 6: iconst_0 + 7: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 10: aload_0 + 11: invokedynamic #1108, 0 // InvokeDynamic #100:get:()Ljava/util/function/Supplier; + 16: iconst_0 + 17: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 20: invokestatic #893 // Method com/ogaba/sa_decor/common/loot/DecorLootDefaultProfiles.availablePresetIdsText:()Ljava/lang/String; + 23: invokevirtual #1111 // Method java/lang/String.isBlank:()Z + 26: ifeq 33 + 29: iconst_0 + 30: goto 34 + 33: iconst_1 + 34: ireturn + + private static int advancedHelp(net.minecraft.commands.CommandSourceStack); + Code: + 0: aload_0 + 1: invokedynamic #1117, 0 // InvokeDynamic #101:get:()Ljava/util/function/Supplier; + 6: iconst_0 + 7: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 10: aload_0 + 11: invokedynamic #1122, 0 // InvokeDynamic #102:get:()Ljava/util/function/Supplier; + 16: iconst_0 + 17: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 20: aload_0 + 21: invokedynamic #1127, 0 // InvokeDynamic #103:get:()Ljava/util/function/Supplier; + 26: iconst_0 + 27: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 30: aload_0 + 31: invokedynamic #1132, 0 // InvokeDynamic #104:get:()Ljava/util/function/Supplier; + 36: iconst_0 + 37: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 40: aload_0 + 41: invokedynamic #1137, 0 // InvokeDynamic #105:get:()Ljava/util/function/Supplier; + 46: iconst_0 + 47: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 50: aload_0 + 51: invokedynamic #1142, 0 // InvokeDynamic #106:get:()Ljava/util/function/Supplier; + 56: iconst_0 + 57: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 60: aload_0 + 61: invokedynamic #1147, 0 // InvokeDynamic #107:get:()Ljava/util/function/Supplier; + 66: iconst_0 + 67: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 70: iconst_1 + 71: ireturn + + private static int formatConfigs(net.minecraft.commands.CommandSourceStack); + Code: + 0: invokestatic #1151 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.formatAllConfigs:()I + 3: istore_1 + 4: aload_0 + 5: iload_1 + 6: invokedynamic #1156, 0 // InvokeDynamic #108:get:(I)Ljava/util/function/Supplier; + 11: iconst_0 + 12: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 15: iload_1 + 16: ireturn + + private static int forceOpenFolder(net.minecraft.commands.CommandSourceStack); + Code: + 0: invokestatic #1161 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.getConfigFilePath:()Ljava/nio/file/Path; + 3: astore_1 + 4: aload_0 + 5: aload_1 + 6: invokedynamic #1166, 0 // InvokeDynamic #109:get:(Ljava/nio/file/Path;)Ljava/util/function/Supplier; + 11: iconst_0 + 12: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 15: iconst_1 + 16: ireturn + + private static int forceOpenReload(net.minecraft.commands.CommandSourceStack); + Code: + 0: invokestatic #931 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.reload:()V + 3: aload_0 + 4: invokedynamic #1173, 0 // InvokeDynamic #110:get:()Ljava/util/function/Supplier; + 9: iconst_1 + 10: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 13: invokestatic #945 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.entries:()Ljava/util/List; + 16: invokeinterface #948, 1 // InterfaceMethod java/util/List.size:()I + 21: ireturn + + private static int forceOpenList(net.minecraft.commands.CommandSourceStack); + Code: + 0: invokestatic #945 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.entries:()Ljava/util/List; + 3: invokeinterface #1175, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 8: ifeq 23 + 11: aload_0 + 12: invokedynamic #1180, 0 // InvokeDynamic #111:get:()Ljava/util/function/Supplier; + 17: iconst_0 + 18: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 21: iconst_0 + 22: ireturn + 23: invokestatic #945 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.entries:()Ljava/util/List; + 26: invokeinterface #1181, 1 // InterfaceMethod java/util/List.stream:()Ljava/util/stream/Stream; + 31: invokedynamic #1188, 0 // InvokeDynamic #112:apply:()Ljava/util/function/Function; + 36: invokeinterface #1013, 2 // InterfaceMethod java/util/stream/Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream; + 41: ldc_w #1015 // String , + 44: invokestatic #1021 // Method java/util/stream/Collectors.joining:(Ljava/lang/CharSequence;)Ljava/util/stream/Collector; + 47: invokeinterface #1025, 2 // InterfaceMethod java/util/stream/Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object; + 52: checkcast #1027 // class java/lang/String + 55: astore_1 + 56: aload_0 + 57: aload_1 + 58: invokedynamic #1193, 0 // InvokeDynamic #113:get:(Ljava/lang/String;)Ljava/util/function/Supplier; + 63: iconst_0 + 64: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 67: invokestatic #945 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.entries:()Ljava/util/List; + 70: invokeinterface #948, 1 // InterfaceMethod java/util/List.size:()I + 75: ireturn + + private static com.ogaba.sa_decor.common.loot.DecorForceOpenRule forceOpenRuleByDifficulty(java.lang.String); + Code: + 0: aload_0 + 1: invokevirtual #1198 // Method java/lang/String.toLowerCase:()Ljava/lang/String; + 4: astore_1 + 5: iconst_m1 + 6: istore_2 + 7: aload_1 + 8: invokevirtual #1201 // Method java/lang/String.hashCode:()I + 11: lookupswitch { // 4 + + -1380428966: 97 + + -1039745817: 67 + + 3105794: 52 + + 3195115: 82 + default: 109 + } + 52: aload_1 + 53: ldc_w #1203 // String easy + 56: invokevirtual #1206 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 59: ifeq 109 + 62: iconst_0 + 63: istore_2 + 64: goto 109 + 67: aload_1 + 68: ldc_w #1208 // String normal + 71: invokevirtual #1206 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 74: ifeq 109 + 77: iconst_1 + 78: istore_2 + 79: goto 109 + 82: aload_1 + 83: ldc_w #1210 // String hard + 86: invokevirtual #1206 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 89: ifeq 109 + 92: iconst_2 + 93: istore_2 + 94: goto 109 + 97: aload_1 + 98: ldc_w #1212 // String brutal + 101: invokevirtual #1206 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 104: ifeq 109 + 107: iconst_3 + 108: istore_2 + 109: iload_2 + 110: tableswitch { // 0 to 3 + + 0: 140 + + 1: 165 + + 2: 171 + + 3: 196 + default: 223 + } + 140: new #1214 // class com/ogaba/sa_decor/common/loot/DecorForceOpenRule + 143: dup + 144: sipush 150 + 147: iconst_3 + 148: bipush 28 + 150: iconst_1 + 151: bipush 18 + 153: ldc2_w #1215 // double 0.03d + 156: dconst_1 + 157: iconst_0 + 158: iconst_0 + 159: invokespecial #1219 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenRule."":(IIIIIDDZZ)V + 162: goto 226 + 165: invokestatic #1223 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenRule.defaults:()Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule; + 168: goto 226 + 171: new #1214 // class com/ogaba/sa_decor/common/loot/DecorForceOpenRule + 174: dup + 175: sipush 280 + 178: iconst_2 + 179: bipush 52 + 181: iconst_4 + 182: bipush 42 + 184: ldc2_w #1224 // double 0.12d + 187: dconst_1 + 188: iconst_0 + 189: iconst_0 + 190: invokespecial #1219 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenRule."":(IIIIIDDZZ)V + 193: goto 226 + 196: new #1214 // class com/ogaba/sa_decor/common/loot/DecorForceOpenRule + 199: dup + 200: sipush 360 + 203: iconst_2 + 204: bipush 62 + 206: iconst_5 + 207: bipush 58 + 209: ldc2_w #1226 // double 0.2d + 212: ldc2_w #1228 // double 0.95d + 215: iconst_0 + 216: iconst_0 + 217: invokespecial #1219 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenRule."":(IIIIIDDZZ)V + 220: goto 226 + 223: invokestatic #1223 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenRule.defaults:()Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule; + 226: areturn + + private static int addForceOpenRule(net.minecraft.commands.CommandSourceStack, java.lang.String, net.minecraft.resources.ResourceLocation, com.ogaba.sa_decor.common.loot.DecorForceOpenRule); + Code: + 0: aload_1 + 1: aload_2 + 2: aload_3 + 3: invokestatic #1235 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.addRuleToConfig:(Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule;)Z + 6: istore 4 + 8: iload 4 + 10: ifne 32 + 13: aload_0 + 14: aload_1 + 15: aload_2 + 16: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 19: invokedynamic #1242, 0 // InvokeDynamic #114:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 24: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 27: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 30: iconst_0 + 31: ireturn + 32: aload_0 + 33: aload_1 + 34: aload_2 + 35: invokedynamic #1250, 0 // InvokeDynamic #115:get:(Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;)Ljava/util/function/Supplier; + 40: iconst_1 + 41: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 44: iconst_1 + 45: ireturn + + private static java.lang.String formatForceOpenEntry(com.ogaba.sa_decor.common.loot.DecorForceOpenEntry); + Code: + 0: aload_0 + 1: invokevirtual #1259 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenEntry.type:()Ljava/lang/String; + 4: aload_0 + 5: invokevirtual #1262 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenEntry.id:()Lnet/minecraft/resources/ResourceLocation; + 8: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 11: aload_0 + 12: invokevirtual #1265 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenEntry.targetProgress:()I + 15: aload_0 + 16: invokevirtual #1269 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenEntry.successChance:()D + 19: invokedynamic #1274, 0 // InvokeDynamic #116:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;ID)Ljava/lang/String; + 24: areturn + + private static int preset(net.minecraft.commands.CommandSourceStack, java.lang.String); + Code: + 0: aload_1 + 1: invokestatic #1279 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.createPreset:(Ljava/lang/String;)Z + 4: istore_2 + 5: iload_2 + 6: ifne 27 + 9: aload_0 + 10: aload_1 + 11: invokestatic #893 // Method com/ogaba/sa_decor/common/loot/DecorLootDefaultProfiles.availablePresetIdsText:()Ljava/lang/String; + 14: invokedynamic #1282, 0 // InvokeDynamic #117:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 19: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 22: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 25: iconst_0 + 26: ireturn + 27: aload_0 + 28: aload_1 + 29: invokedynamic #1287, 0 // InvokeDynamic #118:get:(Ljava/lang/String;)Ljava/util/function/Supplier; + 34: iconst_1 + 35: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 38: iconst_1 + 39: ireturn + + private static int copyConfig(net.minecraft.commands.CommandSourceStack, java.lang.String, java.lang.String); + Code: + 0: aload_1 + 1: aload_2 + 2: invokestatic #1291 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.copyConfig:(Ljava/lang/String;Ljava/lang/String;)Z + 5: istore_3 + 6: iload_3 + 7: ifne 26 + 10: aload_0 + 11: aload_1 + 12: aload_2 + 13: invokedynamic #1294, 0 // InvokeDynamic #119:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 18: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 21: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 24: iconst_0 + 25: ireturn + 26: aload_0 + 27: aload_1 + 28: aload_2 + 29: invokedynamic #1299, 0 // InvokeDynamic #120:get:(Ljava/lang/String;Ljava/lang/String;)Ljava/util/function/Supplier; + 34: iconst_1 + 35: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 38: iconst_1 + 39: ireturn + + private static int createConfig(net.minecraft.commands.CommandSourceStack, java.lang.String, boolean, boolean, boolean); + Code: + 0: aload_1 + 1: invokestatic #1307 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.isValidConfigId:(Ljava/lang/String;)Z + 4: ifne 19 + 7: aload_0 + 8: ldc_w #1309 // String Invalid config id. Use only lowercase letters, numbers, _ or -. + 11: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 14: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 17: iconst_0 + 18: ireturn + 19: aload_1 + 20: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 23: ifeq 41 + 26: aload_0 + 27: aload_1 + 28: invokedynamic #1312, 0 // InvokeDynamic #121:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 33: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 36: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 39: iconst_0 + 40: ireturn + 41: aload_1 + 42: iload_2 + 43: iload_3 + 44: iload 4 + 46: invokestatic #1315 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.createConfig:(Ljava/lang/String;ZZZ)Z + 49: istore 5 + 51: iload 5 + 53: ifne 71 + 56: aload_0 + 57: aload_1 + 58: invokedynamic #1318, 0 // InvokeDynamic #122:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 63: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 66: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 69: iconst_0 + 70: ireturn + 71: aload_0 + 72: aload_1 + 73: iload_2 + 74: iload_3 + 75: iload 4 + 77: invokedynamic #1326, 0 // InvokeDynamic #123:get:(Ljava/lang/String;ZZZ)Ljava/util/function/Supplier; + 82: iconst_1 + 83: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 86: iconst_1 + 87: ireturn + + private static int setConfigPerPlayer(net.minecraft.commands.CommandSourceStack, java.lang.String, boolean); + Code: + 0: aload_0 + 1: aload_1 + 2: ldc_w #602 // String per_player + 5: iload_2 + 6: aload_1 + 7: iload_2 + 8: invokedynamic #1342, 0 // InvokeDynamic #124:getAsBoolean:(Ljava/lang/String;Z)Ljava/util/function/BooleanSupplier; + 13: invokestatic #1346 // Method updateConfigFlag:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;ZLjava/util/function/BooleanSupplier;)I + 16: ireturn + + private static int setConfigSearch(net.minecraft.commands.CommandSourceStack, java.lang.String, boolean); + Code: + 0: aload_0 + 1: aload_1 + 2: ldc_w #1349 // String search.enabled + 5: iload_2 + 6: aload_1 + 7: iload_2 + 8: invokedynamic #1354, 0 // InvokeDynamic #125:getAsBoolean:(Ljava/lang/String;Z)Ljava/util/function/BooleanSupplier; + 13: invokestatic #1346 // Method updateConfigFlag:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;ZLjava/util/function/BooleanSupplier;)I + 16: ireturn + + private static int setConfigLock(net.minecraft.commands.CommandSourceStack, java.lang.String, boolean); + Code: + 0: aload_0 + 1: aload_1 + 2: ldc_w #1357 // String lock.enabled + 5: iload_2 + 6: aload_1 + 7: iload_2 + 8: invokedynamic #1362, 0 // InvokeDynamic #126:getAsBoolean:(Ljava/lang/String;Z)Ljava/util/function/BooleanSupplier; + 13: invokestatic #1346 // Method updateConfigFlag:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;ZLjava/util/function/BooleanSupplier;)I + 16: ireturn + + private static int setConfigEmpty(net.minecraft.commands.CommandSourceStack, java.lang.String, boolean, float); + Code: + 0: aload_1 + 1: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 4: ifne 22 + 7: aload_0 + 8: aload_1 + 9: invokedynamic #1367, 0 // InvokeDynamic #127:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 20: iconst_0 + 21: ireturn + 22: aload_1 + 23: iload_2 + 24: fload_3 + 25: invokestatic #1371 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.setEmpty:(Ljava/lang/String;ZF)Z + 28: istore 4 + 30: iload 4 + 32: ifne 50 + 35: aload_0 + 36: aload_1 + 37: invokedynamic #1374, 0 // InvokeDynamic #128:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 42: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 45: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 48: iconst_0 + 49: ireturn + 50: aload_0 + 51: aload_1 + 52: iload_2 + 53: fload_3 + 54: invokedynamic #1382, 0 // InvokeDynamic #129:get:(Ljava/lang/String;ZF)Ljava/util/function/Supplier; + 59: iconst_1 + 60: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 63: iconst_1 + 64: ireturn + + private static int setConfigRespawn(net.minecraft.commands.CommandSourceStack, java.lang.String, boolean, int, boolean, boolean); + Code: + 0: aload_1 + 1: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 4: ifne 22 + 7: aload_0 + 8: aload_1 + 9: invokedynamic #1367, 0 // InvokeDynamic #127:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 20: iconst_0 + 21: ireturn + 22: aload_1 + 23: iload_2 + 24: iload_3 + 25: iload 4 + 27: iload 5 + 29: invokestatic #1390 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.setRespawn:(Ljava/lang/String;ZIZZ)Z + 32: istore 6 + 34: iload 6 + 36: ifne 54 + 39: aload_0 + 40: aload_1 + 41: invokedynamic #1393, 0 // InvokeDynamic #130:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 46: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 49: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 52: iconst_0 + 53: ireturn + 54: aload_0 + 55: aload_1 + 56: iload_2 + 57: iload_3 + 58: iload 4 + 60: invokedynamic #1401, 0 // InvokeDynamic #131:get:(Ljava/lang/String;ZIZ)Ljava/util/function/Supplier; + 65: iconst_1 + 66: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 69: iconst_1 + 70: ireturn + + private static int updateConfigFlag(net.minecraft.commands.CommandSourceStack, java.lang.String, java.lang.String, boolean, java.util.function.BooleanSupplier); + Code: + 0: aload_1 + 1: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 4: ifne 22 + 7: aload_0 + 8: aload_1 + 9: invokedynamic #1367, 0 // InvokeDynamic #127:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 20: iconst_0 + 21: ireturn + 22: aload 4 + 24: invokeinterface #1408, 1 // InterfaceMethod java/util/function/BooleanSupplier.getAsBoolean:()Z + 29: istore 5 + 31: iload 5 + 33: ifne 52 + 36: aload_0 + 37: aload_2 + 38: aload_1 + 39: invokedynamic #1411, 0 // InvokeDynamic #132:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 44: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 47: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 50: iconst_0 + 51: ireturn + 52: aload_0 + 53: aload_1 + 54: aload_2 + 55: iload_3 + 56: invokedynamic #1419, 0 // InvokeDynamic #133:get:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/util/function/Supplier; + 61: iconst_1 + 62: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 65: iconst_1 + 66: ireturn + + private static int set(net.minecraft.commands.CommandSourceStack, java.lang.String, boolean) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_1 + 1: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 4: ifne 22 + 7: aload_0 + 8: aload_1 + 9: invokedynamic #1367, 0 // InvokeDynamic #127:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 20: iconst_0 + 21: ireturn + 22: aload_0 + 23: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 26: astore_3 + 27: aload_3 + 28: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 31: invokestatic #1435 // Method com/ogaba/sa_decor/common/loot/DecorLooseLootSavedData.get:(Lnet/minecraft/server/level/ServerLevel;)Lcom/ogaba/sa_decor/common/loot/DecorLooseLootSavedData; + 34: aload_3 + 35: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 38: invokevirtual #1443 // Method com/ogaba/sa_decor/common/loot/DecorLooseLootSavedData.getManualProfile:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 41: astore 4 + 43: aload 4 + 45: invokevirtual #1111 // Method java/lang/String.isBlank:()Z + 48: ifne 67 + 51: aload_0 + 52: aload 4 + 54: invokedynamic #1446, 0 // InvokeDynamic #134:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 59: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 62: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 65: iconst_0 + 66: ireturn + 67: aload_3 + 68: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 71: aload_3 + 72: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 75: aload_1 + 76: iload_2 + 77: iconst_1 + 78: invokestatic #1456 // Method com/ogaba/sa_decor/common/loot/DecorLootInteraction.markAsLootCrate:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;Ljava/lang/String;ZZ)V + 81: aload_0 + 82: aload_3 + 83: aload_1 + 84: iload_2 + 85: invokedynamic #1464, 0 // InvokeDynamic #135:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;Ljava/lang/String;Z)Ljava/util/function/Supplier; + 90: iconst_1 + 91: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 94: iconst_1 + 95: ireturn + + private static int clear(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #1471 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.data:()Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData; + 9: invokevirtual #1475 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.clear:()V + 12: aload_1 + 13: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 16: invokestatic #1481 // Method com/ogaba/sa_decor/compat/rummage/DecorRummageCompat.disable:(Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 19: aload_1 + 20: invokestatic #1485 // Method saveTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)V + 23: aload_1 + 24: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 27: aload_1 + 28: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 31: invokestatic #1490 // Method com/ogaba/sa_decor/common/loot/DecorLootVisualRefresh.refresh:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 34: aload_0 + 35: aload_1 + 36: invokedynamic #1498, 0 // InvokeDynamic #136:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Ljava/util/function/Supplier; + 41: iconst_1 + 42: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 45: iconst_1 + 46: ireturn + + private static int clearInventory(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 9: invokeinterface #1508, 1 // InterfaceMethod net/minecraft/world/Container.m_6211_:()V + 14: aload_1 + 15: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 18: invokeinterface #1511, 1 // InterfaceMethod net/minecraft/world/Container.m_6596_:()V + 23: aload_1 + 24: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 27: iconst_0 + 28: invokestatic #1515 // Method com/ogaba/sa_decor/compat/rummage/DecorRummageCompat.resetAll:(Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;Z)V + 31: aload_1 + 32: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 35: invokevirtual #1522 // Method net/minecraft/world/level/block/entity/BlockEntity.m_6596_:()V + 38: aload_1 + 39: invokestatic #1485 // Method saveTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)V + 42: aload_1 + 43: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 46: aload_1 + 47: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 50: invokestatic #1490 // Method com/ogaba/sa_decor/common/loot/DecorLootVisualRefresh.refresh:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 53: aload_0 + 54: aload_1 + 55: invokedynamic #1527, 0 // InvokeDynamic #137:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Ljava/util/function/Supplier; + 60: iconst_1 + 61: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 64: iconst_1 + 65: ireturn + + private static int reset(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #1471 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.data:()Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData; + 9: astore_2 + 10: aload_2 + 11: invokevirtual #1530 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isMarkedAsLootCrate:()Z + 14: ifne 29 + 17: aload_0 + 18: ldc_w #1532 // String Target container is not marked as a loot crate. + 21: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 24: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 27: iconst_0 + 28: ireturn + 29: aload_1 + 30: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 33: astore_3 + 34: aload_1 + 35: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 38: aload_3 + 39: invokestatic #1538 // Method com/ogaba/sa_decor/compat/lootr/DecorLootrCompat.invalidateContainer:(Lnet/minecraft/server/level/ServerLevel;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 42: aload_2 + 43: invokevirtual #1541 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.clearLootrContainerId:()V + 46: aload_1 + 47: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 50: invokeinterface #1508, 1 // InterfaceMethod net/minecraft/world/Container.m_6211_:()V + 55: aload_1 + 56: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 59: invokeinterface #1511, 1 // InterfaceMethod net/minecraft/world/Container.m_6596_:()V + 64: aload_2 + 65: iconst_0 + 66: invokevirtual #1545 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setSearched:(Z)V + 69: aload_2 + 70: iconst_0 + 71: invokevirtual #1548 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setSpawnedEmpty:(Z)V + 74: aload_2 + 75: lconst_0 + 76: invokevirtual #1552 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setLastGeneratedGameTime:(J)V + 79: aload_2 + 80: invokevirtual #1555 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.clearPlayerStates:()V + 83: aload_1 + 84: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 87: iconst_0 + 88: invokestatic #1515 // Method com/ogaba/sa_decor/compat/rummage/DecorRummageCompat.resetAll:(Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;Z)V + 91: aload_1 + 92: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 95: invokevirtual #1522 // Method net/minecraft/world/level/block/entity/BlockEntity.m_6596_:()V + 98: aload_1 + 99: invokestatic #1485 // Method saveTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)V + 102: aload_1 + 103: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 106: aload_1 + 107: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 110: invokestatic #1490 // Method com/ogaba/sa_decor/common/loot/DecorLootVisualRefresh.refresh:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 113: aload_0 + 114: aload_1 + 115: aload_2 + 116: invokedynamic #1563, 0 // InvokeDynamic #138:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData;)Ljava/util/function/Supplier; + 121: iconst_1 + 122: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 125: iconst_1 + 126: ireturn + + private static int lock(net.minecraft.commands.CommandSourceStack, boolean) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 4: astore_2 + 5: aload_2 + 6: invokevirtual #1471 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.data:()Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData; + 9: astore_3 + 10: aload_3 + 11: invokevirtual #1530 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isMarkedAsLootCrate:()Z + 14: ifne 29 + 17: aload_0 + 18: ldc_w #1532 // String Target container is not marked as a loot crate. + 21: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 24: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 27: iconst_0 + 28: ireturn + 29: aload_3 + 30: iload_1 + 31: invokevirtual #1569 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setLocked:(Z)V + 34: aload_3 + 35: iload_1 + 36: invokevirtual #1572 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setRespawnLocked:(Z)V + 39: iload_1 + 40: ifeq 55 + 43: aload_2 + 44: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 47: aload_2 + 48: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 51: iconst_0 + 52: invokestatic #1576 // Method com/ogaba/sa_decor/common/loot/DecorLootInteraction.forceVisualOpenState:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;Z)V + 55: aload_2 + 56: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 59: invokevirtual #1522 // Method net/minecraft/world/level/block/entity/BlockEntity.m_6596_:()V + 62: aload_2 + 63: invokestatic #1485 // Method saveTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)V + 66: aload_2 + 67: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 70: aload_2 + 71: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 74: invokestatic #1490 // Method com/ogaba/sa_decor/common/loot/DecorLootVisualRefresh.refresh:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 77: aload_0 + 78: aload_2 + 79: iload_1 + 80: invokedynamic #1584, 0 // InvokeDynamic #139:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;Z)Ljava/util/function/Supplier; + 85: iconst_1 + 86: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 89: iconst_1 + 90: ireturn + + private static int respawnNow(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #1471 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.data:()Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData; + 9: astore_2 + 10: aload_2 + 11: invokevirtual #1530 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isMarkedAsLootCrate:()Z + 14: ifne 29 + 17: aload_0 + 18: ldc_w #1532 // String Target container is not marked as a loot crate. + 21: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 24: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 27: iconst_0 + 28: ireturn + 29: aload_1 + 30: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 33: astore_3 + 34: aload_1 + 35: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 38: aload_3 + 39: invokestatic #1538 // Method com/ogaba/sa_decor/compat/lootr/DecorLootrCompat.invalidateContainer:(Lnet/minecraft/server/level/ServerLevel;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 42: aload_2 + 43: invokevirtual #1541 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.clearLootrContainerId:()V + 46: aload_1 + 47: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 50: invokeinterface #1508, 1 // InterfaceMethod net/minecraft/world/Container.m_6211_:()V + 55: aload_1 + 56: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 59: invokeinterface #1511, 1 // InterfaceMethod net/minecraft/world/Container.m_6596_:()V + 64: aload_2 + 65: iconst_0 + 66: invokevirtual #1545 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setSearched:(Z)V + 69: aload_2 + 70: iconst_0 + 71: invokevirtual #1548 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setSpawnedEmpty:(Z)V + 74: aload_2 + 75: lconst_0 + 76: invokevirtual #1552 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setLastGeneratedGameTime:(J)V + 79: aload_2 + 80: invokevirtual #1555 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.clearPlayerStates:()V + 83: aload_1 + 84: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 87: iconst_0 + 88: invokestatic #1515 // Method com/ogaba/sa_decor/compat/rummage/DecorRummageCompat.resetAll:(Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;Z)V + 91: aload_1 + 92: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 95: invokevirtual #1522 // Method net/minecraft/world/level/block/entity/BlockEntity.m_6596_:()V + 98: aload_1 + 99: invokestatic #1485 // Method saveTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)V + 102: aload_1 + 103: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 106: aload_1 + 107: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 110: invokestatic #1490 // Method com/ogaba/sa_decor/common/loot/DecorLootVisualRefresh.refresh:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 113: aload_0 + 114: aload_1 + 115: invokedynamic #1590, 0 // InvokeDynamic #140:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Ljava/util/function/Supplier; + 120: iconst_1 + 121: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 124: iconst_1 + 125: ireturn + + private static int refresh(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 9: invokevirtual #1522 // Method net/minecraft/world/level/block/entity/BlockEntity.m_6596_:()V + 12: aload_1 + 13: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 16: aload_1 + 17: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 20: invokestatic #1490 // Method com/ogaba/sa_decor/common/loot/DecorLootVisualRefresh.refresh:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 23: aload_0 + 24: aload_1 + 25: invokedynamic #1595, 0 // InvokeDynamic #141:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Ljava/util/function/Supplier; + 30: iconst_0 + 31: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 34: iconst_1 + 35: ireturn + + private static int info(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #1471 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.data:()Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData; + 9: astore_2 + 10: aload_2 + 11: invokevirtual #1530 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isMarkedAsLootCrate:()Z + 14: ifne 30 + 17: aload_0 + 18: aload_1 + 19: invokedynamic #1600, 0 // InvokeDynamic #142:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Ljava/util/function/Supplier; + 24: iconst_0 + 25: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 28: iconst_0 + 29: ireturn + 30: aload_2 + 31: invokevirtual #1602 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.configId:()Ljava/lang/String; + 34: invokestatic #1605 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.get:(Ljava/lang/String;)Lcom/ogaba/sa_decor/common/loot/DecorLootConfig; + 37: astore_3 + 38: aload_1 + 39: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 42: astore 4 + 44: aload_3 + 45: ifnull 61 + 48: aload_3 + 49: aload 4 + 51: invokestatic #1609 // Method com/ogaba/sa_decor/compat/lootr/DecorLootrCompat.shouldUseLootrPerPlayer:(Lcom/ogaba/sa_decor/common/loot/DecorLootConfig;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)Z + 54: ifeq 61 + 57: iconst_1 + 58: goto 62 + 61: iconst_0 + 62: istore 5 + 64: aload_3 + 65: ifnull 86 + 68: iload 5 + 70: ifne 82 + 73: aload_3 + 74: aload 4 + 76: invokestatic #1612 // Method com/ogaba/sa_decor/common/loot/DecorLootInteraction.usesPerPlayerLoot:(Lcom/ogaba/sa_decor/common/loot/DecorLootConfig;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)Z + 79: ifeq 86 + 82: iconst_1 + 83: goto 87 + 86: iconst_0 + 87: istore 6 + 89: aload_0 + 90: invokevirtual #79 // Method net/minecraft/commands/CommandSourceStack.m_81375_:()Lnet/minecraft/server/level/ServerPlayer; + 93: astore 7 + 95: aload_0 + 96: aload_1 + 97: aload_2 + 98: iload 6 + 100: iload 5 + 102: aload_3 + 103: aload 7 + 105: invokedynamic #1620, 0 // InvokeDynamic #143:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData;ZZLcom/ogaba/sa_decor/common/loot/DecorLootConfig;Lnet/minecraft/server/level/ServerPlayer;)Ljava/util/function/Supplier; + 110: iconst_0 + 111: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 114: iconst_1 + 115: ireturn + + private static int generate(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokestatic #1426 // Method getTarget:(Lnet/minecraft/commands/CommandSourceStack;)Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #1471 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.data:()Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData; + 9: astore_2 + 10: aload_2 + 11: invokevirtual #1530 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isMarkedAsLootCrate:()Z + 14: ifne 29 + 17: aload_0 + 18: ldc_w #1532 // String Target container is not marked as a loot crate. + 21: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 24: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 27: iconst_0 + 28: ireturn + 29: aload_2 + 30: invokevirtual #1602 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.configId:()Ljava/lang/String; + 33: invokestatic #1605 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.get:(Ljava/lang/String;)Lcom/ogaba/sa_decor/common/loot/DecorLootConfig; + 36: astore_3 + 37: aload_3 + 38: ifnonnull 59 + 41: aload_0 + 42: aload_2 + 43: invokevirtual #1602 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.configId:()Ljava/lang/String; + 46: invokedynamic #1626, 0 // InvokeDynamic #144:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 51: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 54: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 57: iconst_0 + 58: ireturn + 59: aload_1 + 60: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 63: astore 4 + 65: aload_3 + 66: aload 4 + 68: invokestatic #1609 // Method com/ogaba/sa_decor/compat/lootr/DecorLootrCompat.shouldUseLootrPerPlayer:(Lcom/ogaba/sa_decor/common/loot/DecorLootConfig;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)Z + 71: ifeq 135 + 74: aload_0 + 75: invokevirtual #79 // Method net/minecraft/commands/CommandSourceStack.m_81375_:()Lnet/minecraft/server/level/ServerPlayer; + 78: astore 5 + 80: aload_1 + 81: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 84: aload 4 + 86: aload 5 + 88: aload_3 + 89: invokestatic #1630 // Method com/ogaba/sa_decor/compat/lootr/DecorLootrCompat.forceResetPlayerInventory:(Lnet/minecraft/server/level/ServerLevel;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;Lnet/minecraft/server/level/ServerPlayer;Lcom/ogaba/sa_decor/common/loot/DecorLootConfig;)Z + 92: ifeq 110 + 95: aload_1 + 96: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 99: aload 4 + 101: aload 5 + 103: aload_3 + 104: invokestatic #1633 // Method com/ogaba/sa_decor/compat/lootr/DecorLootrCompat.openPlayerInventory:(Lnet/minecraft/server/level/ServerLevel;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;Lnet/minecraft/server/level/ServerPlayer;Lcom/ogaba/sa_decor/common/loot/DecorLootConfig;)Z + 107: ifne 122 + 110: aload_0 + 111: ldc_w #1635 // String Lootr backend could not regenerate this player\'s inventory. + 114: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 117: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 120: iconst_0 + 121: ireturn + 122: aload_0 + 123: aload_1 + 124: invokedynamic #1640, 0 // InvokeDynamic #145:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Ljava/util/function/Supplier; + 129: iconst_1 + 130: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 133: iconst_1 + 134: ireturn + 135: aload_3 + 136: aload 4 + 138: invokestatic #1612 // Method com/ogaba/sa_decor/common/loot/DecorLootInteraction.usesPerPlayerLoot:(Lcom/ogaba/sa_decor/common/loot/DecorLootConfig;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)Z + 141: ifeq 222 + 144: aload_0 + 145: invokevirtual #79 // Method net/minecraft/commands/CommandSourceStack.m_81375_:()Lnet/minecraft/server/level/ServerPlayer; + 148: astore 5 + 150: aload_1 + 151: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 154: invokeinterface #1508, 1 // InterfaceMethod net/minecraft/world/Container.m_6211_:()V + 159: aload_2 + 160: iconst_0 + 161: invokevirtual #1548 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setSpawnedEmpty:(Z)V + 164: aload_2 + 165: aload 5 + 167: invokevirtual #1644 // Method net/minecraft/server/level/ServerPlayer.m_20148_:()Ljava/util/UUID; + 170: iconst_0 + 171: invokevirtual #1647 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setSearched:(Ljava/util/UUID;Z)V + 174: aload_2 + 175: aload 5 + 177: invokevirtual #1644 // Method net/minecraft/server/level/ServerPlayer.m_20148_:()Ljava/util/UUID; + 180: lconst_0 + 181: invokevirtual #1650 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setLastGeneratedGameTime:(Ljava/util/UUID;J)V + 184: aload_1 + 185: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 188: aload 4 + 190: aload_2 + 191: aload_3 + 192: aload 5 + 194: invokevirtual #1644 // Method net/minecraft/server/level/ServerPlayer.m_20148_:()Ljava/util/UUID; + 197: invokestatic #1654 // Method com/ogaba/sa_decor/common/loot/DecorLootInteraction.generateNowForPlayer:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData;Lcom/ogaba/sa_decor/common/loot/DecorLootConfig;Ljava/util/UUID;)V + 200: aload_1 + 201: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 204: aload 4 + 206: invokestatic #1490 // Method com/ogaba/sa_decor/common/loot/DecorLootVisualRefresh.refresh:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 209: aload_0 + 210: aload_1 + 211: invokedynamic #1659, 0 // InvokeDynamic #146:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Ljava/util/function/Supplier; + 216: iconst_1 + 217: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 220: iconst_1 + 221: ireturn + 222: aload_2 + 223: iconst_0 + 224: invokevirtual #1545 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setSearched:(Z)V + 227: aload_2 + 228: iconst_0 + 229: invokevirtual #1548 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.setSpawnedEmpty:(Z)V + 232: aload_1 + 233: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 236: invokevirtual #1522 // Method net/minecraft/world/level/block/entity/BlockEntity.m_6596_:()V + 239: aload_1 + 240: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 243: aload_1 + 244: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 247: aload_1 + 248: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 251: invokestatic #1663 // Method com/ogaba/sa_decor/common/loot/DecorLootInteraction.prepareLootBeforeOpen:(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/BlockEntity;)V + 254: aload_1 + 255: invokestatic #1485 // Method saveTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)V + 258: aload_1 + 259: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 262: aload 4 + 264: invokestatic #1490 // Method com/ogaba/sa_decor/common/loot/DecorLootVisualRefresh.refresh:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 267: aload_0 + 268: aload_1 + 269: invokedynamic #1668, 0 // InvokeDynamic #147:get:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Ljava/util/function/Supplier; + 274: iconst_1 + 275: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 278: iconst_1 + 279: ireturn + + private static int giveLootBlock(net.minecraft.commands.CommandSourceStack, java.lang.String, net.minecraft.resources.ResourceLocation, boolean) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #79 // Method net/minecraft/commands/CommandSourceStack.m_81375_:()Lnet/minecraft/server/level/ServerPlayer; + 4: astore 4 + 6: aload_1 + 7: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 10: ifne 28 + 13: aload_0 + 14: aload_1 + 15: invokedynamic #1367, 0 // InvokeDynamic #127:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 20: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 23: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 26: iconst_0 + 27: ireturn + 28: getstatic #1676 // Field net/minecraft/core/registries/BuiltInRegistries.f_256975_:Lnet/minecraft/core/DefaultedRegistry; + 31: aload_2 + 32: invokeinterface #1682, 2 // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_6612_:(Lnet/minecraft/resources/ResourceLocation;)Ljava/util/Optional; + 37: astore 5 + 39: aload 5 + 41: invokevirtual #1685 // Method java/util/Optional.isEmpty:()Z + 44: ifne 58 + 47: aload 5 + 49: invokevirtual #1687 // Method java/util/Optional.get:()Ljava/lang/Object; + 52: getstatic #1693 // Field net/minecraft/world/level/block/Blocks.f_50016_:Lnet/minecraft/world/level/block/Block; + 55: if_acmpne 76 + 58: aload_0 + 59: aload_2 + 60: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 63: invokedynamic #1696, 0 // InvokeDynamic #148:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 68: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 71: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 74: iconst_0 + 75: ireturn + 76: aload 5 + 78: invokevirtual #1687 // Method java/util/Optional.get:()Ljava/lang/Object; + 81: checkcast #1698 // class net/minecraft/world/level/block/Block + 84: astore 6 + 86: new #1700 // class net/minecraft/world/item/ItemStack + 89: dup + 90: aload 6 + 92: invokevirtual #1704 // Method net/minecraft/world/level/block/Block.m_5456_:()Lnet/minecraft/world/item/Item; + 95: invokespecial #1707 // Method net/minecraft/world/item/ItemStack."":(Lnet/minecraft/world/level/ItemLike;)V + 98: astore 7 + 100: aload 7 + 102: invokevirtual #1710 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 105: ifne 119 + 108: aload 7 + 110: invokevirtual #1713 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 113: getstatic #1719 // Field net/minecraft/world/item/Items.f_41852_:Lnet/minecraft/world/item/Item; + 116: if_acmpne 137 + 119: aload_0 + 120: aload_2 + 121: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 124: invokedynamic #1722, 0 // InvokeDynamic #149:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 129: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 132: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 135: iconst_0 + 136: ireturn + 137: new #1724 // class net/minecraft/nbt/CompoundTag + 140: dup + 141: invokespecial #1725 // Method net/minecraft/nbt/CompoundTag."":()V + 144: astore 8 + 146: aload 8 + 148: ldc #185 // String config_id + 150: aload_1 + 151: invokevirtual #1729 // Method net/minecraft/nbt/CompoundTag.m_128359_:(Ljava/lang/String;Ljava/lang/String;)V + 154: aload 8 + 156: ldc #221 // String locked + 158: iload_3 + 159: invokevirtual #1733 // Method net/minecraft/nbt/CompoundTag.m_128379_:(Ljava/lang/String;Z)V + 162: new #1724 // class net/minecraft/nbt/CompoundTag + 165: dup + 166: invokespecial #1725 // Method net/minecraft/nbt/CompoundTag."":()V + 169: astore 9 + 171: aload 9 + 173: ldc #46 // String sa_decor_loot_seed + 175: aload 8 + 177: invokevirtual #1737 // Method net/minecraft/nbt/CompoundTag.m_128365_:(Ljava/lang/String;Lnet/minecraft/nbt/Tag;)Lnet/minecraft/nbt/Tag; + 180: pop + 181: aload 7 + 183: invokevirtual #1741 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 186: ldc #49 // String BlockEntityTag + 188: aload 9 + 190: invokevirtual #1737 // Method net/minecraft/nbt/CompoundTag.m_128365_:(Ljava/lang/String;Lnet/minecraft/nbt/Tag;)Lnet/minecraft/nbt/Tag; + 193: pop + 194: new #1724 // class net/minecraft/nbt/CompoundTag + 197: dup + 198: invokespecial #1725 // Method net/minecraft/nbt/CompoundTag."":()V + 201: astore 10 + 203: aload 10 + 205: ldc #185 // String config_id + 207: aload_1 + 208: invokevirtual #1729 // Method net/minecraft/nbt/CompoundTag.m_128359_:(Ljava/lang/String;Ljava/lang/String;)V + 211: aload 10 + 213: ldc #221 // String locked + 215: iload_3 + 216: invokevirtual #1733 // Method net/minecraft/nbt/CompoundTag.m_128379_:(Ljava/lang/String;Z)V + 219: aload 7 + 221: invokevirtual #1741 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 224: ldc #43 // String sa_decor_loot_item + 226: aload 10 + 228: invokevirtual #1737 // Method net/minecraft/nbt/CompoundTag.m_128365_:(Ljava/lang/String;Lnet/minecraft/nbt/Tag;)Lnet/minecraft/nbt/Tag; + 231: pop + 232: aload 4 + 234: invokevirtual #1745 // Method net/minecraft/server/level/ServerPlayer.m_150109_:()Lnet/minecraft/world/entity/player/Inventory; + 237: aload 7 + 239: invokevirtual #1751 // Method net/minecraft/world/entity/player/Inventory.m_36054_:(Lnet/minecraft/world/item/ItemStack;)Z + 242: istore 11 + 244: iload 11 + 246: ifne 258 + 249: aload 4 + 251: aload 7 + 253: iconst_0 + 254: invokevirtual #1755 // Method net/minecraft/server/level/ServerPlayer.m_36176_:(Lnet/minecraft/world/item/ItemStack;Z)Lnet/minecraft/world/entity/item/ItemEntity; + 257: pop + 258: aload_0 + 259: aload_2 + 260: aload_1 + 261: iload_3 + 262: invokedynamic #1765, 0 // InvokeDynamic #150:get:(Lnet/minecraft/resources/ResourceLocation;Ljava/lang/String;Z)Ljava/util/function/Supplier; + 267: iconst_1 + 268: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 271: iconst_1 + 272: ireturn + + private static int addHeldItem(net.minecraft.commands.CommandSourceStack, java.lang.String, int, int, int, float) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #79 // Method net/minecraft/commands/CommandSourceStack.m_81375_:()Lnet/minecraft/server/level/ServerPlayer; + 4: astore 6 + 6: aload 6 + 8: invokevirtual #1782 // Method net/minecraft/server/level/ServerPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 11: astore 7 + 13: aload 7 + 15: invokevirtual #1710 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 18: ifeq 33 + 21: aload_0 + 22: ldc_w #1784 // String Hold an item in your main hand first. + 25: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 28: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 31: iconst_0 + 32: ireturn + 33: getstatic #1787 // Field net/minecraft/core/registries/BuiltInRegistries.f_257033_:Lnet/minecraft/core/DefaultedRegistry; + 36: aload 7 + 38: invokevirtual #1713 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 41: invokeinterface #1791, 2 // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_7981_:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation; + 46: astore 8 + 48: aload 7 + 50: invokevirtual #1794 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 53: astore 9 + 55: aload 9 + 57: ifnull 68 + 60: aload 9 + 62: invokevirtual #1797 // Method net/minecraft/nbt/CompoundTag.m_128456_:()Z + 65: ifeq 72 + 68: aconst_null + 69: goto 77 + 72: aload 9 + 74: invokevirtual #1800 // Method net/minecraft/nbt/CompoundTag.toString:()Ljava/lang/String; + 77: astore 10 + 79: aload_0 + 80: aload_1 + 81: aload 8 + 83: invokevirtual #1801 // Method net/minecraft/resources/ResourceLocation.toString:()Ljava/lang/String; + 86: iload_2 + 87: iload_3 + 88: iload 4 + 90: fload 5 + 92: aload 10 + 94: invokestatic #1805 // Method addEntry:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;IIIFLjava/lang/String;)I + 97: ireturn + + private static int addItemById(net.minecraft.commands.CommandSourceStack, java.lang.String, net.minecraft.resources.ResourceLocation, int, int, int, float); + Code: + 0: getstatic #1787 // Field net/minecraft/core/registries/BuiltInRegistries.f_257033_:Lnet/minecraft/core/DefaultedRegistry; + 3: aload_2 + 4: invokeinterface #1815, 2 // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_7804_:(Lnet/minecraft/resources/ResourceLocation;)Z + 9: ifne 30 + 12: aload_0 + 13: aload_2 + 14: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 17: invokedynamic #1818, 0 // InvokeDynamic #151:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 22: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 25: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 28: iconst_0 + 29: ireturn + 30: aload_0 + 31: aload_1 + 32: aload_2 + 33: invokevirtual #1801 // Method net/minecraft/resources/ResourceLocation.toString:()Ljava/lang/String; + 36: iload_3 + 37: iload 4 + 39: iload 5 + 41: fload 6 + 43: invokestatic #1821 // Method addEntry:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;IIIF)I + 46: ireturn + + private static int addLootTable(net.minecraft.commands.CommandSourceStack, java.lang.String, net.minecraft.resources.ResourceLocation); + Code: + 0: aload_1 + 1: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 4: ifne 22 + 7: aload_0 + 8: aload_1 + 9: invokedynamic #1367, 0 // InvokeDynamic #127:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 20: iconst_0 + 21: ireturn + 22: aload_1 + 23: aload_2 + 24: invokevirtual #1801 // Method net/minecraft/resources/ResourceLocation.toString:()Ljava/lang/String; + 27: invokestatic #1826 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.addLootTableToConfig:(Ljava/lang/String;Ljava/lang/String;)Z + 30: istore_3 + 31: iload_3 + 32: ifne 50 + 35: aload_0 + 36: aload_1 + 37: invokedynamic #1829, 0 // InvokeDynamic #152:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 42: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 45: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 48: iconst_0 + 49: ireturn + 50: aload_0 + 51: aload_2 + 52: aload_1 + 53: invokedynamic #1837, 0 // InvokeDynamic #153:get:(Lnet/minecraft/resources/ResourceLocation;Ljava/lang/String;)Ljava/util/function/Supplier; + 58: iconst_1 + 59: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 62: iconst_1 + 63: ireturn + + private static int addTagById(net.minecraft.commands.CommandSourceStack, java.lang.String, net.minecraft.resources.ResourceLocation, int, int, int, float); + Code: + 0: aload_0 + 1: aload_1 + 2: aload_2 + 3: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 6: invokedynamic #1842, 0 // InvokeDynamic #154:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 11: iload_3 + 12: iload 4 + 14: iload 5 + 16: fload 6 + 18: invokestatic #1821 // Method addEntry:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;IIIF)I + 21: ireturn + + private static int addEntry(net.minecraft.commands.CommandSourceStack, java.lang.String, java.lang.String, int, int, int, float); + Code: + 0: aload_0 + 1: aload_1 + 2: aload_2 + 3: iload_3 + 4: iload 4 + 6: iload 5 + 8: fload 6 + 10: aconst_null + 11: invokestatic #1805 // Method addEntry:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;IIIFLjava/lang/String;)I + 14: ireturn + + private static int addEntry(net.minecraft.commands.CommandSourceStack, java.lang.String, java.lang.String, int, int, int, float, java.lang.String); + Code: + 0: aload_1 + 1: invokestatic #778 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.has:(Ljava/lang/String;)Z + 4: ifne 22 + 7: aload_0 + 8: aload_1 + 9: invokedynamic #1367, 0 // InvokeDynamic #127:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 20: iconst_0 + 21: ireturn + 22: aload_1 + 23: aload_2 + 24: iload_3 + 25: iload 4 + 27: iload 5 + 29: fload 6 + 31: aload 7 + 33: invokestatic #1848 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.addEntryToConfig:(Ljava/lang/String;Ljava/lang/String;IIIFLjava/lang/String;)Z + 36: istore 8 + 38: iload 8 + 40: ifne 58 + 43: aload_0 + 44: aload_1 + 45: invokedynamic #1851, 0 // InvokeDynamic #155:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 50: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 53: invokevirtual #800 // Method net/minecraft/commands/CommandSourceStack.m_81352_:(Lnet/minecraft/network/chat/Component;)V + 56: iconst_0 + 57: ireturn + 58: aload 7 + 60: ifnull 75 + 63: aload 7 + 65: invokevirtual #1111 // Method java/lang/String.isBlank:()Z + 68: ifne 75 + 71: iconst_1 + 72: goto 76 + 75: iconst_0 + 76: istore 9 + 78: aload_0 + 79: aload_2 + 80: aload_1 + 81: iload_3 + 82: iload 4 + 84: iload 5 + 86: fload 6 + 88: iload 9 + 90: invokedynamic #1859, 0 // InvokeDynamic #156:get:(Ljava/lang/String;Ljava/lang/String;IIIFZ)Ljava/util/function/Supplier; + 95: iconst_1 + 96: invokevirtual #820 // Method net/minecraft/commands/CommandSourceStack.m_288197_:(Ljava/util/function/Supplier;Z)V + 99: iconst_1 + 100: ireturn + + private static com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget getTarget(net.minecraft.commands.CommandSourceStack) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #79 // Method net/minecraft/commands/CommandSourceStack.m_81375_:()Lnet/minecraft/server/level/ServerPlayer; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #1863 // Method net/minecraft/server/level/ServerPlayer.m_284548_:()Lnet/minecraft/server/level/ServerLevel; + 9: astore_2 + 10: aload_1 + 11: invokevirtual #1867 // Method net/minecraft/server/level/ServerPlayer.m_146892_:()Lnet/minecraft/world/phys/Vec3; + 14: astore_3 + 15: aload_3 + 16: aload_1 + 17: fconst_1 + 18: invokevirtual #1871 // Method net/minecraft/server/level/ServerPlayer.m_20252_:(F)Lnet/minecraft/world/phys/Vec3; + 21: ldc2_w #52 // double 8.0d + 24: invokevirtual #1877 // Method net/minecraft/world/phys/Vec3.m_82490_:(D)Lnet/minecraft/world/phys/Vec3; + 27: invokevirtual #1881 // Method net/minecraft/world/phys/Vec3.m_82549_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3; + 30: astore 4 + 32: aload_2 + 33: new #25 // class net/minecraft/world/level/ClipContext + 36: dup + 37: aload_3 + 38: aload 4 + 40: getstatic #1885 // Field net/minecraft/world/level/ClipContext$Block.OUTLINE:Lnet/minecraft/world/level/ClipContext$Block; + 43: getstatic #1889 // Field net/minecraft/world/level/ClipContext$Fluid.NONE:Lnet/minecraft/world/level/ClipContext$Fluid; + 46: aload_1 + 47: invokespecial #1892 // Method net/minecraft/world/level/ClipContext."":(Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/level/ClipContext$Block;Lnet/minecraft/world/level/ClipContext$Fluid;Lnet/minecraft/world/entity/Entity;)V + 50: invokevirtual #1898 // Method net/minecraft/server/level/ServerLevel.m_45547_:(Lnet/minecraft/world/level/ClipContext;)Lnet/minecraft/world/phys/BlockHitResult; + 53: astore 5 + 55: aload 5 + 57: invokevirtual #1904 // Method net/minecraft/world/phys/BlockHitResult.m_6662_:()Lnet/minecraft/world/phys/HitResult$Type; + 60: getstatic #1908 // Field net/minecraft/world/phys/HitResult$Type.BLOCK:Lnet/minecraft/world/phys/HitResult$Type; + 63: if_acmpeq 73 + 66: getstatic #1910 // Field NO_BLOCK_HIT:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; + 69: invokevirtual #1915 // Method com/mojang/brigadier/exceptions/SimpleCommandExceptionType.create:()Lcom/mojang/brigadier/exceptions/CommandSyntaxException; + 72: athrow + 73: aload_2 + 74: aload 5 + 76: invokevirtual #1918 // Method net/minecraft/world/phys/BlockHitResult.m_82425_:()Lnet/minecraft/core/BlockPos; + 79: invokestatic #1922 // Method com/ogaba/sa_decor/common/loot/DecorLootTargeting.findLootContainer:(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;)Ljava/util/Optional; + 82: getstatic #1924 // Field NOT_LOOT_CONTAINER:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; + 85: dup + 86: invokestatic #1929 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 89: pop + 90: invokedynamic #1934, 0 // InvokeDynamic #157:get:(Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType;)Ljava/util/function/Supplier; + 95: invokevirtual #1938 // Method java/util/Optional.orElseThrow:(Ljava/util/function/Supplier;)Ljava/lang/Object; + 98: checkcast #18 // class com/ogaba/sa_decor/common/loot/DecorLootTargeting$Target + 101: astore 6 + 103: new #7 // class com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget + 106: dup + 107: aload_2 + 108: aload 6 + 110: invokevirtual #1939 // Method com/ogaba/sa_decor/common/loot/DecorLootTargeting$Target.pos:()Lnet/minecraft/core/BlockPos; + 113: aload 6 + 115: invokevirtual #1940 // Method com/ogaba/sa_decor/common/loot/DecorLootTargeting$Target.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 118: aload 6 + 120: invokevirtual #1941 // Method com/ogaba/sa_decor/common/loot/DecorLootTargeting$Target.data:()Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData; + 123: aload 6 + 125: invokevirtual #1942 // Method com/ogaba/sa_decor/common/loot/DecorLootTargeting$Target.container:()Lnet/minecraft/world/Container; + 128: invokespecial #1945 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget."":(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/BlockEntity;Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData;Lnet/minecraft/world/Container;)V + 131: areturn + + private static void saveTarget(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1430 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.level:()Lnet/minecraft/server/level/ServerLevel; + 4: aload_0 + 5: invokestatic #1450 // Method wrapTarget:(Lcom/ogaba/sa_decor/command/SADecorLootCommand$LootTarget;)Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target; + 8: invokestatic #1953 // Method com/ogaba/sa_decor/common/loot/DecorLootTargeting.saveTarget:(Lnet/minecraft/world/level/Level;Lcom/ogaba/sa_decor/common/loot/DecorLootTargeting$Target;)V + 11: return + + private static com.ogaba.sa_decor.common.loot.DecorLootTargeting$Target wrapTarget(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: new #18 // class com/ogaba/sa_decor/common/loot/DecorLootTargeting$Target + 3: dup + 4: aload_0 + 5: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 8: aload_0 + 9: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 12: aload_0 + 13: invokevirtual #1519 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.blockEntity:()Lnet/minecraft/world/level/block/entity/BlockEntity; + 16: astore_2 + 17: aload_2 + 18: instanceof #1955 // class com/ogaba/sa_decor/common/loot/DecorLootContainer + 21: ifeq 33 + 24: aload_2 + 25: checkcast #1955 // class com/ogaba/sa_decor/common/loot/DecorLootContainer + 28: astore_1 + 29: aload_1 + 30: goto 34 + 33: aconst_null + 34: aload_0 + 35: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 38: aload_0 + 39: invokevirtual #1471 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.data:()Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData; + 42: invokespecial #1960 // Method com/ogaba/sa_decor/common/loot/DecorLootTargeting$Target."":(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/BlockEntity;Lcom/ogaba/sa_decor/common/loot/DecorLootContainer;Lnet/minecraft/world/Container;Lcom/ogaba/sa_decor/common/loot/DecorLootContainerData;)V + 45: areturn + + private static net.minecraft.resources.ResourceLocation parseResourceLocation(java.lang.String); + Code: + 0: aload_0 + 1: ldc_w #1966 // String : + 4: invokevirtual #1970 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 7: ifeq 14 + 10: aload_0 + 11: goto 20 + 14: aload_0 + 15: invokedynamic #1973, 0 // InvokeDynamic #158:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 20: astore_1 + 21: aload_1 + 22: invokestatic #1976 // Method net/minecraft/resources/ResourceLocation.m_135820_:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 25: astore_2 + 26: aload_2 + 27: ifnonnull 46 + 30: new #1757 // class net/minecraft/resources/ResourceLocation + 33: dup + 34: ldc_w #1978 // String minecraft + 37: ldc_w #1980 // String air + 40: invokespecial #1982 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 43: goto 47 + 46: aload_2 + 47: areturn + + private static java.lang.String formatContainerSummary(net.minecraft.world.Container); + Code: + 0: aload_0 + 1: invokestatic #1990 // Method countNonEmptySlots:(Lnet/minecraft/world/Container;)I + 4: aload_0 + 5: invokeinterface #1993, 1 // InterfaceMethod net/minecraft/world/Container.m_6643_:()I + 10: invokedynamic #1998, 0 // InvokeDynamic #159:makeConcatWithConstants:(II)Ljava/lang/String; + 15: areturn + + private static int countNonEmptySlots(net.minecraft.world.Container); + Code: + 0: iconst_0 + 1: istore_1 + 2: iconst_0 + 3: istore_2 + 4: iload_2 + 5: aload_0 + 6: invokeinterface #1993, 1 // InterfaceMethod net/minecraft/world/Container.m_6643_:()I + 11: if_icmpge 36 + 14: aload_0 + 15: iload_2 + 16: invokeinterface #2003, 2 // InterfaceMethod net/minecraft/world/Container.m_8020_:(I)Lnet/minecraft/world/item/ItemStack; + 21: invokevirtual #1710 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 24: ifne 30 + 27: iinc 1, 1 + 30: iinc 2, 1 + 33: goto 4 + 36: iload_1 + 37: ireturn + + private static java.lang.String formatPos(net.minecraft.core.BlockPos); + Code: + 0: aload_0 + 1: invokevirtual #2008 // Method net/minecraft/core/BlockPos.m_123341_:()I + 4: aload_0 + 5: invokevirtual #2011 // Method net/minecraft/core/BlockPos.m_123342_:()I + 8: aload_0 + 9: invokevirtual #2014 // Method net/minecraft/core/BlockPos.m_123343_:()I + 12: invokedynamic #2019, 0 // InvokeDynamic #160:makeConcatWithConstants:(III)Ljava/lang/String; + 17: areturn + + private static net.minecraft.network.chat.Component lambda$addEntry$131(java.lang.String, java.lang.String, int, int, int, float, boolean); + Code: + 0: aload_0 + 1: aload_1 + 2: iload_2 + 3: iload_3 + 4: iload 4 + 6: invokestatic #2026 // Method java/lang/Math.min:(II)I + 9: iload_3 + 10: iload 4 + 12: invokestatic #2029 // Method java/lang/Math.max:(II)I + 15: fload 5 + 17: iload 6 + 19: ifeq 28 + 22: ldc_w #2031 // String nbt=true + 25: goto 31 + 28: ldc_w #2033 // String + 31: invokedynamic #2038, 0 // InvokeDynamic #161:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;IIIFLjava/lang/String;)Ljava/lang/String; + 36: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 39: areturn + + private static net.minecraft.network.chat.Component lambda$addLootTable$130(net.minecraft.resources.ResourceLocation, java.lang.String); + Code: + 0: aload_0 + 1: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 4: aload_1 + 5: invokedynamic #2041, 0 // InvokeDynamic #162:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 10: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 13: areturn + + private static net.minecraft.network.chat.Component lambda$giveLootBlock$129(net.minecraft.resources.ResourceLocation, java.lang.String, boolean); + Code: + 0: aload_0 + 1: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 4: aload_1 + 5: iload_2 + 6: invokedynamic #2046, 0 // InvokeDynamic #163:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; + 11: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 14: areturn + + private static net.minecraft.network.chat.Component lambda$generate$128(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: invokedynamic #2051, 0 // InvokeDynamic #164:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: areturn + + private static net.minecraft.network.chat.Component lambda$generate$127(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: invokedynamic #2054, 0 // InvokeDynamic #165:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: areturn + + private static net.minecraft.network.chat.Component lambda$generate$126(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: invokedynamic #2057, 0 // InvokeDynamic #166:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: areturn + + private static net.minecraft.network.chat.Component lambda$info$125(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget, com.ogaba.sa_decor.common.loot.DecorLootContainerData, boolean, boolean, com.ogaba.sa_decor.common.loot.DecorLootConfig, net.minecraft.server.level.ServerPlayer); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: aload_1 + 8: invokevirtual #1602 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.configId:()Ljava/lang/String; + 11: aload_1 + 12: invokevirtual #2060 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isLocked:()Z + 15: aload_1 + 16: invokevirtual #2063 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isSpawnedEmpty:()Z + 19: iload_2 + 20: iload_3 + 21: ifeq 30 + 24: ldc_w #2065 // String lootr + 27: goto 43 + 30: iload_2 + 31: ifeq 40 + 34: ldc_w #2067 // String sa_native + 37: goto 43 + 40: ldc_w #2069 // String shared + 43: aload 4 + 45: ifnull 63 + 48: aload 4 + 50: invokevirtual #2073 // Method com/ogaba/sa_decor/common/loot/DecorLootConfig.openPass:()Lcom/ogaba/sa_decor/common/loot/DecorLootOpenPass; + 53: invokevirtual #2077 // Method com/ogaba/sa_decor/common/loot/DecorLootOpenPass.enabled:()Z + 56: ifeq 63 + 59: iconst_1 + 60: goto 64 + 63: iconst_0 + 64: aload_1 + 65: invokevirtual #2080 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isSearched:()Z + 68: aload_1 + 69: invokevirtual #2084 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.lastGeneratedGameTime:()J + 72: aload_1 + 73: aload 5 + 75: invokevirtual #1644 // Method net/minecraft/server/level/ServerPlayer.m_20148_:()Ljava/util/UUID; + 78: invokevirtual #2087 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.isSearched:(Ljava/util/UUID;)Z + 81: aload_1 + 82: aload 5 + 84: invokevirtual #1644 // Method net/minecraft/server/level/ServerPlayer.m_20148_:()Ljava/util/UUID; + 87: invokevirtual #2090 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.lastGeneratedGameTime:(Ljava/util/UUID;)J + 90: aload_0 + 91: invokevirtual #1503 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.container:()Lnet/minecraft/world/Container; + 94: invokestatic #2092 // Method formatContainerSummary:(Lnet/minecraft/world/Container;)Ljava/lang/String; + 97: invokedynamic #2097, 0 // InvokeDynamic #167:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;ZZJZJLjava/lang/String;)Ljava/lang/String; + 102: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 105: areturn + + private static net.minecraft.network.chat.Component lambda$info$124(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: invokedynamic #2100, 0 // InvokeDynamic #168:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: areturn + + private static net.minecraft.network.chat.Component lambda$refresh$123(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: invokedynamic #2103, 0 // InvokeDynamic #169:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: areturn + + private static net.minecraft.network.chat.Component lambda$respawnNow$122(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: invokedynamic #2106, 0 // InvokeDynamic #170:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: areturn + + private static net.minecraft.network.chat.Component lambda$lock$121(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget, boolean); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: iload_1 + 8: invokedynamic #2111, 0 // InvokeDynamic #171:makeConcatWithConstants:(Ljava/lang/String;Z)Ljava/lang/String; + 13: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 16: areturn + + private static net.minecraft.network.chat.Component lambda$reset$120(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget, com.ogaba.sa_decor.common.loot.DecorLootContainerData); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: aload_1 + 8: invokevirtual #1602 // Method com/ogaba/sa_decor/common/loot/DecorLootContainerData.configId:()Ljava/lang/String; + 11: invokedynamic #2114, 0 // InvokeDynamic #172:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 16: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 19: areturn + + private static net.minecraft.network.chat.Component lambda$clearInventory$119(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: invokedynamic #2117, 0 // InvokeDynamic #173:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: areturn + + private static net.minecraft.network.chat.Component lambda$clear$118(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: invokedynamic #2120, 0 // InvokeDynamic #174:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 12: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: areturn + + private static net.minecraft.network.chat.Component lambda$set$117(com.ogaba.sa_decor.command.SADecorLootCommand$LootTarget, java.lang.String, boolean); + Code: + 0: aload_0 + 1: invokevirtual #1439 // Method com/ogaba/sa_decor/command/SADecorLootCommand$LootTarget.pos:()Lnet/minecraft/core/BlockPos; + 4: invokestatic #2048 // Method formatPos:(Lnet/minecraft/core/BlockPos;)Ljava/lang/String; + 7: aload_1 + 8: iload_2 + 9: invokedynamic #2123, 0 // InvokeDynamic #175:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: areturn + + private static net.minecraft.network.chat.Component lambda$updateConfigFlag$116(java.lang.String, java.lang.String, boolean); + Code: + 0: aload_0 + 1: aload_1 + 2: iload_2 + 3: invokedynamic #2126, 0 // InvokeDynamic #176:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; + 8: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 11: areturn + + private static net.minecraft.network.chat.Component lambda$setConfigRespawn$115(java.lang.String, boolean, int, boolean); + Code: + 0: aload_0 + 1: iload_1 + 2: iload_2 + 3: iload_3 + 4: invokedynamic #2131, 0 // InvokeDynamic #177:makeConcatWithConstants:(Ljava/lang/String;ZIZ)Ljava/lang/String; + 9: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 12: areturn + + private static net.minecraft.network.chat.Component lambda$setConfigEmpty$114(java.lang.String, boolean, float); + Code: + 0: aload_0 + 1: iload_1 + 2: fconst_0 + 3: fconst_1 + 4: fload_2 + 5: invokestatic #2134 // Method java/lang/Math.min:(FF)F + 8: invokestatic #2136 // Method java/lang/Math.max:(FF)F + 11: invokedynamic #2141, 0 // InvokeDynamic #178:makeConcatWithConstants:(Ljava/lang/String;ZF)Ljava/lang/String; + 16: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 19: areturn + + private static boolean lambda$setConfigLock$113(java.lang.String, boolean); + Code: + 0: aload_0 + 1: iload_1 + 2: invokestatic #2144 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.setLockEnabled:(Ljava/lang/String;Z)Z + 5: ireturn + + private static boolean lambda$setConfigSearch$112(java.lang.String, boolean); + Code: + 0: aload_0 + 1: iload_1 + 2: invokestatic #2147 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.setSearchEnabled:(Ljava/lang/String;Z)Z + 5: ireturn + + private static boolean lambda$setConfigPerPlayer$111(java.lang.String, boolean); + Code: + 0: aload_0 + 1: iload_1 + 2: invokestatic #2150 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.setPerPlayer:(Ljava/lang/String;Z)Z + 5: ireturn + + private static net.minecraft.network.chat.Component lambda$createConfig$110(java.lang.String, boolean, boolean, boolean); + Code: + 0: aload_0 + 1: aload_0 + 2: invokestatic #2154 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.getConfigPath:(Ljava/lang/String;)Ljava/nio/file/Path; + 5: invokeinterface #2159, 1 // InterfaceMethod java/nio/file/Path.toAbsolutePath:()Ljava/nio/file/Path; + 10: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 13: iload_1 + 14: iload_2 + 15: iload_3 + 16: invokedynamic #2164, 0 // InvokeDynamic #179:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/lang/String; + 21: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 24: areturn + + private static net.minecraft.network.chat.Component lambda$copyConfig$109(java.lang.String, java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: invokedynamic #2167, 0 // InvokeDynamic #180:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 7: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 10: areturn + + private static net.minecraft.network.chat.Component lambda$preset$108(java.lang.String); + Code: + 0: aload_0 + 1: aload_0 + 2: invokestatic #2154 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager.getConfigPath:(Ljava/lang/String;)Ljava/nio/file/Path; + 5: invokeinterface #2159, 1 // InterfaceMethod java/nio/file/Path.toAbsolutePath:()Ljava/nio/file/Path; + 10: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 13: invokedynamic #2170, 0 // InvokeDynamic #181:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 18: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 21: areturn + + private static net.minecraft.network.chat.Component lambda$addForceOpenRule$107(java.lang.String, net.minecraft.resources.ResourceLocation); + Code: + 0: aload_0 + 1: aload_1 + 2: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 5: invokedynamic #2173, 0 // InvokeDynamic #182:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 10: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 13: areturn + + private static net.minecraft.network.chat.Component lambda$forceOpenList$106(java.lang.String); + Code: + 0: aload_0 + 1: invokedynamic #2176, 0 // InvokeDynamic #183:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 6: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 9: areturn + + private static net.minecraft.network.chat.Component lambda$forceOpenList$105(); + Code: + 0: ldc_w #2178 // String No force open entries loaded. + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$forceOpenReload$104(); + Code: + 0: invokestatic #945 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenConfigManager.entries:()Ljava/util/List; + 3: invokeinterface #948, 1 // InterfaceMethod java/util/List.size:()I + 8: invokedynamic #2183, 0 // InvokeDynamic #184:makeConcatWithConstants:(I)Ljava/lang/String; + 13: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 16: areturn + + private static net.minecraft.network.chat.Component lambda$forceOpenFolder$103(java.nio.file.Path); + Code: + 0: aload_0 + 1: invokeinterface #2159, 1 // InterfaceMethod java/nio/file/Path.toAbsolutePath:()Ljava/nio/file/Path; + 6: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 9: invokedynamic #2186, 0 // InvokeDynamic #185:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: areturn + + private static net.minecraft.network.chat.Component lambda$formatConfigs$102(int); + Code: + 0: iload_0 + 1: invokedynamic #2189, 0 // InvokeDynamic #186:makeConcatWithConstants:(I)Ljava/lang/String; + 6: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 9: areturn + + private static net.minecraft.network.chat.Component lambda$advancedHelp$101(); + Code: + 0: ldc_w #2191 // String /sa_decor loot advanced reset/generate/refresh/clear_inventory/respawn_now + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$advancedHelp$100(); + Code: + 0: ldc_w #2193 // String /sa_decor loot advanced format + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$advancedHelp$99(); + Code: + 0: ldc_w #2195 // String /sa_decor loot advanced force_open list/add/reload/folder + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$advancedHelp$98(); + Code: + 0: ldc_w #2197 // String /sa_decor loot advanced add hand/item/tag/loot_table ... + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$advancedHelp$97(); + Code: + 0: ldc_w #2199 // String /sa_decor loot advanced config per_player/search/lock/empty/respawn ... + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$advancedHelp$96(); + Code: + 0: ldc_w #2201 // String /sa_decor loot advanced create [per_player] [search] [lock] + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$advancedHelp$95(); + Code: + 0: ldc_w #2203 // String Advanced loot commands: + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$presets$94(); + Code: + 0: ldc_w #2205 // String Use: /sa_decor loot preset + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$presets$93(); + Code: + 0: invokestatic #893 // Method com/ogaba/sa_decor/common/loot/DecorLootDefaultProfiles.availablePresetIdsText:()Ljava/lang/String; + 3: invokedynamic #2208, 0 // InvokeDynamic #187:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 8: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 11: areturn + + private static net.minecraft.network.chat.Component lambda$help$92(); + Code: + 0: invokestatic #893 // Method com/ogaba/sa_decor/common/loot/DecorLootDefaultProfiles.availablePresetIdsText:()Ljava/lang/String; + 3: invokedynamic #2211, 0 // InvokeDynamic #188:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 8: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 11: areturn + + private static net.minecraft.network.chat.Component lambda$help$91(); + Code: + 0: ldc_w #2213 // String Advanced options: /sa_decor loot advanced + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$help$90(); + Code: + 0: ldc_w #2215 // String Useful: list, reload, restore_defaults, folder, info, clear, test, lock, unlock, give + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$help$89(); + Code: + 0: ldc_w #2217 // String 3) Look at a container: /sa_decor loot use [locked] + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$help$88(); + Code: + 0: ldc_w #2219 // String Optional item: /sa_decor loot add item minecraft:apple + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$help$87(); + Code: + 0: ldc_w #2221 // String Range count: /sa_decor loot add hand [chance] + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$help$86(); + Code: + 0: ldc_w #2223 // String Optional hand: /sa_decor loot add hand [weight] [count] [chance] + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$help$85(); + Code: + 0: ldc_w #2225 // String 2) Add loot: hold an item and run /sa_decor loot add hand + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$help$84(); + Code: + 0: ldc_w #2227 // String 1) Create: /sa_decor loot new OR /sa_decor loot preset + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$help$83(); + Code: + 0: ldc_w #2229 // String SA Decor Loot - simple workflow + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$folder$82(java.nio.file.Path); + Code: + 0: aload_0 + 1: invokeinterface #2159, 1 // InterfaceMethod java/nio/file/Path.toAbsolutePath:()Ljava/nio/file/Path; + 6: invokestatic #1239 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String; + 9: invokedynamic #2232, 0 // InvokeDynamic #189:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 17: areturn + + private static net.minecraft.network.chat.Component lambda$list$81(java.lang.String); + Code: + 0: aload_0 + 1: invokedynamic #2235, 0 // InvokeDynamic #190:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 6: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 9: areturn + + private static net.minecraft.network.chat.Component lambda$list$80(); + Code: + 0: ldc_w #2237 // String No loot configs loaded. + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$restoreDefaultProfiles$79(int); + Code: + 0: iload_0 + 1: invokedynamic #2240, 0 // InvokeDynamic #191:makeConcatWithConstants:(I)Ljava/lang/String; + 6: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 9: areturn + + private static net.minecraft.network.chat.Component lambda$restoreDefaultProfiles$78(); + Code: + 0: ldc_w #2242 // String All default loot crate profiles already exist; nothing was overwritten. + 3: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 6: areturn + + private static net.minecraft.network.chat.Component lambda$reload$77(int, int, int); + Code: + 0: iload_0 + 1: iload_1 + 2: iload_2 + 3: invokedynamic #2245, 0 // InvokeDynamic #192:makeConcatWithConstants:(III)Ljava/lang/String; + 8: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 11: areturn + + private static net.minecraft.network.chat.Component lambda$undoWand$76(boolean); + Code: + 0: iload_0 + 1: ifeq 10 + 4: ldc_w #2247 // String Undid the last Loot Crate Wand edit. + 7: goto 13 + 10: ldc_w #2249 // String There is no wand edit to undo. + 13: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 16: areturn + + private static net.minecraft.network.chat.Component lambda$createPresetAs$75(java.lang.String, java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: invokedynamic #2252, 0 // InvokeDynamic #193:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 7: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 10: areturn + + private static net.minecraft.network.chat.Component lambda$importProfile$74(java.lang.String); + Code: + 0: aload_0 + 1: invokedynamic #2255, 0 // InvokeDynamic #194:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 6: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 9: areturn + + private static net.minecraft.network.chat.Component lambda$exportProfile$73(java.lang.String); + Code: + 0: aload_0 + 1: invokedynamic #2258, 0 // InvokeDynamic #195:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 6: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 9: areturn + + private static net.minecraft.network.chat.Component lambda$cleanupLootMarkers$72(com.ogaba.sa_decor.common.loot.DecorLootProfileUsage$CleanupResult); + Code: + 0: aload_0 + 1: invokevirtual #2261 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$CleanupResult.staleContainersRemoved:()I + 4: aload_0 + 5: invokevirtual #2264 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$CleanupResult.staleLooseRemoved:()I + 8: aload_0 + 9: invokevirtual #2267 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$CleanupResult.missingProfileReferences:()I + 12: aload_0 + 13: invokevirtual #845 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$CleanupResult.indexEntriesFixed:()I + 16: invokedynamic #2272, 0 // InvokeDynamic #196:makeConcatWithConstants:(IIII)Ljava/lang/String; + 21: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 24: areturn + + private static net.minecraft.network.chat.Component lambda$profileUsage$71(java.lang.String, com.ogaba.sa_decor.common.loot.DecorLootProfileUsage$Usage); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #2275 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$Usage.containers:()I + 5: aload_1 + 6: invokevirtual #2278 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$Usage.looseLoot:()I + 9: aload_1 + 10: invokevirtual #2281 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$Usage.looseLootConfigs:()I + 13: aload_1 + 14: invokevirtual #2284 // Method com/ogaba/sa_decor/common/loot/DecorLootProfileUsage$Usage.staleLoadedContainers:()I + 17: invokedynamic #2289, 0 // InvokeDynamic #197:makeConcatWithConstants:(Ljava/lang/String;IIII)Ljava/lang/String; + 22: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 25: areturn + + private static int lambda$forceOpenCommand$70(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: ldc_w #432 // String tag + 10: aload_0 + 11: ldc_w #434 // String tag_id + 14: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 17: aload_0 + 18: ldc_w #755 // String difficulty + 21: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 24: invokestatic #2304 // Method forceOpenRuleByDifficulty:(Ljava/lang/String;)Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule; + 27: invokestatic #2306 // Method addForceOpenRule:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule;)I + 30: ireturn + + private static int lambda$forceOpenCommand$69(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: ldc_w #432 // String tag + 10: aload_0 + 11: ldc_w #434 // String tag_id + 14: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 17: invokestatic #1223 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenRule.defaults:()Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule; + 20: invokestatic #2306 // Method addForceOpenRule:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule;)I + 23: ireturn + + private static int lambda$forceOpenCommand$68(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: ldc_w #420 // String item + 10: aload_0 + 11: ldc_w #422 // String item_id + 14: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 17: aload_0 + 18: ldc_w #755 // String difficulty + 21: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 24: invokestatic #2304 // Method forceOpenRuleByDifficulty:(Ljava/lang/String;)Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule; + 27: invokestatic #2306 // Method addForceOpenRule:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule;)I + 30: ireturn + + private static int lambda$forceOpenCommand$67(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: ldc_w #420 // String item + 10: aload_0 + 11: ldc_w #422 // String item_id + 14: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 17: invokestatic #1223 // Method com/ogaba/sa_decor/common/loot/DecorForceOpenRule.defaults:()Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule; + 20: invokestatic #2306 // Method addForceOpenRule:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Lcom/ogaba/sa_decor/common/loot/DecorForceOpenRule;)I + 23: ireturn + + private static int lambda$forceOpenCommand$66(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2310 // Method forceOpenList:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$forceOpenCommand$65(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2312 // Method forceOpenReload:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$forceOpenCommand$64(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2314 // Method forceOpenFolder:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$configCommand$63(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #687 // String enabled + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: aload_0 + 21: ldc_w #717 // String time_ticks + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #724 // String only_if_empty + 31: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 34: aload_0 + 35: ldc_w #726 // String clear_before_respawn + 38: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 41: invokestatic #2324 // Method setConfigRespawn:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;ZIZZ)I + 44: ireturn + + private static int lambda$configCommand$62(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #687 // String enabled + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: aload_0 + 21: ldc_w #717 // String time_ticks + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: iconst_1 + 28: iconst_1 + 29: invokestatic #2324 // Method setConfigRespawn:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;ZIZZ)I + 32: ireturn + + private static int lambda$configCommand$61(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #687 // String enabled + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: aload_0 + 21: ldc_w #708 // String spawn_chance + 24: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 27: invokestatic #2330 // Method setConfigEmpty:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;ZF)I + 30: ireturn + + private static int lambda$configCommand$60(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #687 // String enabled + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: invokestatic #2332 // Method setConfigLock:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Z)I + 23: ireturn + + private static int lambda$configCommand$59(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #687 // String enabled + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: invokestatic #2334 // Method setConfigSearch:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Z)I + 23: ireturn + + private static int lambda$configCommand$58(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #687 // String enabled + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: invokestatic #2336 // Method setConfigPerPlayer:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Z)I + 23: ireturn + + private static int lambda$addLootTableCommand$57(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #446 // String loot_table_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: invokestatic #2338 // Method addLootTable:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;)I + 23: ireturn + + private static int lambda$addTagCommand$56(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #434 // String tag_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: aload_0 + 21: ldc_w #454 // String weight + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #487 // String min_count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #489 // String max_count + 38: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 41: aload_0 + 42: ldc_w #474 // String chance + 45: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 48: invokestatic #2340 // Method addTagById:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;IIIF)I + 51: ireturn + + private static int lambda$addTagCommand$55(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #434 // String tag_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: aload_0 + 21: ldc_w #454 // String weight + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #467 // String count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #467 // String count + 38: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 41: aload_0 + 42: ldc_w #474 // String chance + 45: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 48: invokestatic #2340 // Method addTagById:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;IIIF)I + 51: ireturn + + private static int lambda$addItemCommand$54(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #422 // String item_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: aload_0 + 21: ldc_w #454 // String weight + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #487 // String min_count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #489 // String max_count + 38: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 41: aload_0 + 42: ldc_w #474 // String chance + 45: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 48: invokestatic #2342 // Method addItemById:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;IIIF)I + 51: ireturn + + private static int lambda$addItemCommand$53(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #422 // String item_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: aload_0 + 21: ldc_w #454 // String weight + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #467 // String count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #467 // String count + 38: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 41: aload_0 + 42: ldc_w #474 // String chance + 45: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 48: invokestatic #2342 // Method addItemById:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;IIIF)I + 51: ireturn + + private static int lambda$addHandCommand$52(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #454 // String weight + 17: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 20: aload_0 + 21: ldc_w #487 // String min_count + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #489 // String max_count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #474 // String chance + 38: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 41: invokestatic #2344 // Method addHeldItem:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;IIIF)I + 44: ireturn + + private static int lambda$addHandCommand$51(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #454 // String weight + 17: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 20: aload_0 + 21: ldc_w #467 // String count + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #467 // String count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #474 // String chance + 38: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 41: invokestatic #2344 // Method addHeldItem:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;IIIF)I + 44: ireturn + + private static int lambda$lootGiveCommand$50(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc #197 // String block_id + 16: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 19: aload_0 + 20: ldc #221 // String locked + 22: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 25: invokestatic #2346 // Method giveLootBlock:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Z)I + 28: ireturn + + private static int lambda$lootGiveCommand$49(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc #197 // String block_id + 16: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 19: iconst_0 + 20: invokestatic #2346 // Method giveLootBlock:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Z)I + 23: ireturn + + private static int lambda$createCommand$48(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #602 // String per_player + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: aload_0 + 21: ldc_w #609 // String search_enabled + 24: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 27: aload_0 + 28: ldc_w #616 // String lock_enabled + 31: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 34: invokestatic #2348 // Method createConfig:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;ZZZ)I + 37: ireturn + + private static int lambda$createCommand$47(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #602 // String per_player + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: aload_0 + 21: ldc_w #609 // String search_enabled + 24: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 27: iconst_0 + 28: invokestatic #2348 // Method createConfig:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;ZZZ)I + 31: ireturn + + private static int lambda$createCommand$46(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #602 // String per_player + 17: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 20: iconst_1 + 21: iconst_0 + 22: invokestatic #2348 // Method createConfig:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;ZZZ)I + 25: ireturn + + private static int lambda$createCommand$45(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: iconst_1 + 14: iconst_1 + 15: iconst_0 + 16: invokestatic #2348 // Method createConfig:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;ZZZ)I + 19: ireturn + + private static int lambda$advancedLootCommand$44(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc #221 // String locked + 16: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 19: invokestatic #2350 // Method set:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Z)I + 22: ireturn + + private static int lambda$advancedLootCommand$43(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: iconst_0 + 14: invokestatic #2350 // Method set:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Z)I + 17: ireturn + + private static int lambda$advancedLootCommand$42(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2352 // Method generate:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$advancedLootCommand$41(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2354 // Method respawnNow:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$advancedLootCommand$40(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2356 // Method reset:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$advancedLootCommand$39(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2358 // Method clearInventory:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$advancedLootCommand$38(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2360 // Method refresh:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$advancedLootCommand$37(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2362 // Method formatConfigs:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$advancedLootCommand$36(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc_w #523 // String from_id + 11: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 14: aload_0 + 15: ldc_w #525 // String to_id + 18: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 21: invokestatic #2364 // Method copyConfig:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;)I + 24: ireturn + + private static int lambda$advancedLootCommand$35(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2366 // Method advancedHelp:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$simpleTagEntryArgs$34(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #434 // String tag_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: aload_0 + 21: ldc_w #454 // String weight + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #487 // String min_count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #489 // String max_count + 38: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 41: aload_0 + 42: ldc_w #474 // String chance + 45: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 48: invokestatic #2340 // Method addTagById:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;IIIF)I + 51: ireturn + + private static int lambda$simpleItemEntryArgs$33(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #422 // String item_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: aload_0 + 21: ldc_w #454 // String weight + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #487 // String min_count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #489 // String max_count + 38: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 41: aload_0 + 42: ldc_w #474 // String chance + 45: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 48: invokestatic #2342 // Method addItemById:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;IIIF)I + 51: ireturn + + private static int lambda$simpleHandEntryArgs$32(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #454 // String weight + 17: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 20: aload_0 + 21: ldc_w #487 // String min_count + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #489 // String max_count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #474 // String chance + 38: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 41: invokestatic #2344 // Method addHeldItem:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;IIIF)I + 44: ireturn + + private static int lambda$simpleHandEntryArgs$31(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #454 // String weight + 17: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 20: aload_0 + 21: ldc_w #487 // String min_count + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #489 // String max_count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: fconst_1 + 35: invokestatic #2344 // Method addHeldItem:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;IIIF)I + 38: ireturn + + private static int lambda$simpleHandEntryArgs$30(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #454 // String weight + 17: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 20: aload_0 + 21: ldc_w #467 // String count + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #467 // String count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: aload_0 + 35: ldc_w #474 // String chance + 38: invokestatic #2328 // Method com/mojang/brigadier/arguments/FloatArgumentType.getFloat:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)F + 41: invokestatic #2344 // Method addHeldItem:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;IIIF)I + 44: ireturn + + private static int lambda$simpleHandEntryArgs$29(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #454 // String weight + 17: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 20: aload_0 + 21: ldc_w #467 // String count + 24: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 27: aload_0 + 28: ldc_w #467 // String count + 31: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 34: fconst_1 + 35: invokestatic #2344 // Method addHeldItem:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;IIIF)I + 38: ireturn + + private static int lambda$simpleHandEntryArgs$28(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #454 // String weight + 17: invokestatic #2322 // Method com/mojang/brigadier/arguments/IntegerArgumentType.getInteger:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)I + 20: iconst_1 + 21: iconst_1 + 22: fconst_1 + 23: invokestatic #2344 // Method addHeldItem:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;IIIF)I + 26: ireturn + + private static int lambda$simpleAddCommand$27(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #446 // String loot_table_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: invokestatic #2338 // Method addLootTable:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;)I + 23: ireturn + + private static int lambda$simpleAddCommand$26(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #434 // String tag_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: bipush 10 + 22: iconst_1 + 23: iconst_1 + 24: fconst_1 + 25: invokestatic #2340 // Method addTagById:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;IIIF)I + 28: ireturn + + private static int lambda$simpleAddCommand$25(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc_w #422 // String item_id + 17: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 20: bipush 10 + 22: iconst_1 + 23: iconst_1 + 24: fconst_1 + 25: invokestatic #2342 // Method addItemById:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;IIIF)I + 28: ireturn + + private static int lambda$simpleAddCommand$24(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: bipush 10 + 15: iconst_1 + 16: iconst_1 + 17: fconst_1 + 18: invokestatic #2344 // Method addHeldItem:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;IIIF)I + 21: ireturn + + private static int lambda$simpleUseCommand$23(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc #221 // String locked + 16: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 19: invokestatic #2350 // Method set:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Z)I + 22: ireturn + + private static int lambda$simpleUseCommand$22(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: iconst_0 + 14: invokestatic #2350 // Method set:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Z)I + 17: ireturn + + private static int lambda$simpleNewCommand$21(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: iconst_1 + 14: iconst_1 + 15: iconst_0 + 16: invokestatic #2348 // Method createConfig:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;ZZZ)I + 19: ireturn + + private static int lambda$lootCommand$20(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: iconst_0 + 8: invokestatic #2368 // Method lock:(Lnet/minecraft/commands/CommandSourceStack;Z)I + 11: ireturn + + private static int lambda$lootCommand$19(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: iconst_1 + 8: invokestatic #2368 // Method lock:(Lnet/minecraft/commands/CommandSourceStack;Z)I + 11: ireturn + + private static int lambda$lootCommand$18(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2352 // Method generate:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$17(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2370 // Method clear:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$16(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2372 // Method info:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$15(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc_w #307 // String preset_id + 11: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #2374 // Method preset:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;)I + 17: ireturn + + private static int lambda$lootCommand$14(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2376 // Method presets:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$13(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2378 // Method folder:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$12(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2380 // Method list:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$11(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc_w #307 // String preset_id + 11: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 14: aload_0 + 15: ldc_w #298 // String target_id + 18: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 21: invokestatic #2382 // Method createPresetAs:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;)I + 24: ireturn + + private static int lambda$lootCommand$10(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc_w #296 // String export_id + 11: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 14: aload_0 + 15: ldc_w #298 // String target_id + 18: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 21: invokestatic #2384 // Method importProfile:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Ljava/lang/String;)I + 24: ireturn + + private static int lambda$lootCommand$9(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc_w #266 // String profile_id + 11: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #2386 // Method exportProfile:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;)I + 17: ireturn + + private static int lambda$lootCommand$8(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc_w #280 // String remove_missing_profiles + 11: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 14: invokestatic #2388 // Method cleanupLootMarkers:(Lnet/minecraft/commands/CommandSourceStack;Z)I + 17: ireturn + + private static int lambda$lootCommand$7(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: iconst_0 + 8: invokestatic #2388 // Method cleanupLootMarkers:(Lnet/minecraft/commands/CommandSourceStack;Z)I + 11: ireturn + + private static int lambda$lootCommand$6(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc_w #266 // String profile_id + 11: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 14: invokestatic #2390 // Method profileUsage:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;)I + 17: ireturn + + private static int lambda$lootCommand$5(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2392 // Method undoWand:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$4(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2394 // Method restoreDefaultProfiles:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$3(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2396 // Method reload:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$lootCommand$2(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: invokestatic #2398 // Method help:(Lnet/minecraft/commands/CommandSourceStack;)I + 10: ireturn + + private static int lambda$giveCommand$1(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc #197 // String block_id + 16: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 19: aload_0 + 20: ldc #221 // String locked + 22: invokestatic #2318 // Method com/mojang/brigadier/arguments/BoolArgumentType.getBool:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Z + 25: invokestatic #2346 // Method giveLootBlock:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Z)I + 28: ireturn + + private static int lambda$giveCommand$0(com.mojang.brigadier.context.CommandContext) throws com.mojang.brigadier.exceptions.CommandSyntaxException; + Code: + 0: aload_0 + 1: invokevirtual #2294 // Method com/mojang/brigadier/context/CommandContext.getSource:()Ljava/lang/Object; + 4: checkcast #71 // class net/minecraft/commands/CommandSourceStack + 7: aload_0 + 8: ldc #185 // String config_id + 10: invokestatic #2302 // Method com/mojang/brigadier/arguments/StringArgumentType.getString:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Ljava/lang/String; + 13: aload_0 + 14: ldc #197 // String block_id + 16: invokestatic #2298 // Method net/minecraft/commands/arguments/ResourceLocationArgument.m_107011_:(Lcom/mojang/brigadier/context/CommandContext;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 19: iconst_0 + 20: invokestatic #2346 // Method giveLootBlock:(Lnet/minecraft/commands/CommandSourceStack;Ljava/lang/String;Lnet/minecraft/resources/ResourceLocation;Z)I + 23: ireturn + + static {}; + Code: + 0: new #1912 // class com/mojang/brigadier/exceptions/SimpleCommandExceptionType + 3: dup + 4: ldc_w #2401 // String Look at a container first. + 7: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 10: invokespecial #2404 // Method com/mojang/brigadier/exceptions/SimpleCommandExceptionType."":(Lcom/mojang/brigadier/Message;)V + 13: putstatic #1910 // Field NO_BLOCK_HIT:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; + 16: new #1912 // class com/mojang/brigadier/exceptions/SimpleCommandExceptionType + 19: dup + 20: ldc_w #2406 // String The targeted block is not a loot-capable container. + 23: invokestatic #796 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 26: invokespecial #2404 // Method com/mojang/brigadier/exceptions/SimpleCommandExceptionType."":(Lcom/mojang/brigadier/Message;)V + 29: putstatic #1924 // Field NOT_LOOT_CONTAINER:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType; + 32: return +} diff --git a/_sa_hanhua_out/_tmp/classes/com_ogaba_sa_decor_common_loot_DecorLootConfigManager.txt b/_sa_hanhua_out/_tmp/classes/com_ogaba_sa_decor_common_loot_DecorLootConfigManager.txt new file mode 100644 index 0000000..c342b1b --- /dev/null +++ b/_sa_hanhua_out/_tmp/classes/com_ogaba_sa_decor_common_loot_DecorLootConfigManager.txt @@ -0,0 +1,5620 @@ +Compiled from "DecorLootConfigManager.java" +public final class com.ogaba.sa_decor.common.loot.DecorLootConfigManager { + private static final java.lang.String SURVIVORS_ARSENAL_CONFIG_FOLDER; + + private static final int MAX_CONFIG_FILES; + + private static final java.lang.String DEFAULT_PROFILES_INITIALIZED_MARKER; + + private static final com.google.gson.Gson GSON; + + private static final com.google.gson.Gson COMPACT_GSON; + + private static final java.util.Map CONFIGS; + + private static final java.util.Map CONFIG_PATHS; + + private com.ogaba.sa_decor.common.loot.DecorLootConfigManager(); + Code: + 0: aload_0 + 1: invokespecial #43 // Method java/lang/Object."":()V + 4: return + + public static void reload(); + Code: + 0: getstatic #52 // Field CONFIGS:Ljava/util/Map; + 3: invokeinterface #55, 1 // InterfaceMethod java/util/Map.clear:()V + 8: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 11: invokeinterface #55, 1 // InterfaceMethod java/util/Map.clear:()V + 16: invokestatic #62 // Method com/ogaba/sa_decor/common/loot/DecorLootGenerator.clearCaches:()V + 19: invokestatic #66 // Method getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 22: astore_0 + 23: aload_0 + 24: iconst_0 + 25: anewarray #68 // class java/nio/file/LinkOption + 28: invokestatic #74 // Method java/nio/file/Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 31: istore_1 + 32: aload_0 + 33: iconst_0 + 34: anewarray #76 // class java/nio/file/attribute/FileAttribute + 37: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 40: pop + 41: aload_0 + 42: iload_1 + 43: invokestatic #84 // Method initializeDefaultProfilesOnce:(Ljava/nio/file/Path;Z)V + 46: goto 63 + 49: astore_2 + 50: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 53: ldc #94 // String Could not create Survivors Arsenal loot crate config directory: {} + 55: aload_0 + 56: aload_2 + 57: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 62: return + 63: aload_0 + 64: invokestatic #104 // Method java/nio/file/Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream; + 67: astore_2 + 68: aload_2 + 69: invokedynamic #123, 0 // InvokeDynamic #0:test:()Ljava/util/function/Predicate; + 74: invokeinterface #129, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 79: invokedynamic #134, 0 // InvokeDynamic #1:test:()Ljava/util/function/Predicate; + 84: invokeinterface #129, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 89: invokedynamic #146, 0 // InvokeDynamic #2:apply:()Ljava/util/function/Function; + 94: invokestatic #152 // InterfaceMethod java/util/Comparator.comparing:(Ljava/util/function/Function;)Ljava/util/Comparator; + 97: invokeinterface #156, 2 // InterfaceMethod java/util/stream/Stream.sorted:(Ljava/util/Comparator;)Ljava/util/stream/Stream; + 102: ldc2_w #157 // long 4096l + 105: invokeinterface #162, 3 // InterfaceMethod java/util/stream/Stream.limit:(J)Ljava/util/stream/Stream; + 110: invokedynamic #174, 0 // InvokeDynamic #3:accept:()Ljava/util/function/Consumer; + 115: invokeinterface #178, 2 // InterfaceMethod java/util/stream/Stream.forEach:(Ljava/util/function/Consumer;)V + 120: aload_2 + 121: ifnull 157 + 124: aload_2 + 125: invokeinterface #181, 1 // InterfaceMethod java/util/stream/Stream.close:()V + 130: goto 157 + 133: astore_3 + 134: aload_2 + 135: ifnull 155 + 138: aload_2 + 139: invokeinterface #181, 1 // InterfaceMethod java/util/stream/Stream.close:()V + 144: goto 155 + 147: astore 4 + 149: aload_3 + 150: aload 4 + 152: invokevirtual #185 // Method java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V + 155: aload_3 + 156: athrow + 157: goto 173 + 160: astore_2 + 161: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 164: ldc #187 // String Could not list Survivors Arsenal loot crate configs: {} + 166: aload_0 + 167: aload_2 + 168: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 173: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 176: ldc #189 // String Loaded {} Survivors Arsenal loot crate config(s). + 178: getstatic #52 // Field CONFIGS:Ljava/util/Map; + 181: invokeinterface #193, 1 // InterfaceMethod java/util/Map.size:()I + 186: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 189: invokeinterface #203, 3 // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V + 194: return + Exception table: + from to target type + 32 46 49 Class java/io/IOException + 68 120 133 Class java/lang/Throwable + 138 144 147 Class java/lang/Throwable + 63 157 160 Class java/io/IOException + + public static com.ogaba.sa_decor.common.loot.DecorLootConfig get(java.lang.String); + Code: + 0: getstatic #52 // Field CONFIGS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #219 // class com/ogaba/sa_decor/common/loot/DecorLootConfig + 12: areturn + + public static java.util.Collection values(); + Code: + 0: getstatic #52 // Field CONFIGS:Ljava/util/Map; + 3: invokeinterface #225, 1 // InterfaceMethod java/util/Map.values:()Ljava/util/Collection; + 8: areturn + + public static boolean has(java.lang.String); + Code: + 0: getstatic #52 // Field CONFIGS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #230, 2 // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z + 9: ireturn + + public static long getRevision(java.lang.String); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_1 + 13: aload_1 + 14: ifnull 28 + 17: aload_1 + 18: iconst_0 + 19: anewarray #68 // class java/nio/file/LinkOption + 22: invokestatic #235 // Method java/nio/file/Files.isRegularFile:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 25: ifne 30 + 28: lconst_0 + 29: lreturn + 30: aload_1 + 31: invokestatic #239 // Method java/nio/file/Files.readAllBytes:(Ljava/nio/file/Path;)[B + 34: astore_2 + 35: ldc2_w #240 // long -3750763034362895579l + 38: lstore_3 + 39: aload_2 + 40: astore 5 + 42: aload 5 + 44: arraylength + 45: istore 6 + 47: iconst_0 + 48: istore 7 + 50: iload 7 + 52: iload 6 + 54: if_icmpge 86 + 57: aload 5 + 59: iload 7 + 61: baload + 62: istore 8 + 64: lload_3 + 65: iload 8 + 67: i2l + 68: ldc2_w #246 // long 255l + 71: land + 72: lxor + 73: lstore_3 + 74: lload_3 + 75: ldc2_w #248 // long 1099511628211l + 78: lmul + 79: lstore_3 + 80: iinc 7, 1 + 83: goto 50 + 86: lload_3 + 87: lconst_0 + 88: lcmp + 89: ifne 96 + 92: lconst_1 + 93: goto 97 + 96: lload_3 + 97: lreturn + 98: astore_2 + 99: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 102: ldc #251 // String Could not calculate loot profile revision for \'{}\'. + 104: aload_0 + 105: aload_2 + 106: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 111: lconst_0 + 112: lreturn + Exception table: + from to target type + 30 97 98 Class java/io/IOException + + public static boolean revisionMatches(java.lang.String, long); + Code: + 0: lload_1 + 1: lconst_0 + 2: lcmp + 3: ifeq 19 + 6: lload_1 + 7: aload_0 + 8: invokestatic #261 // Method getRevision:(Ljava/lang/String;)J + 11: lcmp + 12: ifne 19 + 15: iconst_1 + 16: goto 20 + 19: iconst_0 + 20: ireturn + + public static boolean isValidConfigId(java.lang.String); + Code: + 0: aload_0 + 1: ifnull 18 + 4: aload_0 + 5: ldc_w #265 // String [a-z0-9_\\-]+ + 8: invokevirtual #268 // Method java/lang/String.matches:(Ljava/lang/String;)Z + 11: ifeq 18 + 14: iconst_1 + 15: goto 19 + 18: iconst_0 + 19: ireturn + + public static boolean createConfig(java.lang.String, boolean, boolean, boolean); + Code: + 0: aload_0 + 1: invokestatic #272 // Method isValidConfigId:(Ljava/lang/String;)Z + 4: ifne 9 + 7: iconst_0 + 8: ireturn + 9: invokestatic #66 // Method getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 12: astore 4 + 14: aload 4 + 16: aload_0 + 17: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 22: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 27: astore 5 + 29: aload 5 + 31: iconst_0 + 32: anewarray #68 // class java/nio/file/LinkOption + 35: invokestatic #291 // Method java/nio/file/Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 38: ifeq 43 + 41: iconst_0 + 42: ireturn + 43: aload_0 + 44: iload_1 + 45: iload_2 + 46: iload_3 + 47: invokestatic #295 // Method createEmptyConfigJson:(Ljava/lang/String;ZZZ)Lcom/google/gson/JsonObject; + 50: astore 6 + 52: aload 4 + 54: iconst_0 + 55: anewarray #76 // class java/nio/file/attribute/FileAttribute + 58: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 61: pop + 62: aload 5 + 64: aload 6 + 66: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 69: invokestatic #301 // Method reload:()V + 72: iconst_1 + 73: ireturn + 74: astore 7 + 76: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 79: ldc_w #305 // String Could not create loot crate config \'{}\' at {}. + 82: iconst_3 + 83: anewarray #4 // class java/lang/Object + 86: dup + 87: iconst_0 + 88: aload_0 + 89: aastore + 90: dup + 91: iconst_1 + 92: aload 5 + 94: aastore + 95: dup + 96: iconst_2 + 97: aload 7 + 99: aastore + 100: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 105: iconst_0 + 106: ireturn + Exception table: + from to target type + 52 73 74 Class java/io/IOException + + public static java.nio.file.Path getConfigPath(java.lang.String); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_1 + 13: aload_1 + 14: ifnull 19 + 17: aload_1 + 18: areturn + 19: invokestatic #66 // Method getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 22: aload_0 + 23: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 28: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 33: areturn + + public static boolean createPreset(java.lang.String); + Code: + 0: aload_0 + 1: invokestatic #272 // Method isValidConfigId:(Ljava/lang/String;)Z + 4: ifne 9 + 7: iconst_0 + 8: ireturn + 9: aload_0 + 10: invokestatic #320 // Method createPresetJson:(Ljava/lang/String;)Lcom/google/gson/JsonObject; + 13: astore_1 + 14: aload_1 + 15: ifnonnull 20 + 18: iconst_0 + 19: ireturn + 20: aload_0 + 21: aload_1 + 22: invokestatic #324 // Method writeConfigIfMissing:(Ljava/lang/String;Lcom/google/gson/JsonObject;)Z + 25: ireturn + + public static boolean copyConfig(java.lang.String, java.lang.String); + Code: + 0: aload_0 + 1: invokestatic #331 // Method has:(Ljava/lang/String;)Z + 4: ifeq 21 + 7: aload_1 + 8: invokestatic #272 // Method isValidConfigId:(Ljava/lang/String;)Z + 11: ifeq 21 + 14: aload_1 + 15: invokestatic #331 // Method has:(Ljava/lang/String;)Z + 18: ifeq 23 + 21: iconst_0 + 22: ireturn + 23: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 26: aload_0 + 27: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 32: checkcast #86 // class java/nio/file/Path + 35: astore_2 + 36: aload_2 + 37: ifnonnull 42 + 40: iconst_0 + 41: ireturn + 42: invokestatic #66 // Method getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 45: aload_1 + 46: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 51: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 56: astore_3 + 57: aload_3 + 58: iconst_0 + 59: anewarray #68 // class java/nio/file/LinkOption + 62: invokestatic #291 // Method java/nio/file/Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 65: ifeq 70 + 68: iconst_0 + 69: ireturn + 70: aload_2 + 71: invokestatic #335 // Method java/nio/file/Files.newBufferedReader:(Ljava/nio/file/Path;)Ljava/io/BufferedReader; + 74: astore 4 + 76: aload 4 + 78: invokestatic #341 // Method com/google/gson/JsonParser.parseReader:(Ljava/io/Reader;)Lcom/google/gson/JsonElement; + 81: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 84: astore 5 + 86: aload 5 + 88: ldc_w #348 // String id + 91: aload_1 + 92: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 95: aload_3 + 96: invokeinterface #355, 1 // InterfaceMethod java/nio/file/Path.getParent:()Ljava/nio/file/Path; + 101: iconst_0 + 102: anewarray #76 // class java/nio/file/attribute/FileAttribute + 105: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 108: pop + 109: aload_3 + 110: aload 5 + 112: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 115: invokestatic #301 // Method reload:()V + 118: iconst_1 + 119: istore 6 + 121: aload 4 + 123: ifnull 131 + 126: aload 4 + 128: invokevirtual #358 // Method java/io/Reader.close:()V + 131: iload 6 + 133: ireturn + 134: astore 5 + 136: aload 4 + 138: ifnull 158 + 141: aload 4 + 143: invokevirtual #358 // Method java/io/Reader.close:()V + 146: goto 158 + 149: astore 6 + 151: aload 5 + 153: aload 6 + 155: invokevirtual #185 // Method java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V + 158: aload 5 + 160: athrow + 161: astore 4 + 163: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 166: ldc_w #360 // String Could not copy loot config \'{}\' to \'{}\'. + 169: iconst_3 + 170: anewarray #4 // class java/lang/Object + 173: dup + 174: iconst_0 + 175: aload_0 + 176: aastore + 177: dup + 178: iconst_1 + 179: aload_1 + 180: aastore + 181: dup + 182: iconst_2 + 183: aload 4 + 185: aastore + 186: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 191: iconst_0 + 192: ireturn + Exception table: + from to target type + 76 121 134 Class java/lang/Throwable + 141 146 149 Class java/lang/Throwable + 70 131 161 Class java/lang/Exception + 134 161 161 Class java/lang/Exception + + public static boolean setSearchEnabled(java.lang.String, boolean); + Code: + 0: aload_0 + 1: ldc_w #371 // String search + 4: ldc_w #373 // String enabled + 7: iload_1 + 8: invokestatic #377 // Method updateBooleanInObject:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z + 11: ireturn + + public static boolean setLockEnabled(java.lang.String, boolean); + Code: + 0: aload_0 + 1: ldc_w #381 // String lock + 4: ldc_w #373 // String enabled + 7: iload_1 + 8: invokestatic #377 // Method updateBooleanInObject:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z + 11: ireturn + + public static boolean setPerPlayer(java.lang.String, boolean); + Code: + 0: aload_0 + 1: ldc_w #384 // String per_player + 4: iload_1 + 5: invokestatic #388 // Method updateRootBoolean:(Ljava/lang/String;Ljava/lang/String;Z)Z + 8: ireturn + + public static boolean setRespawn(java.lang.String, boolean, int, boolean, boolean); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 5 + 14: aload 5 + 16: ifnonnull 21 + 19: iconst_0 + 20: ireturn + 21: aload 5 + 23: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 26: astore 6 + 28: aload 6 + 30: ldc_w #396 // String respawn + 33: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 36: astore 7 + 38: aload 7 + 40: ldc_w #373 // String enabled + 43: iload_1 + 44: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 47: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 50: aload 7 + 52: ldc_w #410 // String time_ticks + 55: iconst_1 + 56: iload_2 + 57: invokestatic #416 // Method java/lang/Math.max:(II)I + 60: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 63: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 66: aload 7 + 68: ldc_w #421 // String only_if_empty + 71: iload_3 + 72: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 75: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 78: aload 7 + 80: ldc_w #423 // String clear_before_respawn + 83: iconst_1 + 84: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 87: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 90: aload 5 + 92: aload 6 + 94: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 97: invokestatic #301 // Method reload:()V + 100: iconst_1 + 101: ireturn + 102: astore 6 + 104: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 107: ldc_w #425 // String Could not update respawn for loot config \'{}\'. + 110: aload_0 + 111: aload 6 + 113: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 118: iconst_0 + 119: ireturn + Exception table: + from to target type + 21 101 102 Class java/lang/Exception + + public static boolean setEmpty(java.lang.String, boolean, float); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_3 + 13: aload_3 + 14: ifnonnull 19 + 17: iconst_0 + 18: ireturn + 19: aload_3 + 20: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 23: astore 4 + 25: aload 4 + 27: ldc_w #432 // String empty + 30: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 33: astore 5 + 35: aload 5 + 37: ldc_w #373 // String enabled + 40: iload_1 + 41: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 44: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 47: aload 5 + 49: ldc_w #434 // String spawn_chance + 52: fconst_0 + 53: fconst_1 + 54: fload_2 + 55: invokestatic #438 // Method java/lang/Math.min:(FF)F + 58: invokestatic #440 // Method java/lang/Math.max:(FF)F + 61: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 64: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 67: aload_3 + 68: aload 4 + 70: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 73: invokestatic #301 // Method reload:()V + 76: iconst_1 + 77: ireturn + 78: astore 4 + 80: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 83: ldc_w #447 // String Could not update empty spawn config for loot config \'{}\'. + 86: aload_0 + 87: aload 4 + 89: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 94: iconst_0 + 95: ireturn + Exception table: + from to target type + 19 77 78 Class java/lang/Exception + + public static boolean addLootTableToConfig(java.lang.String, java.lang.String); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_2 + 13: aload_2 + 14: ifnull 28 + 17: aload_1 + 18: ifnull 28 + 21: aload_1 + 22: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 25: ifeq 30 + 28: iconst_0 + 29: ireturn + 30: aload_2 + 31: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 34: astore_3 + 35: aload_3 + 36: ldc_w #456 // String loot_tables + 39: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 42: ifeq 70 + 45: aload_3 + 46: ldc_w #456 // String loot_tables + 49: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 52: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 55: ifeq 70 + 58: aload_3 + 59: ldc_w #456 // String loot_tables + 62: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 65: astore 4 + 67: goto 88 + 70: new #469 // class com/google/gson/JsonArray + 73: dup + 74: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 77: astore 4 + 79: aload_3 + 80: ldc_w #456 // String loot_tables + 83: aload 4 + 85: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 88: aload 4 + 90: aload_1 + 91: invokevirtual #477 // Method com/google/gson/JsonArray.add:(Ljava/lang/String;)V + 94: aload_2 + 95: aload_3 + 96: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 99: invokestatic #301 // Method reload:()V + 102: iconst_1 + 103: ireturn + 104: astore_3 + 105: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 108: ldc_w #479 // String Could not add loot table \'{}\' to loot config \'{}\'. + 111: iconst_3 + 112: anewarray #4 // class java/lang/Object + 115: dup + 116: iconst_0 + 117: aload_1 + 118: aastore + 119: dup + 120: iconst_1 + 121: aload_0 + 122: aastore + 123: dup + 124: iconst_2 + 125: aload_3 + 126: aastore + 127: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 132: iconst_0 + 133: ireturn + Exception table: + from to target type + 30 103 104 Class java/lang/Exception + + public static java.nio.file.Path getSurvivorsArsenalConfigDirectory(); + Code: + 0: getstatic #489 // Field net/minecraftforge/fml/loading/FMLPaths.CONFIGDIR:Lnet/minecraftforge/fml/loading/FMLPaths; + 3: invokevirtual #491 // Method net/minecraftforge/fml/loading/FMLPaths.get:()Ljava/nio/file/Path; + 6: ldc #25 // String survivorsarsenal + 8: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 13: areturn + + public static java.nio.file.Path getLootCrateConfigDirectory(); + Code: + 0: invokestatic #493 // Method getSurvivorsArsenalConfigDirectory:()Ljava/nio/file/Path; + 3: ldc_w #495 // String loot_crates + 6: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 11: areturn + + public static java.nio.file.Path getLootCrateExportDirectory(); + Code: + 0: invokestatic #493 // Method getSurvivorsArsenalConfigDirectory:()Ljava/nio/file/Path; + 3: ldc_w #498 // String loot_crates_exports + 6: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 11: areturn + + public static boolean createConfigFromPreset(java.lang.String, java.lang.String); + Code: + 0: aload_0 + 1: invokestatic #272 // Method isValidConfigId:(Ljava/lang/String;)Z + 4: ifeq 25 + 7: aload_1 + 8: ifnull 25 + 11: aload_1 + 12: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 15: ifne 25 + 18: aload_0 + 19: invokestatic #331 // Method has:(Ljava/lang/String;)Z + 22: ifeq 27 + 25: iconst_0 + 26: ireturn + 27: aload_1 + 28: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 31: invokestatic #320 // Method createPresetJson:(Ljava/lang/String;)Lcom/google/gson/JsonObject; + 34: astore_2 + 35: aload_2 + 36: ifnonnull 41 + 39: iconst_0 + 40: ireturn + 41: aload_2 + 42: invokevirtual #506 // Method com/google/gson/JsonObject.toString:()Ljava/lang/String; + 45: invokestatic #509 // Method com/google/gson/JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 48: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 51: astore_3 + 52: aload_3 + 53: ldc_w #348 // String id + 56: aload_0 + 57: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 60: aload_3 + 61: ldc_w #511 // String display_name + 64: aload_0 + 65: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 68: invokestatic #66 // Method getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 71: aload_0 + 72: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 77: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 82: astore 4 + 84: aload 4 + 86: invokeinterface #355, 1 // InterfaceMethod java/nio/file/Path.getParent:()Ljava/nio/file/Path; + 91: iconst_0 + 92: anewarray #76 // class java/nio/file/attribute/FileAttribute + 95: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 98: pop + 99: aload 4 + 101: aload_3 + 102: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 105: invokestatic #301 // Method reload:()V + 108: iconst_1 + 109: ireturn + 110: astore 5 + 112: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 115: ldc_w #513 // String Could not create loot profile \'{}\' from preset \'{}\'. + 118: iconst_3 + 119: anewarray #4 // class java/lang/Object + 122: dup + 123: iconst_0 + 124: aload_0 + 125: aastore + 126: dup + 127: iconst_1 + 128: aload_1 + 129: aastore + 130: dup + 131: iconst_2 + 132: aload 5 + 134: aastore + 135: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 140: iconst_0 + 141: ireturn + Exception table: + from to target type + 84 109 110 Class java/lang/Exception + + public static boolean exportConfig(java.lang.String); + Code: + 0: aload_0 + 1: invokestatic #272 // Method isValidConfigId:(Ljava/lang/String;)Z + 4: ifeq 14 + 7: aload_0 + 8: invokestatic #331 // Method has:(Ljava/lang/String;)Z + 11: ifne 16 + 14: iconst_0 + 15: ireturn + 16: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 19: aload_0 + 20: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 25: checkcast #86 // class java/nio/file/Path + 28: astore_1 + 29: aload_1 + 30: ifnonnull 35 + 33: iconst_0 + 34: ireturn + 35: invokestatic #519 // Method getLootCrateExportDirectory:()Ljava/nio/file/Path; + 38: astore_2 + 39: aload_2 + 40: aload_0 + 41: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 46: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 51: astore_3 + 52: aload_2 + 53: iconst_0 + 54: anewarray #76 // class java/nio/file/attribute/FileAttribute + 57: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 60: pop + 61: aload_1 + 62: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 65: astore 4 + 67: aload_3 + 68: aload 4 + 70: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 73: iconst_1 + 74: ireturn + 75: astore 4 + 77: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 80: ldc_w #521 // String Could not export loot profile \'{}\'. + 83: aload_0 + 84: aload 4 + 86: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 91: iconst_0 + 92: ireturn + Exception table: + from to target type + 52 74 75 Class java/lang/Exception + + public static boolean importConfig(java.lang.String, java.lang.String); + Code: + 0: aload_0 + 1: invokestatic #272 // Method isValidConfigId:(Ljava/lang/String;)Z + 4: ifeq 21 + 7: aload_1 + 8: invokestatic #272 // Method isValidConfigId:(Ljava/lang/String;)Z + 11: ifeq 21 + 14: aload_1 + 15: invokestatic #331 // Method has:(Ljava/lang/String;)Z + 18: ifeq 23 + 21: iconst_0 + 22: ireturn + 23: invokestatic #519 // Method getLootCrateExportDirectory:()Ljava/nio/file/Path; + 26: aload_0 + 27: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 32: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 37: invokeinterface #527, 1 // InterfaceMethod java/nio/file/Path.normalize:()Ljava/nio/file/Path; + 42: astore_2 + 43: invokestatic #519 // Method getLootCrateExportDirectory:()Ljava/nio/file/Path; + 46: invokeinterface #527, 1 // InterfaceMethod java/nio/file/Path.normalize:()Ljava/nio/file/Path; + 51: astore_3 + 52: aload_2 + 53: aload_3 + 54: invokeinterface #530, 2 // InterfaceMethod java/nio/file/Path.startsWith:(Ljava/nio/file/Path;)Z + 59: ifeq 73 + 62: aload_2 + 63: iconst_0 + 64: anewarray #68 // class java/nio/file/LinkOption + 67: invokestatic #235 // Method java/nio/file/Files.isRegularFile:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 70: ifne 75 + 73: iconst_0 + 74: ireturn + 75: aload_2 + 76: invokestatic #533 // Method java/nio/file/Files.size:(Ljava/nio/file/Path;)J + 79: ldc2_w #534 // long 2097152l + 82: lcmp + 83: ifle 88 + 86: iconst_0 + 87: ireturn + 88: aload_2 + 89: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 92: astore 4 + 94: aload 4 + 96: ldc_w #348 // String id + 99: aload_1 + 100: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 103: aload 4 + 105: ldc_w #511 // String display_name + 108: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 111: ifeq 131 + 114: aload 4 + 116: ldc_w #511 // String display_name + 119: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 122: invokevirtual #538 // Method com/google/gson/JsonElement.getAsString:()Ljava/lang/String; + 125: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 128: ifeq 140 + 131: aload 4 + 133: ldc_w #511 // String display_name + 136: aload_1 + 137: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 140: invokestatic #66 // Method getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 143: aload_1 + 144: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 149: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 154: astore 5 + 156: aload 5 + 158: aload 4 + 160: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 163: invokestatic #301 // Method reload:()V + 166: aload_1 + 167: invokestatic #331 // Method has:(Ljava/lang/String;)Z + 170: ireturn + 171: astore 4 + 173: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 176: ldc_w #540 // String Could not import loot profile \'{}\' as \'{}\'. + 179: iconst_3 + 180: anewarray #4 // class java/lang/Object + 183: dup + 184: iconst_0 + 185: aload_0 + 186: aastore + 187: dup + 188: iconst_1 + 189: aload_1 + 190: aastore + 191: dup + 192: iconst_2 + 193: aload 4 + 195: aastore + 196: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 201: iconst_0 + 202: ireturn + Exception table: + from to target type + 75 87 171 Class java/lang/Exception + 88 170 171 Class java/lang/Exception + + public static java.util.List exportedProfileIds(); + Code: + 0: invokestatic #519 // Method getLootCrateExportDirectory:()Ljava/nio/file/Path; + 3: astore_0 + 4: aload_0 + 5: iconst_0 + 6: anewarray #68 // class java/nio/file/LinkOption + 9: invokestatic #74 // Method java/nio/file/Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 12: ifne 19 + 15: invokestatic #550 // InterfaceMethod java/util/List.of:()Ljava/util/List; + 18: areturn + 19: aload_0 + 20: invokestatic #104 // Method java/nio/file/Files.list:(Ljava/nio/file/Path;)Ljava/util/stream/Stream; + 23: astore_1 + 24: aload_1 + 25: invokedynamic #555, 0 // InvokeDynamic #5:test:()Ljava/util/function/Predicate; + 30: invokeinterface #129, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 35: invokedynamic #560, 0 // InvokeDynamic #6:apply:()Ljava/util/function/Function; + 40: invokeinterface #564, 2 // InterfaceMethod java/util/stream/Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream; + 45: invokedynamic #570, 0 // InvokeDynamic #7:test:()Ljava/util/function/Predicate; + 50: invokeinterface #129, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 55: invokedynamic #576, 0 // InvokeDynamic #8:apply:()Ljava/util/function/Function; + 60: invokeinterface #564, 2 // InterfaceMethod java/util/stream/Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream; + 65: invokedynamic #578, 0 // InvokeDynamic #9:test:()Ljava/util/function/Predicate; + 70: invokeinterface #129, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 75: invokeinterface #581, 1 // InterfaceMethod java/util/stream/Stream.sorted:()Ljava/util/stream/Stream; + 80: invokeinterface #584, 1 // InterfaceMethod java/util/stream/Stream.toList:()Ljava/util/List; + 85: astore_2 + 86: aload_1 + 87: ifnull 96 + 90: aload_1 + 91: invokeinterface #181, 1 // InterfaceMethod java/util/stream/Stream.close:()V + 96: aload_2 + 97: areturn + 98: astore_2 + 99: aload_1 + 100: ifnull 118 + 103: aload_1 + 104: invokeinterface #181, 1 // InterfaceMethod java/util/stream/Stream.close:()V + 109: goto 118 + 112: astore_3 + 113: aload_2 + 114: aload_3 + 115: invokevirtual #185 // Method java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V + 118: aload_2 + 119: athrow + 120: astore_1 + 121: invokestatic #550 // InterfaceMethod java/util/List.of:()Ljava/util/List; + 124: areturn + Exception table: + from to target type + 24 86 98 Class java/lang/Throwable + 103 109 112 Class java/lang/Throwable + 19 96 120 Class java/io/IOException + 98 120 120 Class java/io/IOException + + public static java.nio.file.Path getCollectiblesConfigDirectory(); + Code: + 0: invokestatic #493 // Method getSurvivorsArsenalConfigDirectory:()Ljava/nio/file/Path; + 3: ldc_w #587 // String collectibles + 6: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 11: areturn + + public static java.nio.file.Path getForceOpenItemsConfigFile(); + Code: + 0: invokestatic #493 // Method getSurvivorsArsenalConfigDirectory:()Ljava/nio/file/Path; + 3: ldc_w #590 // String force_open_items.json + 6: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 11: areturn + + public static int formatAllConfigs(); + Code: + 0: iconst_0 + 1: istore_0 + 2: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 5: invokeinterface #225, 1 // InterfaceMethod java/util/Map.values:()Ljava/util/Collection; + 10: invokeinterface #597, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 15: astore_1 + 16: aload_1 + 17: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 22: ifeq 68 + 25: aload_1 + 26: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 31: checkcast #86 // class java/nio/file/Path + 34: astore_2 + 35: aload_2 + 36: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 39: astore_3 + 40: aload_2 + 41: aload_3 + 42: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 45: iinc 0, 1 + 48: goto 65 + 51: astore_3 + 52: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 55: ldc_w #608 // String Could not format loot config at {}. + 58: aload_2 + 59: aload_3 + 60: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 65: goto 16 + 68: invokestatic #301 // Method reload:()V + 71: iload_0 + 72: ireturn + Exception table: + from to target type + 35 48 51 Class java/lang/Exception + + public static boolean addEntryToConfig(java.lang.String, java.lang.String, int, int, int, float); + Code: + 0: aload_0 + 1: aload_1 + 2: iload_2 + 3: iload_3 + 4: iload 4 + 6: fload 5 + 8: aconst_null + 9: invokestatic #614 // Method addEntryToConfig:(Ljava/lang/String;Ljava/lang/String;IIIFLjava/lang/String;)Z + 12: ireturn + + public static boolean addEntryToConfig(java.lang.String, java.lang.String, int, int, int, float, java.lang.String); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 7 + 14: aload 7 + 16: ifnonnull 21 + 19: iconst_0 + 20: ireturn + 21: aload 7 + 23: invokestatic #335 // Method java/nio/file/Files.newBufferedReader:(Ljava/nio/file/Path;)Ljava/io/BufferedReader; + 26: astore 9 + 28: aload 9 + 30: invokestatic #341 // Method com/google/gson/JsonParser.parseReader:(Ljava/io/Reader;)Lcom/google/gson/JsonElement; + 33: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 36: astore 8 + 38: aload 9 + 40: ifnull 78 + 43: aload 9 + 45: invokevirtual #358 // Method java/io/Reader.close:()V + 48: goto 78 + 51: astore 10 + 53: aload 9 + 55: ifnull 75 + 58: aload 9 + 60: invokevirtual #358 // Method java/io/Reader.close:()V + 63: goto 75 + 66: astore 11 + 68: aload 10 + 70: aload 11 + 72: invokevirtual #185 // Method java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V + 75: aload 10 + 77: athrow + 78: aload 8 + 80: ldc_w #621 // String entries + 83: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 86: ifeq 116 + 89: aload 8 + 91: ldc_w #621 // String entries + 94: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 97: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 100: ifeq 116 + 103: aload 8 + 105: ldc_w #621 // String entries + 108: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 111: astore 9 + 113: goto 135 + 116: new #469 // class com/google/gson/JsonArray + 119: dup + 120: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 123: astore 9 + 125: aload 8 + 127: ldc_w #621 // String entries + 130: aload 9 + 132: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 135: new #303 // class com/google/gson/JsonObject + 138: dup + 139: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 142: astore 10 + 144: aload_1 + 145: ifnonnull 154 + 148: ldc_w #624 // String + 151: goto 158 + 154: aload_1 + 155: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 158: astore 11 + 160: aload 11 + 162: ldc_w #626 // String # + 165: invokevirtual #628 // Method java/lang/String.startsWith:(Ljava/lang/String;)Z + 168: ifeq 188 + 171: aload 10 + 173: ldc_w #630 // String tag + 176: aload 11 + 178: iconst_1 + 179: invokevirtual #634 // Method java/lang/String.substring:(I)Ljava/lang/String; + 182: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 185: goto 198 + 188: aload 10 + 190: ldc_w #636 // String item + 193: aload 11 + 195: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 198: aload 10 + 200: ldc_w #637 // String weight + 203: iconst_1 + 204: iload_2 + 205: invokestatic #416 // Method java/lang/Math.max:(II)I + 208: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 211: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 214: aload 10 + 216: ldc_w #638 // String chance + 219: fconst_0 + 220: fload 5 + 222: invokestatic #440 // Method java/lang/Math.max:(FF)F + 225: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 228: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 231: aload 6 + 233: ifnull 257 + 236: aload 6 + 238: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 241: ifne 257 + 244: aload 10 + 246: ldc_w #640 // String nbt + 249: aload 6 + 251: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 254: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 257: new #303 // class com/google/gson/JsonObject + 260: dup + 261: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 264: astore 12 + 266: aload 12 + 268: ldc_w #641 // String min + 271: iconst_1 + 272: iload_3 + 273: iload 4 + 275: invokestatic #643 // Method java/lang/Math.min:(II)I + 278: invokestatic #416 // Method java/lang/Math.max:(II)I + 281: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 284: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 287: aload 12 + 289: ldc_w #644 // String max + 292: iconst_1 + 293: iload_3 + 294: iload 4 + 296: invokestatic #416 // Method java/lang/Math.max:(II)I + 299: invokestatic #416 // Method java/lang/Math.max:(II)I + 302: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 305: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 308: aload 10 + 310: ldc_w #646 // String count + 313: aload 12 + 315: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 318: aload 9 + 320: aload 10 + 322: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 325: aload 7 + 327: aload 8 + 329: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 332: invokestatic #301 // Method reload:()V + 335: iconst_1 + 336: ireturn + 337: astore 8 + 339: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 342: ldc_w #651 // String Could not add entry to loot config \'{}\' at {}. + 345: iconst_3 + 346: anewarray #4 // class java/lang/Object + 349: dup + 350: iconst_0 + 351: aload_0 + 352: aastore + 353: dup + 354: iconst_1 + 355: aload 7 + 357: aastore + 358: dup + 359: iconst_2 + 360: aload 8 + 362: aastore + 363: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 368: iconst_0 + 369: ireturn + Exception table: + from to target type + 28 38 51 Class java/lang/Throwable + 58 63 66 Class java/lang/Throwable + 21 336 337 Class java/lang/Exception + + public static boolean addMatchEntryToConfig(java.lang.String, java.lang.String, java.lang.String, int, int, int, float, java.lang.String); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 8 + 14: aload 8 + 16: ifnull 30 + 19: aload_2 + 20: ifnull 30 + 23: aload_2 + 24: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 27: ifeq 32 + 30: iconst_0 + 31: ireturn + 32: aload 8 + 34: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 37: astore 9 + 39: aload 9 + 41: aload_1 + 42: iconst_1 + 43: invokestatic #659 // Method getEntryArray:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Lcom/google/gson/JsonArray; + 46: astore 10 + 48: aload 10 + 50: ifnonnull 55 + 53: iconst_0 + 54: ireturn + 55: new #303 // class com/google/gson/JsonObject + 58: dup + 59: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 62: astore 11 + 64: aload_2 + 65: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 68: astore 12 + 70: aload 12 + 72: ldc_w #626 // String # + 75: invokevirtual #628 // Method java/lang/String.startsWith:(Ljava/lang/String;)Z + 78: ifeq 90 + 81: aload 12 + 83: iconst_1 + 84: invokevirtual #634 // Method java/lang/String.substring:(I)Ljava/lang/String; + 87: goto 92 + 90: aload 12 + 92: astore 13 + 94: aload 13 + 96: invokestatic #665 // Method net/minecraft/resources/ResourceLocation.m_135820_:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 99: astore 14 + 101: aload 14 + 103: ifnull 130 + 106: aload 12 + 108: ldc_w #626 // String # + 111: invokevirtual #628 // Method java/lang/String.startsWith:(Ljava/lang/String;)Z + 114: ifne 132 + 117: getstatic #671 // Field net/minecraft/core/registries/BuiltInRegistries.f_257033_:Lnet/minecraft/core/DefaultedRegistry; + 120: aload 14 + 122: invokeinterface #677, 2 // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_7804_:(Lnet/minecraft/resources/ResourceLocation;)Z + 127: ifne 132 + 130: iconst_0 + 131: ireturn + 132: aload 7 + 134: ifnull 161 + 137: aload 7 + 139: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 142: ifne 161 + 145: aload 7 + 147: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 150: invokestatic #683 // Method net/minecraft/nbt/TagParser.m_129359_:(Ljava/lang/String;)Lnet/minecraft/nbt/CompoundTag; + 153: pop + 154: goto 161 + 157: astore 15 + 159: iconst_0 + 160: ireturn + 161: aload 12 + 163: ldc_w #626 // String # + 166: invokevirtual #628 // Method java/lang/String.startsWith:(Ljava/lang/String;)Z + 169: ifeq 185 + 172: aload 11 + 174: ldc_w #630 // String tag + 177: aload 13 + 179: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 182: goto 195 + 185: aload 11 + 187: ldc_w #636 // String item + 190: aload 13 + 192: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 195: aload 11 + 197: ldc_w #637 // String weight + 200: iconst_1 + 201: ldc_w #684 // int 1000000 + 204: iload_3 + 205: invokestatic #643 // Method java/lang/Math.min:(II)I + 208: invokestatic #416 // Method java/lang/Math.max:(II)I + 211: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 214: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 217: aload 11 + 219: ldc_w #638 // String chance + 222: ldc_w #685 // float 1.0E-4f + 225: fconst_1 + 226: fload 6 + 228: invokestatic #438 // Method java/lang/Math.min:(FF)F + 231: invokestatic #440 // Method java/lang/Math.max:(FF)F + 234: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 237: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 240: new #303 // class com/google/gson/JsonObject + 243: dup + 244: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 247: astore 15 + 249: aload 15 + 251: ldc_w #641 // String min + 254: iconst_1 + 255: bipush 64 + 257: iload 4 + 259: iload 5 + 261: invokestatic #643 // Method java/lang/Math.min:(II)I + 264: invokestatic #643 // Method java/lang/Math.min:(II)I + 267: invokestatic #416 // Method java/lang/Math.max:(II)I + 270: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 273: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 276: aload 15 + 278: ldc_w #644 // String max + 281: iconst_1 + 282: bipush 64 + 284: iload 4 + 286: iload 5 + 288: invokestatic #416 // Method java/lang/Math.max:(II)I + 291: invokestatic #643 // Method java/lang/Math.min:(II)I + 294: invokestatic #416 // Method java/lang/Math.max:(II)I + 297: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 300: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 303: aload 11 + 305: ldc_w #646 // String count + 308: aload 15 + 310: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 313: aload 7 + 315: ifnull 339 + 318: aload 7 + 320: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 323: ifne 339 + 326: aload 11 + 328: ldc_w #640 // String nbt + 331: aload 7 + 333: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 336: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 339: aload 10 + 341: aload 11 + 343: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 346: aload 8 + 348: aload 9 + 350: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 353: invokestatic #301 // Method reload:()V + 356: iconst_1 + 357: ireturn + 358: astore 9 + 360: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 363: ldc_w #687 // String Could not add match entry \'{}\' to loot profile \'{}\'. + 366: iconst_3 + 367: anewarray #4 // class java/lang/Object + 370: dup + 371: iconst_0 + 372: aload_2 + 373: aastore + 374: dup + 375: iconst_1 + 376: aload_0 + 377: aastore + 378: dup + 379: iconst_2 + 380: aload 9 + 382: aastore + 383: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 388: iconst_0 + 389: ireturn + Exception table: + from to target type + 145 154 157 Class java/lang/Exception + 32 54 358 Class java/lang/Exception + 55 131 358 Class java/lang/Exception + 132 160 358 Class java/lang/Exception + 161 357 358 Class java/lang/Exception + + public static boolean addInventoryEntryToConfig(java.lang.String, net.minecraft.world.item.ItemStack, int, int, int, float, boolean, java.util.List); + Code: + 0: aload_0 + 1: ldc_w #624 // String + 4: aload_1 + 5: iload_2 + 6: iload_3 + 7: iload 4 + 9: fload 5 + 11: iload 6 + 13: aload 7 + 15: invokestatic #699 // Method addInventoryEntryToConfig:(Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/world/item/ItemStack;IIIFZLjava/util/List;)Z + 18: ireturn + + public static boolean addInventoryEntryToConfig(java.lang.String, java.lang.String, net.minecraft.world.item.ItemStack, int, int, int, float, boolean, java.util.List); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 9 + 14: aload 9 + 16: ifnull 30 + 19: aload_2 + 20: ifnull 30 + 23: aload_2 + 24: invokevirtual #711 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 27: ifeq 32 + 30: iconst_0 + 31: ireturn + 32: aload 9 + 34: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 37: astore 10 + 39: aload 10 + 41: aload_1 + 42: iconst_1 + 43: invokestatic #659 // Method getEntryArray:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Lcom/google/gson/JsonArray; + 46: astore 11 + 48: aload 11 + 50: ifnonnull 55 + 53: iconst_0 + 54: ireturn + 55: aload_2 + 56: iconst_1 + 57: iload_3 + 58: invokestatic #416 // Method java/lang/Math.max:(II)I + 61: ldc_w #685 // float 1.0E-4f + 64: fconst_1 + 65: fload 6 + 67: invokestatic #438 // Method java/lang/Math.min:(FF)F + 70: invokestatic #440 // Method java/lang/Math.max:(FF)F + 73: iconst_1 + 74: iload 4 + 76: iload 5 + 78: invokestatic #643 // Method java/lang/Math.min:(II)I + 81: invokestatic #416 // Method java/lang/Math.max:(II)I + 84: iconst_1 + 85: iload 4 + 87: iload 5 + 89: invokestatic #416 // Method java/lang/Math.max:(II)I + 92: invokestatic #416 // Method java/lang/Math.max:(II)I + 95: iload 7 + 97: invokestatic #715 // Method createInventoryEntryJson:(Lnet/minecraft/world/item/ItemStack;IFIIZ)Lcom/google/gson/JsonObject; + 100: astore 12 + 102: aload 8 + 104: ifnull 228 + 107: aload 8 + 109: invokeinterface #718, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 114: ifne 228 + 117: new #469 // class com/google/gson/JsonArray + 120: dup + 121: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 124: astore 13 + 126: aload 8 + 128: invokeinterface #719, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 133: astore 14 + 135: aload 14 + 137: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 142: ifeq 210 + 145: aload 14 + 147: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 152: checkcast #9 // class com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedInventoryStack + 155: astore 15 + 157: aload 15 + 159: ifnull 135 + 162: aload 15 + 164: invokevirtual #723 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedInventoryStack.stack:()Lnet/minecraft/world/item/ItemStack; + 167: invokevirtual #711 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 170: ifeq 176 + 173: goto 135 + 176: aload 13 + 178: aload 15 + 180: invokevirtual #723 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedInventoryStack.stack:()Lnet/minecraft/world/item/ItemStack; + 183: iconst_1 + 184: aload 15 + 186: invokevirtual #726 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedInventoryStack.chance:()F + 189: aload 15 + 191: invokevirtual #728 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedInventoryStack.minCount:()I + 194: aload 15 + 196: invokevirtual #730 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedInventoryStack.maxCount:()I + 199: iload 7 + 201: invokestatic #715 // Method createInventoryEntryJson:(Lnet/minecraft/world/item/ItemStack;IFIIZ)Lcom/google/gson/JsonObject; + 204: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 207: goto 135 + 210: aload 13 + 212: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 215: ifle 228 + 218: aload 12 + 220: ldc_w #733 // String with + 223: aload 13 + 225: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 228: aload 11 + 230: aload 12 + 232: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 235: aload 9 + 237: aload 10 + 239: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 242: invokestatic #301 // Method reload:()V + 245: iconst_1 + 246: ireturn + 247: astore 10 + 249: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 252: ldc_w #735 // String Could not add inventory entry to loot config \'{}\'. + 255: aload_0 + 256: aload 10 + 258: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 263: iconst_0 + 264: ireturn + Exception table: + from to target type + 32 54 247 Class java/lang/Exception + 55 246 247 Class java/lang/Exception + + public static boolean updateProfileSettings(java.lang.String, java.lang.String, java.lang.String, int, int, boolean, boolean, boolean, boolean, boolean, float, boolean, float, boolean, boolean, int, boolean, boolean, boolean, java.lang.String, int, boolean); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 22 + 14: aload 22 + 16: ifnonnull 21 + 19: iconst_0 + 20: ireturn + 21: iload 18 + 23: ifeq 67 + 26: aload 19 + 28: ifnonnull 37 + 31: ldc_w #624 // String + 34: goto 42 + 37: aload 19 + 39: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 42: invokestatic #665 // Method net/minecraft/resources/ResourceLocation.m_135820_:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 45: astore 23 + 47: aload 23 + 49: ifnull 65 + 52: getstatic #671 // Field net/minecraft/core/registries/BuiltInRegistries.f_257033_:Lnet/minecraft/core/DefaultedRegistry; + 55: aload 23 + 57: invokeinterface #677, 2 // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_7804_:(Lnet/minecraft/resources/ResourceLocation;)Z + 62: ifne 67 + 65: iconst_0 + 66: ireturn + 67: aload 22 + 69: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 72: astore 23 + 74: aload 23 + 76: ldc_w #511 // String display_name + 79: aload_1 + 80: ifnull 90 + 83: aload_1 + 84: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 87: ifeq 94 + 90: aload_0 + 91: goto 98 + 94: aload_1 + 95: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 98: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 101: aload 23 + 103: ldc_w #742 // String description + 106: aload_2 + 107: ifnonnull 116 + 110: ldc_w #624 // String + 113: goto 120 + 116: aload_2 + 117: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 120: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 123: aload 23 + 125: ldc_w #744 // String rolls + 128: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 131: astore 24 + 133: aload 24 + 135: ldc_w #641 // String min + 138: iconst_0 + 139: bipush 64 + 141: iload_3 + 142: iload 4 + 144: invokestatic #643 // Method java/lang/Math.min:(II)I + 147: invokestatic #643 // Method java/lang/Math.min:(II)I + 150: invokestatic #416 // Method java/lang/Math.max:(II)I + 153: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 156: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 159: aload 24 + 161: ldc_w #644 // String max + 164: iconst_0 + 165: bipush 64 + 167: iload_3 + 168: iload 4 + 170: invokestatic #416 // Method java/lang/Math.max:(II)I + 173: invokestatic #643 // Method java/lang/Math.min:(II)I + 176: invokestatic #416 // Method java/lang/Math.max:(II)I + 179: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 182: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 185: aload 23 + 187: ldc_w #384 // String per_player + 190: iload 5 + 192: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 195: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 198: aload 23 + 200: ldc_w #746 // String allow_duplicates + 203: iload 6 + 205: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 208: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 211: aload 23 + 213: ldc_w #748 // String clear_before_generate + 216: iload 7 + 218: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 221: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 224: aload 23 + 226: ldc_w #371 // String search + 229: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 232: astore 25 + 234: aload 25 + 236: ldc_w #373 // String enabled + 239: iload 8 + 241: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 244: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 247: aload 23 + 249: ldc_w #432 // String empty + 252: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 255: astore 26 + 257: aload 26 + 259: ldc_w #373 // String enabled + 262: iload 9 + 264: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 267: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 270: aload 26 + 272: ldc_w #434 // String spawn_chance + 275: fconst_0 + 276: fconst_1 + 277: fload 10 + 279: invokestatic #438 // Method java/lang/Math.min:(FF)F + 282: invokestatic #440 // Method java/lang/Math.max:(FF)F + 285: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 288: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 291: aload 23 + 293: ldc_w #381 // String lock + 296: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 299: astore 27 + 301: aload 27 + 303: ldc_w #373 // String enabled + 306: iload 11 + 308: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 311: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 314: aload 27 + 316: ldc_w #434 // String spawn_chance + 319: fconst_0 + 320: fconst_1 + 321: fload 12 + 323: invokestatic #438 // Method java/lang/Math.min:(FF)F + 326: invokestatic #440 // Method java/lang/Math.max:(FF)F + 329: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 332: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 335: aload 27 + 337: ldc_w #750 // String lockpick + 340: iload 13 + 342: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 345: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 348: aload 23 + 350: ldc_w #396 // String respawn + 353: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 356: astore 28 + 358: aload 28 + 360: ldc_w #373 // String enabled + 363: iload 14 + 365: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 368: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 371: aload 28 + 373: ldc_w #410 // String time_ticks + 376: iconst_1 + 377: iload 15 + 379: invokestatic #416 // Method java/lang/Math.max:(II)I + 382: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 385: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 388: aload 28 + 390: ldc_w #421 // String only_if_empty + 393: iload 16 + 395: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 398: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 401: aload 28 + 403: ldc_w #423 // String clear_before_respawn + 406: iconst_1 + 407: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 410: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 413: aload 23 + 415: ldc_w #752 // String open_pass + 418: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 421: astore 29 + 423: aload 29 + 425: ldc_w #373 // String enabled + 428: iload 18 + 430: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 433: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 436: aload 29 + 438: ldc_w #754 // String amount + 441: iconst_1 + 442: bipush 64 + 444: iload 20 + 446: invokestatic #643 // Method java/lang/Math.min:(II)I + 449: invokestatic #416 // Method java/lang/Math.max:(II)I + 452: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 455: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 458: aload 29 + 460: ldc_w #756 // String consume + 463: iload 21 + 465: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 468: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 471: aload 29 + 473: ldc_w #758 // String bypass_lock + 476: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 479: ifne 494 + 482: aload 29 + 484: ldc_w #758 // String bypass_lock + 487: iconst_1 + 488: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 491: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 494: aload 29 + 496: ldc_w #760 // String bypass_search + 499: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 502: ifne 517 + 505: aload 29 + 507: ldc_w #760 // String bypass_search + 510: iconst_1 + 511: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 514: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 517: new #469 // class com/google/gson/JsonArray + 520: dup + 521: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 524: astore 30 + 526: aload 19 + 528: ifnull 549 + 531: aload 19 + 533: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 536: ifne 549 + 539: aload 30 + 541: aload 19 + 543: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 546: invokevirtual #477 // Method com/google/gson/JsonArray.add:(Ljava/lang/String;)V + 549: aload 29 + 551: ldc_w #762 // String items + 554: aload 30 + 556: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 559: aload 29 + 561: ldc_w #764 // String tags + 564: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 567: ifeq 584 + 570: aload 29 + 572: ldc_w #764 // String tags + 575: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 578: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 581: ifne 599 + 584: aload 29 + 586: ldc_w #764 // String tags + 589: new #469 // class com/google/gson/JsonArray + 592: dup + 593: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 596: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 599: aload 22 + 601: aload 23 + 603: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 606: invokestatic #301 // Method reload:()V + 609: iconst_1 + 610: ireturn + 611: astore 23 + 613: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 616: ldc_w #766 // String Could not update loot profile \'{}\'. + 619: aload_0 + 620: aload 23 + 622: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 627: iconst_0 + 628: ireturn + Exception table: + from to target type + 67 610 611 Class java/lang/Exception + + public static boolean createPool(java.lang.String, java.lang.String, int, int, boolean); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 5 + 14: aload 5 + 16: ifnull 26 + 19: aload_1 + 20: invokestatic #272 // Method isValidConfigId:(Ljava/lang/String;)Z + 23: ifne 28 + 26: iconst_0 + 27: ireturn + 28: aload 5 + 30: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 33: astore 6 + 35: aload 6 + 37: ldc_w #788 // String pools + 40: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 43: ifeq 71 + 46: aload 6 + 48: ldc_w #788 // String pools + 51: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 54: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 57: ifeq 71 + 60: aload 6 + 62: ldc_w #788 // String pools + 65: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 68: goto 78 + 71: new #469 // class com/google/gson/JsonArray + 74: dup + 75: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 78: astore 7 + 80: aload 6 + 82: ldc_w #788 // String pools + 85: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 88: ifeq 105 + 91: aload 6 + 93: ldc_w #788 // String pools + 96: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 99: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 102: ifne 115 + 105: aload 6 + 107: ldc_w #788 // String pools + 110: aload 7 + 112: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 115: aload 7 + 117: invokevirtual #789 // Method com/google/gson/JsonArray.iterator:()Ljava/util/Iterator; + 120: astore 8 + 122: aload 8 + 124: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 129: ifeq 178 + 132: aload 8 + 134: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 139: checkcast #343 // class com/google/gson/JsonElement + 142: astore 9 + 144: aload 9 + 146: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 149: ifeq 175 + 152: aload_1 + 153: aload 9 + 155: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 158: ldc_w #348 // String id + 161: ldc_w #624 // String + 164: invokestatic #796 // Method getString:(Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 167: invokevirtual #799 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 170: ifeq 175 + 173: iconst_0 + 174: ireturn + 175: goto 122 + 178: new #303 // class com/google/gson/JsonObject + 181: dup + 182: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 185: astore 8 + 187: aload 8 + 189: ldc_w #348 // String id + 192: aload_1 + 193: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 196: new #303 // class com/google/gson/JsonObject + 199: dup + 200: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 203: astore 9 + 205: aload 9 + 207: ldc_w #641 // String min + 210: iconst_0 + 211: bipush 64 + 213: iload_2 + 214: iload_3 + 215: invokestatic #643 // Method java/lang/Math.min:(II)I + 218: invokestatic #643 // Method java/lang/Math.min:(II)I + 221: invokestatic #416 // Method java/lang/Math.max:(II)I + 224: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 227: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 230: aload 9 + 232: ldc_w #644 // String max + 235: iconst_0 + 236: bipush 64 + 238: iload_2 + 239: iload_3 + 240: invokestatic #416 // Method java/lang/Math.max:(II)I + 243: invokestatic #643 // Method java/lang/Math.min:(II)I + 246: invokestatic #416 // Method java/lang/Math.max:(II)I + 249: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 252: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 255: aload 8 + 257: ldc_w #744 // String rolls + 260: aload 9 + 262: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 265: aload 8 + 267: ldc_w #746 // String allow_duplicates + 270: iload 4 + 272: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 275: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 278: aload 8 + 280: ldc_w #621 // String entries + 283: new #469 // class com/google/gson/JsonArray + 286: dup + 287: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 290: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 293: aload 8 + 295: ldc_w #456 // String loot_tables + 298: new #469 // class com/google/gson/JsonArray + 301: dup + 302: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 305: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 308: aload 7 + 310: aload 8 + 312: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 315: aload 5 + 317: aload 6 + 319: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 322: invokestatic #301 // Method reload:()V + 325: iconst_1 + 326: ireturn + 327: astore 6 + 329: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 332: ldc_w #801 // String Could not create pool \'{}\' in loot profile \'{}\'. + 335: iconst_3 + 336: anewarray #4 // class java/lang/Object + 339: dup + 340: iconst_0 + 341: aload_1 + 342: aastore + 343: dup + 344: iconst_1 + 345: aload_0 + 346: aastore + 347: dup + 348: iconst_2 + 349: aload 6 + 351: aastore + 352: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 357: iconst_0 + 358: ireturn + Exception table: + from to target type + 28 174 327 Class java/lang/Exception + 175 326 327 Class java/lang/Exception + + public static java.lang.String duplicatePool(java.lang.String, java.lang.String); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_2 + 13: aload_2 + 14: ifnull 28 + 17: aload_1 + 18: ifnull 28 + 21: aload_1 + 22: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 25: ifeq 30 + 28: aconst_null + 29: areturn + 30: aload_2 + 31: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 34: astore_3 + 35: aload_3 + 36: aload_1 + 37: invokestatic #809 // Method findPoolObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 40: astore 4 + 42: aload 4 + 44: ifnonnull 49 + 47: aconst_null + 48: areturn + 49: aload_3 + 50: ldc_w #788 // String pools + 53: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 56: ifeq 82 + 59: aload_3 + 60: ldc_w #788 // String pools + 63: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 66: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 69: ifeq 82 + 72: aload_3 + 73: ldc_w #788 // String pools + 76: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 79: goto 89 + 82: new #469 // class com/google/gson/JsonArray + 85: dup + 86: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 89: astore 5 + 91: aload_3 + 92: ldc_w #788 // String pools + 95: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 98: ifeq 114 + 101: aload_3 + 102: ldc_w #788 // String pools + 105: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 108: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 111: ifne 123 + 114: aload_3 + 115: ldc_w #788 // String pools + 118: aload 5 + 120: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 123: aload_1 + 124: invokedynamic #812, 0 // InvokeDynamic #10:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 129: astore 6 + 131: aload 6 + 133: astore 7 + 135: iconst_2 + 136: istore 8 + 138: aload_3 + 139: aload 7 + 141: invokestatic #809 // Method findPoolObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 144: ifnull 164 + 147: aload 6 + 149: iload 8 + 151: iinc 8, 1 + 154: invokedynamic #817, 0 // InvokeDynamic #11:makeConcatWithConstants:(Ljava/lang/String;I)Ljava/lang/String; + 159: astore 7 + 161: goto 138 + 164: aload 4 + 166: invokevirtual #506 // Method com/google/gson/JsonObject.toString:()Ljava/lang/String; + 169: invokestatic #509 // Method com/google/gson/JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 172: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 175: astore 9 + 177: aload 9 + 179: ldc_w #348 // String id + 182: aload 7 + 184: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 187: aload 5 + 189: aload 9 + 191: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 194: aload_2 + 195: aload_3 + 196: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 199: invokestatic #301 // Method reload:()V + 202: aload 7 + 204: areturn + 205: astore_3 + 206: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 209: ldc_w #819 // String Could not duplicate pool \'{}\' in loot profile \'{}\'. + 212: iconst_3 + 213: anewarray #4 // class java/lang/Object + 216: dup + 217: iconst_0 + 218: aload_1 + 219: aastore + 220: dup + 221: iconst_1 + 222: aload_0 + 223: aastore + 224: dup + 225: iconst_2 + 226: aload_3 + 227: aastore + 228: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 233: aconst_null + 234: areturn + Exception table: + from to target type + 30 48 205 Class java/lang/Exception + 49 204 205 Class java/lang/Exception + + public static boolean updatePool(java.lang.String, java.lang.String, int, int, boolean); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 5 + 14: aload 5 + 16: ifnull 30 + 19: aload_1 + 20: ifnull 30 + 23: aload_1 + 24: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 27: ifeq 32 + 30: iconst_0 + 31: ireturn + 32: aload 5 + 34: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 37: astore 6 + 39: aload 6 + 41: aload_1 + 42: invokestatic #809 // Method findPoolObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 45: astore 7 + 47: aload 7 + 49: ifnonnull 54 + 52: iconst_0 + 53: ireturn + 54: aload 7 + 56: ldc_w #744 // String rolls + 59: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 62: astore 8 + 64: aload 8 + 66: ldc_w #641 // String min + 69: iconst_0 + 70: bipush 64 + 72: iload_2 + 73: iload_3 + 74: invokestatic #643 // Method java/lang/Math.min:(II)I + 77: invokestatic #643 // Method java/lang/Math.min:(II)I + 80: invokestatic #416 // Method java/lang/Math.max:(II)I + 83: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 86: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 89: aload 8 + 91: ldc_w #644 // String max + 94: iconst_0 + 95: bipush 64 + 97: iload_2 + 98: iload_3 + 99: invokestatic #416 // Method java/lang/Math.max:(II)I + 102: invokestatic #643 // Method java/lang/Math.min:(II)I + 105: invokestatic #416 // Method java/lang/Math.max:(II)I + 108: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 111: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 114: aload 7 + 116: ldc_w #746 // String allow_duplicates + 119: iload 4 + 121: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 124: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 127: aload 5 + 129: aload 6 + 131: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 134: invokestatic #301 // Method reload:()V + 137: iconst_1 + 138: ireturn + 139: astore 6 + 141: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 144: ldc_w #825 // String Could not update pool \'{}\' in loot profile \'{}\'. + 147: iconst_3 + 148: anewarray #4 // class java/lang/Object + 151: dup + 152: iconst_0 + 153: aload_1 + 154: aastore + 155: dup + 156: iconst_1 + 157: aload_0 + 158: aastore + 159: dup + 160: iconst_2 + 161: aload 6 + 163: aastore + 164: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 169: iconst_0 + 170: ireturn + Exception table: + from to target type + 32 53 139 Class java/lang/Exception + 54 138 139 Class java/lang/Exception + + public static boolean deletePool(java.lang.String, java.lang.String); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_2 + 13: aload_2 + 14: ifnull 28 + 17: aload_1 + 18: ifnull 28 + 21: aload_1 + 22: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 25: ifeq 30 + 28: iconst_0 + 29: ireturn + 30: aload_2 + 31: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 34: astore_3 + 35: aload_3 + 36: ldc_w #788 // String pools + 39: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 42: ifeq 58 + 45: aload_3 + 46: ldc_w #788 // String pools + 49: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 52: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 55: ifne 60 + 58: iconst_0 + 59: ireturn + 60: aload_3 + 61: ldc_w #788 // String pools + 64: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 67: astore 4 + 69: iconst_0 + 70: istore 5 + 72: iload 5 + 74: aload 4 + 76: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 79: if_icmpge 144 + 82: aload 4 + 84: iload 5 + 86: invokevirtual #829 // Method com/google/gson/JsonArray.get:(I)Lcom/google/gson/JsonElement; + 89: astore 6 + 91: aload 6 + 93: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 96: ifeq 138 + 99: aload_1 + 100: aload 6 + 102: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 105: ldc_w #348 // String id + 108: ldc_w #624 // String + 111: invokestatic #796 // Method getString:(Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 114: invokevirtual #799 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 117: ifeq 138 + 120: aload 4 + 122: iload 5 + 124: invokevirtual #832 // Method com/google/gson/JsonArray.remove:(I)Lcom/google/gson/JsonElement; + 127: pop + 128: aload_2 + 129: aload_3 + 130: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 133: invokestatic #301 // Method reload:()V + 136: iconst_1 + 137: ireturn + 138: iinc 5, 1 + 141: goto 72 + 144: iconst_0 + 145: ireturn + 146: astore_3 + 147: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 150: ldc_w #834 // String Could not delete pool \'{}\' from loot profile \'{}\'. + 153: iconst_3 + 154: anewarray #4 // class java/lang/Object + 157: dup + 158: iconst_0 + 159: aload_1 + 160: aastore + 161: dup + 162: iconst_1 + 163: aload_0 + 164: aastore + 165: dup + 166: iconst_2 + 167: aload_3 + 168: aastore + 169: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 174: iconst_0 + 175: ireturn + Exception table: + from to target type + 30 59 146 Class java/lang/Exception + 60 137 146 Class java/lang/Exception + 138 145 146 Class java/lang/Exception + + public static boolean deleteEntry(java.lang.String, java.lang.String, int); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_3 + 13: aload_3 + 14: ifnull 21 + 17: iload_2 + 18: ifge 23 + 21: iconst_0 + 22: ireturn + 23: aload_3 + 24: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 27: astore 4 + 29: aload 4 + 31: aload_1 + 32: iconst_0 + 33: invokestatic #659 // Method getEntryArray:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Lcom/google/gson/JsonArray; + 36: astore 5 + 38: aload 5 + 40: ifnull 52 + 43: iload_2 + 44: aload 5 + 46: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 49: if_icmplt 54 + 52: iconst_0 + 53: ireturn + 54: aload 5 + 56: iload_2 + 57: invokevirtual #832 // Method com/google/gson/JsonArray.remove:(I)Lcom/google/gson/JsonElement; + 60: pop + 61: aload_3 + 62: aload 4 + 64: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 67: invokestatic #301 // Method reload:()V + 70: iconst_1 + 71: ireturn + 72: astore 4 + 74: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 77: ldc_w #839 // String Could not delete entry {} from loot profile \'{}\'. + 80: iconst_3 + 81: anewarray #4 // class java/lang/Object + 84: dup + 85: iconst_0 + 86: iload_2 + 87: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 90: aastore + 91: dup + 92: iconst_1 + 93: aload_0 + 94: aastore + 95: dup + 96: iconst_2 + 97: aload 4 + 99: aastore + 100: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 105: iconst_0 + 106: ireturn + Exception table: + from to target type + 23 53 72 Class java/lang/Exception + 54 71 72 Class java/lang/Exception + + public static boolean updateEntrySettings(java.lang.String, java.lang.String, int, int, int, int, float); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 7 + 14: aload 7 + 16: ifnull 23 + 19: iload_2 + 20: ifge 25 + 23: iconst_0 + 24: ireturn + 25: aload 7 + 27: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 30: astore 8 + 32: aload 8 + 34: aload_1 + 35: iconst_0 + 36: invokestatic #659 // Method getEntryArray:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Lcom/google/gson/JsonArray; + 39: astore 9 + 41: aload 9 + 43: ifnull 67 + 46: iload_2 + 47: aload 9 + 49: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 52: if_icmpge 67 + 55: aload 9 + 57: iload_2 + 58: invokevirtual #829 // Method com/google/gson/JsonArray.get:(I)Lcom/google/gson/JsonElement; + 61: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 64: ifne 69 + 67: iconst_0 + 68: ireturn + 69: aload 9 + 71: iload_2 + 72: invokevirtual #829 // Method com/google/gson/JsonArray.get:(I)Lcom/google/gson/JsonElement; + 75: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 78: astore 10 + 80: aload 10 + 82: ldc_w #637 // String weight + 85: iconst_1 + 86: ldc_w #684 // int 1000000 + 89: iload_3 + 90: invokestatic #643 // Method java/lang/Math.min:(II)I + 93: invokestatic #416 // Method java/lang/Math.max:(II)I + 96: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 99: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 102: aload 10 + 104: ldc_w #638 // String chance + 107: ldc_w #685 // float 1.0E-4f + 110: fconst_1 + 111: fload 6 + 113: invokestatic #438 // Method java/lang/Math.min:(FF)F + 116: invokestatic #440 // Method java/lang/Math.max:(FF)F + 119: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 122: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 125: aload 10 + 127: ldc_w #646 // String count + 130: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 133: astore 11 + 135: aload 11 + 137: ldc_w #641 // String min + 140: iconst_1 + 141: bipush 64 + 143: iload 4 + 145: iload 5 + 147: invokestatic #643 // Method java/lang/Math.min:(II)I + 150: invokestatic #643 // Method java/lang/Math.min:(II)I + 153: invokestatic #416 // Method java/lang/Math.max:(II)I + 156: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 159: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 162: aload 11 + 164: ldc_w #644 // String max + 167: iconst_1 + 168: bipush 64 + 170: iload 4 + 172: iload 5 + 174: invokestatic #416 // Method java/lang/Math.max:(II)I + 177: invokestatic #643 // Method java/lang/Math.min:(II)I + 180: invokestatic #416 // Method java/lang/Math.max:(II)I + 183: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 186: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 189: aload 7 + 191: aload 8 + 193: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 196: invokestatic #301 // Method reload:()V + 199: iconst_1 + 200: ireturn + 201: astore 8 + 203: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 206: ldc_w #844 // String Could not update entry {} in loot profile \'{}\'. + 209: iconst_3 + 210: anewarray #4 // class java/lang/Object + 213: dup + 214: iconst_0 + 215: iload_2 + 216: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 219: aastore + 220: dup + 221: iconst_1 + 222: aload_0 + 223: aastore + 224: dup + 225: iconst_2 + 226: aload 8 + 228: aastore + 229: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 234: iconst_0 + 235: ireturn + Exception table: + from to target type + 25 68 201 Class java/lang/Exception + 69 200 201 Class java/lang/Exception + + public static boolean replaceInventoryEntryAndKit(java.lang.String, java.lang.String, int, net.minecraft.world.item.ItemStack, int, int, int, float, boolean, java.util.List); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 10 + 14: aload 10 + 16: ifnull 23 + 19: iload_2 + 20: ifge 25 + 23: iconst_0 + 24: ireturn + 25: aload 10 + 27: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 30: astore 11 + 32: aload 11 + 34: aload_1 + 35: iconst_0 + 36: invokestatic #659 // Method getEntryArray:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Lcom/google/gson/JsonArray; + 39: astore 12 + 41: aload 12 + 43: ifnull 67 + 46: iload_2 + 47: aload 12 + 49: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 52: if_icmpge 67 + 55: aload 12 + 57: iload_2 + 58: invokevirtual #829 // Method com/google/gson/JsonArray.get:(I)Lcom/google/gson/JsonElement; + 61: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 64: ifne 69 + 67: iconst_0 + 68: ireturn + 69: aload 12 + 71: iload_2 + 72: invokevirtual #829 // Method com/google/gson/JsonArray.get:(I)Lcom/google/gson/JsonElement; + 75: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 78: astore 13 + 80: aload_3 + 81: ifnull 142 + 84: aload_3 + 85: invokevirtual #711 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 88: ifne 142 + 91: aload_3 + 92: iconst_1 + 93: iload 4 + 95: invokestatic #416 // Method java/lang/Math.max:(II)I + 98: ldc_w #685 // float 1.0E-4f + 101: fconst_1 + 102: fload 7 + 104: invokestatic #438 // Method java/lang/Math.min:(FF)F + 107: invokestatic #440 // Method java/lang/Math.max:(FF)F + 110: iconst_1 + 111: iload 5 + 113: iload 6 + 115: invokestatic #643 // Method java/lang/Math.min:(II)I + 118: invokestatic #416 // Method java/lang/Math.max:(II)I + 121: iconst_1 + 122: iload 5 + 124: iload 6 + 126: invokestatic #416 // Method java/lang/Math.max:(II)I + 129: invokestatic #416 // Method java/lang/Math.max:(II)I + 132: iload 8 + 134: invokestatic #715 // Method createInventoryEntryJson:(Lnet/minecraft/world/item/ItemStack;IFIIZ)Lcom/google/gson/JsonObject; + 137: astore 14 + 139: goto 279 + 142: aload 13 + 144: invokevirtual #506 // Method com/google/gson/JsonObject.toString:()Ljava/lang/String; + 147: invokestatic #509 // Method com/google/gson/JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 150: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 153: astore 14 + 155: aload 14 + 157: ldc_w #637 // String weight + 160: iconst_1 + 161: ldc_w #684 // int 1000000 + 164: iload 4 + 166: invokestatic #643 // Method java/lang/Math.min:(II)I + 169: invokestatic #416 // Method java/lang/Math.max:(II)I + 172: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 175: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 178: aload 14 + 180: ldc_w #638 // String chance + 183: ldc_w #685 // float 1.0E-4f + 186: fconst_1 + 187: fload 7 + 189: invokestatic #438 // Method java/lang/Math.min:(FF)F + 192: invokestatic #440 // Method java/lang/Math.max:(FF)F + 195: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 198: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 201: aload 14 + 203: ldc_w #646 // String count + 206: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 209: astore 15 + 211: aload 15 + 213: ldc_w #641 // String min + 216: iconst_1 + 217: bipush 64 + 219: iload 5 + 221: iload 6 + 223: invokestatic #643 // Method java/lang/Math.min:(II)I + 226: invokestatic #643 // Method java/lang/Math.min:(II)I + 229: invokestatic #416 // Method java/lang/Math.max:(II)I + 232: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 235: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 238: aload 15 + 240: ldc_w #644 // String max + 243: iconst_1 + 244: bipush 64 + 246: iload 5 + 248: iload 6 + 250: invokestatic #416 // Method java/lang/Math.max:(II)I + 253: invokestatic #643 // Method java/lang/Math.min:(II)I + 256: invokestatic #416 // Method java/lang/Math.max:(II)I + 259: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 262: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 265: iload 8 + 267: ifne 279 + 270: aload 14 + 272: ldc_w #640 // String nbt + 275: invokevirtual #849 // Method com/google/gson/JsonObject.remove:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 278: pop + 279: aload 13 + 281: ldc_w #733 // String with + 284: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 287: ifeq 315 + 290: aload 13 + 292: ldc_w #733 // String with + 295: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 298: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 301: ifeq 315 + 304: aload 13 + 306: ldc_w #733 // String with + 309: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 312: goto 322 + 315: new #469 // class com/google/gson/JsonArray + 318: dup + 319: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 322: astore 15 + 324: new #469 // class com/google/gson/JsonArray + 327: dup + 328: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 331: astore 16 + 333: aload 9 + 335: ifnull 552 + 338: aload 9 + 340: invokeinterface #719, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 345: astore 17 + 347: aload 17 + 349: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 354: ifeq 552 + 357: aload 17 + 359: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 364: checkcast #7 // class com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement + 367: astore 18 + 369: aload 18 + 371: ifnonnull 377 + 374: goto 347 + 377: aconst_null + 378: astore 19 + 380: aload 18 + 382: invokevirtual #852 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.existingIndex:()I + 385: iflt 499 + 388: aload 18 + 390: invokevirtual #852 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.existingIndex:()I + 393: aload 15 + 395: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 398: if_icmpge 499 + 401: aload 15 + 403: aload 18 + 405: invokevirtual #852 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.existingIndex:()I + 408: invokevirtual #829 // Method com/google/gson/JsonArray.get:(I)Lcom/google/gson/JsonElement; + 411: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 414: ifeq 499 + 417: aload 15 + 419: aload 18 + 421: invokevirtual #852 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.existingIndex:()I + 424: invokevirtual #829 // Method com/google/gson/JsonArray.get:(I)Lcom/google/gson/JsonElement; + 427: invokevirtual #853 // Method com/google/gson/JsonElement.toString:()Ljava/lang/String; + 430: invokestatic #509 // Method com/google/gson/JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 433: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 436: astore 19 + 438: aload 19 + 440: ldc_w #638 // String chance + 443: aload 18 + 445: invokevirtual #854 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.chance:()F + 448: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 451: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 454: aload 19 + 456: ldc_w #646 // String count + 459: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 462: astore 20 + 464: aload 20 + 466: ldc_w #641 // String min + 469: aload 18 + 471: invokevirtual #855 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.minCount:()I + 474: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 477: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 480: aload 20 + 482: ldc_w #644 // String max + 485: aload 18 + 487: invokevirtual #856 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.maxCount:()I + 490: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 493: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 496: goto 537 + 499: aload 18 + 501: invokevirtual #859 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.newStack:()Lnet/minecraft/world/item/ItemStack; + 504: invokevirtual #711 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 507: ifne 537 + 510: aload 18 + 512: invokevirtual #859 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.newStack:()Lnet/minecraft/world/item/ItemStack; + 515: iconst_1 + 516: aload 18 + 518: invokevirtual #854 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.chance:()F + 521: aload 18 + 523: invokevirtual #855 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.minCount:()I + 526: aload 18 + 528: invokevirtual #856 // Method com/ogaba/sa_decor/common/loot/DecorLootConfigManager$LinkedEntryReplacement.maxCount:()I + 531: iconst_1 + 532: invokestatic #715 // Method createInventoryEntryJson:(Lnet/minecraft/world/item/ItemStack;IFIIZ)Lcom/google/gson/JsonObject; + 535: astore 19 + 537: aload 19 + 539: ifnull 549 + 542: aload 16 + 544: aload 19 + 546: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 549: goto 347 + 552: aload 16 + 554: invokevirtual #860 // Method com/google/gson/JsonArray.isEmpty:()Z + 557: ifeq 572 + 560: aload 14 + 562: ldc_w #733 // String with + 565: invokevirtual #849 // Method com/google/gson/JsonObject.remove:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 568: pop + 569: goto 582 + 572: aload 14 + 574: ldc_w #733 // String with + 577: aload 16 + 579: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 582: aload 12 + 584: iload_2 + 585: aload 14 + 587: invokevirtual #864 // Method com/google/gson/JsonArray.set:(ILcom/google/gson/JsonElement;)Lcom/google/gson/JsonElement; + 590: pop + 591: aload 10 + 593: aload 11 + 595: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 598: invokestatic #301 // Method reload:()V + 601: iconst_1 + 602: ireturn + 603: astore 11 + 605: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 608: ldc_w #866 // String Could not replace entry {} in loot profile \'{}\'. + 611: iconst_3 + 612: anewarray #4 // class java/lang/Object + 615: dup + 616: iconst_0 + 617: iload_2 + 618: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 621: aastore + 622: dup + 623: iconst_1 + 624: aload_0 + 625: aastore + 626: dup + 627: iconst_2 + 628: aload 11 + 630: aastore + 631: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 636: iconst_0 + 637: ireturn + Exception table: + from to target type + 25 68 603 Class java/lang/Exception + 69 602 603 Class java/lang/Exception + + public static boolean deleteConfig(java.lang.String); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_1 + 13: aload_1 + 14: ifnonnull 19 + 17: iconst_0 + 18: ireturn + 19: aload_1 + 20: invokestatic #881 // Method java/nio/file/Files.deleteIfExists:(Ljava/nio/file/Path;)Z + 23: istore_2 + 24: invokestatic #301 // Method reload:()V + 27: iload_2 + 28: ireturn + 29: astore_2 + 30: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 33: ldc_w #883 // String Could not delete loot config \'{}\'. + 36: aload_0 + 37: aload_2 + 38: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 43: iconst_0 + 44: ireturn + Exception table: + from to target type + 19 28 29 Class java/io/IOException + + private static com.google.gson.JsonArray getEntryArray(com.google.gson.JsonObject, java.lang.String, boolean); + Code: + 0: aload_1 + 1: ifnonnull 10 + 4: ldc_w #624 // String + 7: goto 14 + 10: aload_1 + 11: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 14: astore_3 + 15: aload_3 + 16: invokevirtual #885 // Method java/lang/String.isEmpty:()Z + 19: ifeq 74 + 22: aload_0 + 23: ldc_w #621 // String entries + 26: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 29: ifeq 53 + 32: aload_0 + 33: ldc_w #621 // String entries + 36: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 39: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 42: ifeq 53 + 45: aload_0 + 46: ldc_w #621 // String entries + 49: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 52: areturn + 53: new #469 // class com/google/gson/JsonArray + 56: dup + 57: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 60: astore 4 + 62: aload_0 + 63: ldc_w #621 // String entries + 66: aload 4 + 68: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 71: aload 4 + 73: areturn + 74: aload_0 + 75: ldc_w #788 // String pools + 78: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 81: ifeq 97 + 84: aload_0 + 85: ldc_w #788 // String pools + 88: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 91: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 94: ifne 99 + 97: aconst_null + 98: areturn + 99: aload_0 + 100: ldc_w #788 // String pools + 103: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 106: invokevirtual #789 // Method com/google/gson/JsonArray.iterator:()Ljava/util/Iterator; + 109: astore 4 + 111: aload 4 + 113: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 118: ifeq 234 + 121: aload 4 + 123: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 128: checkcast #343 // class com/google/gson/JsonElement + 131: astore 5 + 133: aload 5 + 135: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 138: ifne 144 + 141: goto 111 + 144: aload 5 + 146: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 149: astore 6 + 151: aload_3 + 152: aload 6 + 154: ldc_w #348 // String id + 157: ldc_w #624 // String + 160: invokestatic #796 // Method getString:(Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 163: invokevirtual #799 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 166: ifne 172 + 169: goto 111 + 172: aload 6 + 174: ldc_w #621 // String entries + 177: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 180: ifeq 206 + 183: aload 6 + 185: ldc_w #621 // String entries + 188: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 191: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 194: ifeq 206 + 197: aload 6 + 199: ldc_w #621 // String entries + 202: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 205: areturn + 206: iload_2 + 207: ifeq 232 + 210: new #469 // class com/google/gson/JsonArray + 213: dup + 214: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 217: astore 7 + 219: aload 6 + 221: ldc_w #621 // String entries + 224: aload 7 + 226: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 229: aload 7 + 231: areturn + 232: aconst_null + 233: areturn + 234: aconst_null + 235: areturn + + private static com.google.gson.JsonObject findPoolObject(com.google.gson.JsonObject, java.lang.String); + Code: + 0: aload_0 + 1: ifnull 38 + 4: aload_1 + 5: ifnull 38 + 8: aload_1 + 9: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 12: ifne 38 + 15: aload_0 + 16: ldc_w #788 // String pools + 19: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 22: ifeq 38 + 25: aload_0 + 26: ldc_w #788 // String pools + 29: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 32: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 35: ifne 40 + 38: aconst_null + 39: areturn + 40: aload_0 + 41: ldc_w #788 // String pools + 44: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 47: invokevirtual #789 // Method com/google/gson/JsonArray.iterator:()Ljava/util/Iterator; + 50: astore_2 + 51: aload_2 + 52: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 57: ifeq 110 + 60: aload_2 + 61: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 66: checkcast #343 // class com/google/gson/JsonElement + 69: astore_3 + 70: aload_3 + 71: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 74: ifne 80 + 77: goto 51 + 80: aload_3 + 81: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 84: astore 4 + 86: aload_1 + 87: aload 4 + 89: ldc_w #348 // String id + 92: ldc_w #624 // String + 95: invokestatic #796 // Method getString:(Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 98: invokevirtual #799 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 101: ifeq 107 + 104: aload 4 + 106: areturn + 107: goto 51 + 110: aconst_null + 111: areturn + + private static com.google.gson.JsonObject createInventoryEntryJson(net.minecraft.world.item.ItemStack, int, float, int, int, boolean); + Code: + 0: new #303 // class com/google/gson/JsonObject + 3: dup + 4: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 7: astore 6 + 9: aload 6 + 11: ldc_w #636 // String item + 14: getstatic #671 // Field net/minecraft/core/registries/BuiltInRegistries.f_257033_:Lnet/minecraft/core/DefaultedRegistry; + 17: aload_0 + 18: invokevirtual #891 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 21: invokeinterface #895, 2 // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_7981_:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation; + 26: invokevirtual #896 // Method net/minecraft/resources/ResourceLocation.toString:()Ljava/lang/String; + 29: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 32: aload 6 + 34: ldc_w #637 // String weight + 37: iconst_1 + 38: iload_1 + 39: invokestatic #416 // Method java/lang/Math.max:(II)I + 42: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 45: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 48: aload 6 + 50: ldc_w #638 // String chance + 53: ldc_w #685 // float 1.0E-4f + 56: fconst_1 + 57: fload_2 + 58: invokestatic #438 // Method java/lang/Math.min:(FF)F + 61: invokestatic #440 // Method java/lang/Math.max:(FF)F + 64: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 67: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 70: new #303 // class com/google/gson/JsonObject + 73: dup + 74: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 77: astore 7 + 79: aload 7 + 81: ldc_w #641 // String min + 84: iconst_1 + 85: iload_3 + 86: iload 4 + 88: invokestatic #643 // Method java/lang/Math.min:(II)I + 91: invokestatic #416 // Method java/lang/Math.max:(II)I + 94: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 97: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 100: aload 7 + 102: ldc_w #644 // String max + 105: iconst_1 + 106: iload_3 + 107: iload 4 + 109: invokestatic #416 // Method java/lang/Math.max:(II)I + 112: invokestatic #416 // Method java/lang/Math.max:(II)I + 115: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 118: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 121: aload 6 + 123: ldc_w #646 // String count + 126: aload 7 + 128: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 131: ldc_w #898 // String tacz + 134: getstatic #671 // Field net/minecraft/core/registries/BuiltInRegistries.f_257033_:Lnet/minecraft/core/DefaultedRegistry; + 137: aload_0 + 138: invokevirtual #891 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 141: invokeinterface #895, 2 // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_7981_:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation; + 146: invokevirtual #901 // Method net/minecraft/resources/ResourceLocation.m_135827_:()Ljava/lang/String; + 149: invokevirtual #799 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 152: istore 8 + 154: iload 5 + 156: ifne 164 + 159: iload 8 + 161: ifeq 240 + 164: aload_0 + 165: invokevirtual #904 // Method net/minecraft/world/item/ItemStack.m_41782_:()Z + 168: ifeq 240 + 171: aload_0 + 172: invokevirtual #908 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 175: astore 9 + 177: aload 9 + 179: ifnull 240 + 182: aload 9 + 184: invokevirtual #913 // Method net/minecraft/nbt/CompoundTag.m_128456_:()Z + 187: ifne 240 + 190: aload 9 + 192: invokevirtual #916 // Method net/minecraft/nbt/CompoundTag.m_6426_:()Lnet/minecraft/nbt/CompoundTag; + 195: astore 10 + 197: aload 10 + 199: ldc_w #918 // String GunId + 202: invokevirtual #921 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String; + 205: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 208: ifne 219 + 211: aload 10 + 213: ldc_w #923 // String Durability + 216: invokevirtual #926 // Method net/minecraft/nbt/CompoundTag.m_128473_:(Ljava/lang/String;)V + 219: aload 10 + 221: invokevirtual #913 // Method net/minecraft/nbt/CompoundTag.m_128456_:()Z + 224: ifne 240 + 227: aload 6 + 229: ldc_w #640 // String nbt + 232: aload 10 + 234: invokevirtual #927 // Method net/minecraft/nbt/CompoundTag.toString:()Ljava/lang/String; + 237: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 240: aload 6 + 242: areturn + + private static com.google.gson.JsonObject createEmptyConfigJson(java.lang.String, boolean, boolean, boolean); + Code: + 0: new #303 // class com/google/gson/JsonObject + 3: dup + 4: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 7: astore 4 + 9: aload 4 + 11: ldc_w #348 // String id + 14: aload_0 + 15: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 18: aload 4 + 20: ldc_w #511 // String display_name + 23: aload_0 + 24: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 27: aload 4 + 29: ldc_w #742 // String description + 32: ldc_w #624 // String + 35: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 38: new #303 // class com/google/gson/JsonObject + 41: dup + 42: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 45: astore 5 + 47: aload 5 + 49: ldc_w #641 // String min + 52: iconst_1 + 53: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 56: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 59: aload 5 + 61: ldc_w #644 // String max + 64: iconst_3 + 65: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 68: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 71: aload 4 + 73: ldc_w #744 // String rolls + 76: aload 5 + 78: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 81: new #303 // class com/google/gson/JsonObject + 84: dup + 85: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 88: astore 6 + 90: aload 6 + 92: ldc_w #373 // String enabled + 95: iload_2 + 96: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 99: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 102: aload 4 + 104: ldc_w #371 // String search + 107: aload 6 + 109: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 112: new #303 // class com/google/gson/JsonObject + 115: dup + 116: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 119: astore 7 + 121: aload 7 + 123: ldc_w #373 // String enabled + 126: iload_3 + 127: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 130: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 133: aload 7 + 135: ldc_w #434 // String spawn_chance + 138: fconst_0 + 139: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 142: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 145: aload 7 + 147: ldc_w #750 // String lockpick + 150: iconst_1 + 151: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 154: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 157: aload 4 + 159: ldc_w #381 // String lock + 162: aload 7 + 164: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 167: new #303 // class com/google/gson/JsonObject + 170: dup + 171: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 174: astore 8 + 176: aload 8 + 178: ldc_w #373 // String enabled + 181: iconst_0 + 182: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 185: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 188: aload 8 + 190: ldc_w #434 // String spawn_chance + 193: fconst_0 + 194: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 197: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 200: aload 4 + 202: ldc_w #432 // String empty + 205: aload 8 + 207: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 210: new #303 // class com/google/gson/JsonObject + 213: dup + 214: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 217: astore 9 + 219: aload 9 + 221: ldc_w #373 // String enabled + 224: iconst_0 + 225: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 228: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 231: aload 9 + 233: ldc_w #754 // String amount + 236: iconst_1 + 237: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 240: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 243: aload 9 + 245: ldc_w #756 // String consume + 248: iconst_1 + 249: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 252: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 255: aload 9 + 257: ldc_w #758 // String bypass_lock + 260: iconst_1 + 261: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 264: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 267: aload 9 + 269: ldc_w #760 // String bypass_search + 272: iconst_1 + 273: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 276: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 279: aload 9 + 281: ldc_w #762 // String items + 284: new #469 // class com/google/gson/JsonArray + 287: dup + 288: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 291: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 294: aload 9 + 296: ldc_w #764 // String tags + 299: new #469 // class com/google/gson/JsonArray + 302: dup + 303: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 306: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 309: aload 4 + 311: ldc_w #752 // String open_pass + 314: aload 9 + 316: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 319: new #303 // class com/google/gson/JsonObject + 322: dup + 323: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 326: astore 10 + 328: aload 10 + 330: ldc_w #373 // String enabled + 333: iconst_0 + 334: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 337: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 340: aload 10 + 342: ldc_w #410 // String time_ticks + 345: sipush 24000 + 348: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 351: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 354: aload 10 + 356: ldc_w #421 // String only_if_empty + 359: iconst_1 + 360: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 363: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 366: aload 10 + 368: ldc_w #423 // String clear_before_respawn + 371: iconst_1 + 372: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 375: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 378: aload 4 + 380: ldc_w #396 // String respawn + 383: aload 10 + 385: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 388: aload 4 + 390: ldc_w #384 // String per_player + 393: iload_1 + 394: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 397: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 400: aload 4 + 402: ldc_w #746 // String allow_duplicates + 405: iconst_1 + 406: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 409: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 412: aload 4 + 414: ldc_w #748 // String clear_before_generate + 417: iconst_0 + 418: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 421: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 424: aload 4 + 426: ldc_w #456 // String loot_tables + 429: new #469 // class com/google/gson/JsonArray + 432: dup + 433: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 436: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 439: aload 4 + 441: ldc_w #621 // String entries + 444: new #469 // class com/google/gson/JsonArray + 447: dup + 448: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 451: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 454: aload 4 + 456: areturn + + private static boolean writeConfigIfMissing(java.lang.String, com.google.gson.JsonObject); + Code: + 0: invokestatic #66 // Method getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 3: astore_2 + 4: aload_2 + 5: aload_0 + 6: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 11: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 16: astore_3 + 17: aload_3 + 18: iconst_0 + 19: anewarray #68 // class java/nio/file/LinkOption + 22: invokestatic #291 // Method java/nio/file/Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 25: ifeq 30 + 28: iconst_0 + 29: ireturn + 30: aload_2 + 31: iconst_0 + 32: anewarray #76 // class java/nio/file/attribute/FileAttribute + 35: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 38: pop + 39: aload_3 + 40: aload_1 + 41: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 44: invokestatic #301 // Method reload:()V + 47: iconst_1 + 48: ireturn + 49: astore 4 + 51: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 54: ldc_w #933 // String Could not write loot config \'{}\' at {}. + 57: iconst_3 + 58: anewarray #4 // class java/lang/Object + 61: dup + 62: iconst_0 + 63: aload_0 + 64: aastore + 65: dup + 66: iconst_1 + 67: aload_3 + 68: aastore + 69: dup + 70: iconst_2 + 71: aload 4 + 73: aastore + 74: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 79: iconst_0 + 80: ireturn + Exception table: + from to target type + 30 48 49 Class java/io/IOException + + private static com.google.gson.JsonObject createPresetJson(java.lang.String); + Code: + 0: aload_0 + 1: invokestatic #936 // Method com/ogaba/sa_decor/common/loot/DecorLootDefaultProfiles.createPresetJson:(Ljava/lang/String;)Lcom/google/gson/JsonObject; + 4: areturn + + private static com.google.gson.JsonObject createPresetWithEntries(java.lang.String, boolean, boolean, boolean, java.lang.String[][]); + Code: + 0: aload_0 + 1: iload_1 + 2: iload_2 + 3: iload_3 + 4: invokestatic #295 // Method createEmptyConfigJson:(Ljava/lang/String;ZZZ)Lcom/google/gson/JsonObject; + 7: astore 5 + 9: aload 5 + 11: ldc_w #621 // String entries + 14: invokevirtual #467 // Method com/google/gson/JsonObject.getAsJsonArray:(Ljava/lang/String;)Lcom/google/gson/JsonArray; + 17: astore 6 + 19: aload 4 + 21: astore 7 + 23: aload 7 + 25: arraylength + 26: istore 8 + 28: iconst_0 + 29: istore 9 + 31: iload 9 + 33: iload 8 + 35: if_icmpge 170 + 38: aload 7 + 40: iload 9 + 42: aaload + 43: astore 10 + 45: new #303 // class com/google/gson/JsonObject + 48: dup + 49: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 52: astore 11 + 54: aload 11 + 56: ldc_w #636 // String item + 59: aload 10 + 61: iconst_0 + 62: aaload + 63: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 66: aload 11 + 68: ldc_w #637 // String weight + 71: aload 10 + 73: iconst_1 + 74: aaload + 75: invokestatic #944 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I + 78: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 81: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 84: aload 11 + 86: ldc_w #638 // String chance + 89: aload 10 + 91: iconst_4 + 92: aaload + 93: invokestatic #948 // Method java/lang/Float.parseFloat:(Ljava/lang/String;)F + 96: invokestatic #445 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 99: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 102: new #303 // class com/google/gson/JsonObject + 105: dup + 106: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 109: astore 12 + 111: aload 12 + 113: ldc_w #641 // String min + 116: aload 10 + 118: iconst_2 + 119: aaload + 120: invokestatic #944 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I + 123: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 126: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 129: aload 12 + 131: ldc_w #644 // String max + 134: aload 10 + 136: iconst_3 + 137: aaload + 138: invokestatic #944 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I + 141: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 144: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 147: aload 11 + 149: ldc_w #646 // String count + 152: aload 12 + 154: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 157: aload 6 + 159: aload 11 + 161: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 164: iinc 9, 1 + 167: goto 31 + 170: aload 5 + 172: areturn + + private static com.google.gson.JsonObject readConfigObject(java.nio.file.Path) throws java.io.IOException; + Code: + 0: aload_0 + 1: invokestatic #335 // Method java/nio/file/Files.newBufferedReader:(Ljava/nio/file/Path;)Ljava/io/BufferedReader; + 4: astore_1 + 5: aload_1 + 6: invokestatic #341 // Method com/google/gson/JsonParser.parseReader:(Ljava/io/Reader;)Lcom/google/gson/JsonElement; + 9: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 12: astore_2 + 13: aload_1 + 14: ifnull 21 + 17: aload_1 + 18: invokevirtual #358 // Method java/io/Reader.close:()V + 21: aload_2 + 22: areturn + 23: astore_2 + 24: aload_1 + 25: ifnull 41 + 28: aload_1 + 29: invokevirtual #358 // Method java/io/Reader.close:()V + 32: goto 41 + 35: astore_3 + 36: aload_2 + 37: aload_3 + 38: invokevirtual #185 // Method java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V + 41: aload_2 + 42: athrow + Exception table: + from to target type + 5 13 23 Class java/lang/Throwable + 28 32 35 Class java/lang/Throwable + + private static synchronized void writeConfigObject(java.nio.file.Path, com.google.gson.JsonObject) throws java.io.IOException; + Code: + 0: aload_0 + 1: invokeinterface #355, 1 // InterfaceMethod java/nio/file/Path.getParent:()Ljava/nio/file/Path; + 6: iconst_0 + 7: anewarray #76 // class java/nio/file/attribute/FileAttribute + 10: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 13: pop + 14: aload_0 + 15: aload_0 + 16: invokeinterface #956, 1 // InterfaceMethod java/nio/file/Path.getFileName:()Ljava/nio/file/Path; + 21: invokeinterface #957, 1 // InterfaceMethod java/nio/file/Path.toString:()Ljava/lang/String; + 26: invokedynamic #960, 0 // InvokeDynamic #12:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 31: invokeinterface #963, 2 // InterfaceMethod java/nio/file/Path.resolveSibling:(Ljava/lang/String;)Ljava/nio/file/Path; + 36: astore_2 + 37: aload_2 + 38: iconst_0 + 39: anewarray #965 // class java/nio/file/OpenOption + 42: invokestatic #969 // Method java/nio/file/Files.newBufferedWriter:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/BufferedWriter; + 45: astore_3 + 46: aload_3 + 47: aload_1 + 48: invokestatic #973 // Method toFriendlyConfigJson:(Lcom/google/gson/JsonObject;)Ljava/lang/String; + 51: invokevirtual #978 // Method java/io/Writer.write:(Ljava/lang/String;)V + 54: aload_3 + 55: ifnull 90 + 58: aload_3 + 59: invokevirtual #979 // Method java/io/Writer.close:()V + 62: goto 90 + 65: astore 4 + 67: aload_3 + 68: ifnull 87 + 71: aload_3 + 72: invokevirtual #979 // Method java/io/Writer.close:()V + 75: goto 87 + 78: astore 5 + 80: aload 4 + 82: aload 5 + 84: invokevirtual #185 // Method java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V + 87: aload 4 + 89: athrow + 90: aload_2 + 91: aload_0 + 92: iconst_2 + 93: anewarray #981 // class java/nio/file/CopyOption + 96: dup + 97: iconst_0 + 98: getstatic #987 // Field java/nio/file/StandardCopyOption.ATOMIC_MOVE:Ljava/nio/file/StandardCopyOption; + 101: aastore + 102: dup + 103: iconst_1 + 104: getstatic #990 // Field java/nio/file/StandardCopyOption.REPLACE_EXISTING:Ljava/nio/file/StandardCopyOption; + 107: aastore + 108: invokestatic #994 // Method java/nio/file/Files.move:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path; + 111: pop + 112: aload_2 + 113: invokestatic #881 // Method java/nio/file/Files.deleteIfExists:(Ljava/nio/file/Path;)Z + 116: pop + 117: goto 155 + 120: astore_3 + 121: aload_2 + 122: aload_0 + 123: iconst_1 + 124: anewarray #981 // class java/nio/file/CopyOption + 127: dup + 128: iconst_0 + 129: getstatic #990 // Field java/nio/file/StandardCopyOption.REPLACE_EXISTING:Ljava/nio/file/StandardCopyOption; + 132: aastore + 133: invokestatic #994 // Method java/nio/file/Files.move:(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path; + 136: pop + 137: aload_2 + 138: invokestatic #881 // Method java/nio/file/Files.deleteIfExists:(Ljava/nio/file/Path;)Z + 141: pop + 142: goto 155 + 145: astore 6 + 147: aload_2 + 148: invokestatic #881 // Method java/nio/file/Files.deleteIfExists:(Ljava/nio/file/Path;)Z + 151: pop + 152: aload 6 + 154: athrow + 155: return + Exception table: + from to target type + 46 54 65 Class java/lang/Throwable + 71 75 78 Class java/lang/Throwable + 90 112 120 Class java/nio/file/AtomicMoveNotSupportedException + 90 112 145 any + 120 137 145 any + 145 147 145 any + + private static java.lang.String toFriendlyConfigJson(com.google.gson.JsonObject); + Code: + 0: getstatic #1001 // Field GSON:Lcom/google/gson/Gson; + 3: aload_0 + 4: invokestatic #1005 // Method compactLootConfig:(Lcom/google/gson/JsonObject;)Lcom/google/gson/JsonObject; + 7: invokestatic #1009 // Method normalizeNumbers:(Lcom/google/gson/JsonElement;)Lcom/google/gson/JsonElement; + 10: invokevirtual #1015 // Method com/google/gson/Gson.toJson:(Lcom/google/gson/JsonElement;)Ljava/lang/String; + 13: invokedynamic #1018, 0 // InvokeDynamic #13:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 18: areturn + + private static com.google.gson.JsonObject compactLootConfig(com.google.gson.JsonObject); + Code: + 0: new #303 // class com/google/gson/JsonObject + 3: dup + 4: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 7: astore_1 + 8: aload_0 + 9: ldc_w #348 // String id + 12: ldc_w #624 // String + 15: invokestatic #796 // Method getString:(Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 18: astore_2 + 19: aload_1 + 20: ldc_w #348 // String id + 23: aload_2 + 24: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 27: aload_1 + 28: ldc_w #511 // String display_name + 31: aload_0 + 32: ldc_w #511 // String display_name + 35: aload_2 + 36: invokestatic #796 // Method getString:(Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 39: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 42: aload_1 + 43: ldc_w #742 // String description + 46: aload_0 + 47: ldc_w #742 // String description + 50: ldc_w #624 // String + 53: invokestatic #796 // Method getString:(Lcom/google/gson/JsonObject;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 56: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 59: new #303 // class com/google/gson/JsonObject + 62: dup + 63: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 66: astore_3 + 67: aload_0 + 68: ldc_w #744 // String rolls + 71: invokestatic #1021 // Method getObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 74: astore 4 + 76: aload_3 + 77: ldc_w #641 // String min + 80: iconst_0 + 81: aload 4 + 83: ldc_w #641 // String min + 86: iconst_1 + 87: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 90: invokestatic #416 // Method java/lang/Math.max:(II)I + 93: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 96: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 99: aload_3 + 100: ldc_w #644 // String max + 103: iconst_0 + 104: aload 4 + 106: ldc_w #644 // String max + 109: iconst_3 + 110: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 113: invokestatic #416 // Method java/lang/Math.max:(II)I + 116: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 119: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 122: aload_1 + 123: ldc_w #744 // String rolls + 126: aload_3 + 127: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 130: new #303 // class com/google/gson/JsonObject + 133: dup + 134: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 137: astore 5 + 139: aload 5 + 141: ldc_w #373 // String enabled + 144: aload_0 + 145: invokestatic #1029 // Method getSearchEnabled:(Lcom/google/gson/JsonObject;)Z + 148: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 151: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 154: aload_1 + 155: ldc_w #371 // String search + 158: aload 5 + 160: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 163: aload_0 + 164: ldc_w #381 // String lock + 167: invokestatic #1021 // Method getObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 170: astore 6 + 172: aload 6 + 174: ldc_w #373 // String enabled + 177: iconst_0 + 178: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 181: istore 7 + 183: new #303 // class com/google/gson/JsonObject + 186: dup + 187: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 190: astore 8 + 192: aload 8 + 194: ldc_w #373 // String enabled + 197: iload 7 + 199: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 202: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 205: aload 8 + 207: ldc_w #434 // String spawn_chance + 210: aload 6 + 212: ldc_w #434 // String spawn_chance + 215: dconst_0 + 216: invokestatic #1037 // Method getDouble:(Lcom/google/gson/JsonObject;Ljava/lang/String;D)D + 219: invokestatic #1041 // Method clamp01:(D)D + 222: invokestatic #1046 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double; + 225: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 228: aload 8 + 230: ldc_w #750 // String lockpick + 233: aload 6 + 235: ldc_w #750 // String lockpick + 238: iconst_1 + 239: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 242: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 245: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 248: aload 6 + 250: ifnull 284 + 253: aload 6 + 255: ldc_w #1048 // String consume_lockpick_on_fail + 258: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 261: ifeq 284 + 264: aload 8 + 266: ldc_w #1048 // String consume_lockpick_on_fail + 269: aload 6 + 271: ldc_w #1048 // String consume_lockpick_on_fail + 274: iconst_0 + 275: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 278: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 281: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 284: aload 6 + 286: ifnull 324 + 289: aload 6 + 291: ldc_w #1050 // String damage_lockpick_on_success + 294: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 297: ifeq 324 + 300: aload 8 + 302: ldc_w #1050 // String damage_lockpick_on_success + 305: iconst_0 + 306: aload 6 + 308: ldc_w #1050 // String damage_lockpick_on_success + 311: iconst_1 + 312: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 315: invokestatic #416 // Method java/lang/Math.max:(II)I + 318: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 321: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 324: aload 6 + 326: ifnull 365 + 329: aload 6 + 331: ldc_w #1052 // String damage_lockpick_on_fail + 334: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 337: ifeq 365 + 340: aload 8 + 342: ldc_w #1052 // String damage_lockpick_on_fail + 345: iconst_0 + 346: aload 6 + 348: ldc_w #1052 // String damage_lockpick_on_fail + 351: bipush 8 + 353: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 356: invokestatic #416 // Method java/lang/Math.max:(II)I + 359: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 362: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 365: aload_1 + 366: ldc_w #381 // String lock + 369: aload 8 + 371: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 374: aload_0 + 375: ldc_w #432 // String empty + 378: invokestatic #1021 // Method getObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 381: astore 9 + 383: aload_0 + 384: ldc_w #432 // String empty + 387: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 390: astore 10 + 392: aload 9 + 394: ldc_w #373 // String enabled + 397: iconst_0 + 398: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 401: istore 11 + 403: aload 10 + 405: ifnull 438 + 408: aload 10 + 410: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 413: ifeq 438 + 416: aload 10 + 418: invokevirtual #1059 // Method com/google/gson/JsonElement.getAsJsonPrimitive:()Lcom/google/gson/JsonPrimitive; + 421: invokevirtual #1064 // Method com/google/gson/JsonPrimitive.isNumber:()Z + 424: ifeq 438 + 427: aload 10 + 429: invokevirtual #1068 // Method com/google/gson/JsonElement.getAsDouble:()D + 432: invokestatic #1041 // Method clamp01:(D)D + 435: goto 450 + 438: aload 9 + 440: ldc_w #434 // String spawn_chance + 443: dconst_0 + 444: invokestatic #1037 // Method getDouble:(Lcom/google/gson/JsonObject;Ljava/lang/String;D)D + 447: invokestatic #1041 // Method clamp01:(D)D + 450: dstore 12 + 452: new #303 // class com/google/gson/JsonObject + 455: dup + 456: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 459: astore 14 + 461: aload 14 + 463: ldc_w #373 // String enabled + 466: iload 11 + 468: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 471: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 474: aload 14 + 476: ldc_w #434 // String spawn_chance + 479: dload 12 + 481: invokestatic #1046 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double; + 484: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 487: aload_1 + 488: ldc_w #432 // String empty + 491: aload 14 + 493: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 496: aload_0 + 497: ldc_w #752 // String open_pass + 500: invokestatic #1021 // Method getObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 503: astore 15 + 505: new #303 // class com/google/gson/JsonObject + 508: dup + 509: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 512: astore 16 + 514: aload 16 + 516: ldc_w #373 // String enabled + 519: aload 15 + 521: ldc_w #373 // String enabled + 524: iconst_0 + 525: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 528: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 531: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 534: aload 16 + 536: ldc_w #754 // String amount + 539: iconst_1 + 540: aload 15 + 542: ldc_w #754 // String amount + 545: iconst_1 + 546: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 549: invokestatic #416 // Method java/lang/Math.max:(II)I + 552: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 555: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 558: aload 16 + 560: ldc_w #756 // String consume + 563: aload 15 + 565: ldc_w #756 // String consume + 568: iconst_1 + 569: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 572: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 575: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 578: aload 16 + 580: ldc_w #758 // String bypass_lock + 583: aload 15 + 585: ldc_w #758 // String bypass_lock + 588: iconst_1 + 589: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 592: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 595: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 598: aload 16 + 600: ldc_w #760 // String bypass_search + 603: aload 15 + 605: ldc_w #760 // String bypass_search + 608: iconst_1 + 609: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 612: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 615: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 618: aload 15 + 620: ifnull 654 + 623: aload 15 + 625: ldc_w #1070 // String consume_in_creative + 628: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 631: ifeq 654 + 634: aload 16 + 636: ldc_w #1070 // String consume_in_creative + 639: aload 15 + 641: ldc_w #1070 // String consume_in_creative + 644: iconst_0 + 645: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 648: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 651: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 654: new #469 // class com/google/gson/JsonArray + 657: dup + 658: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 661: astore 17 + 663: aload 17 + 665: aload 15 + 667: ifnonnull 674 + 670: aconst_null + 671: goto 682 + 674: aload 15 + 676: ldc_w #636 // String item + 679: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 682: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 685: aload 17 + 687: aload 15 + 689: ifnonnull 696 + 692: aconst_null + 693: goto 704 + 696: aload 15 + 698: ldc_w #762 // String items + 701: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 704: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 707: aload 17 + 709: aload 15 + 711: ifnonnull 718 + 714: aconst_null + 715: goto 726 + 718: aload 15 + 720: ldc_w #1075 // String match + 723: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 726: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 729: aload 17 + 731: aload 15 + 733: ifnonnull 740 + 736: aconst_null + 737: goto 748 + 740: aload 15 + 742: ldc_w #1076 // String matches + 745: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 748: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 751: aload 16 + 753: ldc_w #762 // String items + 756: aload 17 + 758: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 761: new #469 // class com/google/gson/JsonArray + 764: dup + 765: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 768: astore 18 + 770: aload 18 + 772: aload 15 + 774: ifnonnull 781 + 777: aconst_null + 778: goto 789 + 781: aload 15 + 783: ldc_w #630 // String tag + 786: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 789: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 792: aload 18 + 794: aload 15 + 796: ifnonnull 803 + 799: aconst_null + 800: goto 811 + 803: aload 15 + 805: ldc_w #764 // String tags + 808: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 811: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 814: aload 16 + 816: ldc_w #764 // String tags + 819: aload 18 + 821: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 824: aload_1 + 825: ldc_w #752 // String open_pass + 828: aload 16 + 830: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 833: aload_0 + 834: ldc_w #396 // String respawn + 837: invokestatic #1021 // Method getObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 840: astore 19 + 842: new #303 // class com/google/gson/JsonObject + 845: dup + 846: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 849: astore 20 + 851: aload 20 + 853: ldc_w #373 // String enabled + 856: aload 19 + 858: ldc_w #373 // String enabled + 861: iconst_0 + 862: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 865: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 868: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 871: aload 20 + 873: ldc_w #410 // String time_ticks + 876: lconst_1 + 877: aload 19 + 879: ldc_w #410 // String time_ticks + 882: ldc2_w #1077 // long 24000l + 885: invokestatic #1082 // Method getLong:(Lcom/google/gson/JsonObject;Ljava/lang/String;J)J + 888: invokestatic #1085 // Method java/lang/Math.max:(JJ)J + 891: invokestatic #1090 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 894: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 897: aload 20 + 899: ldc_w #421 // String only_if_empty + 902: aload 19 + 904: ldc_w #421 // String only_if_empty + 907: iconst_1 + 908: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 911: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 914: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 917: aload 20 + 919: ldc_w #423 // String clear_before_respawn + 922: iconst_1 + 923: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 926: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 929: aload_1 + 930: ldc_w #396 // String respawn + 933: aload 20 + 935: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 938: aload_1 + 939: ldc_w #384 // String per_player + 942: aload_0 + 943: ldc_w #384 // String per_player + 946: iconst_0 + 947: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 950: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 953: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 956: aload_1 + 957: ldc_w #746 // String allow_duplicates + 960: aload_0 + 961: ldc_w #746 // String allow_duplicates + 964: iconst_1 + 965: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 968: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 971: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 974: aload_1 + 975: ldc_w #748 // String clear_before_generate + 978: aload_0 + 979: ldc_w #748 // String clear_before_generate + 982: iconst_0 + 983: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 986: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 989: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 992: aload_0 + 993: ldc_w #456 // String loot_tables + 996: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 999: invokestatic #1094 // Method compactStringArray:(Lcom/google/gson/JsonElement;)Lcom/google/gson/JsonArray; + 1002: astore 21 + 1004: aload 21 + 1006: aload_0 + 1007: ldc_w #1096 // String loot_table + 1010: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 1013: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 1016: aload_1 + 1017: ldc_w #456 // String loot_tables + 1020: aload 21 + 1022: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 1025: aload_0 + 1026: ldc_w #621 // String entries + 1029: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 1032: astore 22 + 1034: aload 22 + 1036: ifnull 1055 + 1039: aload 22 + 1041: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 1044: ifeq 1055 + 1047: aload 22 + 1049: invokevirtual #1099 // Method com/google/gson/JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray; + 1052: goto 1056 + 1055: aconst_null + 1056: invokestatic #1103 // Method compactEntries:(Lcom/google/gson/JsonArray;)Lcom/google/gson/JsonArray; + 1059: astore 23 + 1061: aload_1 + 1062: ldc_w #621 // String entries + 1065: aload 23 + 1067: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 1070: aload_0 + 1071: ldc_w #788 // String pools + 1074: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 1077: invokestatic #1106 // Method compactPools:(Lcom/google/gson/JsonElement;)Lcom/google/gson/JsonArray; + 1080: astore 24 + 1082: aload 24 + 1084: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 1087: ifle 1099 + 1090: aload_1 + 1091: ldc_w #788 // String pools + 1094: aload 24 + 1096: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 1099: aload_1 + 1100: areturn + + private static com.google.gson.JsonObject compactLock(com.google.gson.JsonObject); + Code: + 0: new #303 // class com/google/gson/JsonObject + 3: dup + 4: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 7: astore_1 + 8: aload_0 + 9: ldc_w #373 // String enabled + 12: iconst_0 + 13: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 16: istore_2 + 17: aload_0 + 18: ldc_w #434 // String spawn_chance + 21: dconst_0 + 22: invokestatic #1037 // Method getDouble:(Lcom/google/gson/JsonObject;Ljava/lang/String;D)D + 25: invokestatic #1041 // Method clamp01:(D)D + 28: dstore_3 + 29: aload_0 + 30: ldc_w #750 // String lockpick + 33: iconst_1 + 34: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 37: istore 5 + 39: aload_0 + 40: ldc_w #1048 // String consume_lockpick_on_fail + 43: iconst_0 + 44: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 47: istore 6 + 49: iconst_0 + 50: aload_0 + 51: ldc_w #1050 // String damage_lockpick_on_success + 54: iconst_1 + 55: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 58: invokestatic #416 // Method java/lang/Math.max:(II)I + 61: istore 7 + 63: iconst_0 + 64: aload_0 + 65: ldc_w #1052 // String damage_lockpick_on_fail + 68: bipush 8 + 70: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 73: invokestatic #416 // Method java/lang/Math.max:(II)I + 76: istore 8 + 78: aload_0 + 79: ifnull 106 + 82: aload_0 + 83: ldc_w #1050 // String damage_lockpick_on_success + 86: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 89: ifne 102 + 92: aload_0 + 93: ldc_w #1052 // String damage_lockpick_on_fail + 96: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 99: ifeq 106 + 102: iconst_1 + 103: goto 107 + 106: iconst_0 + 107: istore 9 + 109: iload_2 + 110: ifne 136 + 113: dload_3 + 114: dconst_0 + 115: dcmpg + 116: ifgt 136 + 119: iload 5 + 121: ifeq 136 + 124: iload 6 + 126: ifne 136 + 129: iload 9 + 131: ifne 136 + 134: aload_1 + 135: areturn + 136: aload_1 + 137: ldc_w #373 // String enabled + 140: iload_2 + 141: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 144: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 147: iload_2 + 148: ifne 157 + 151: dload_3 + 152: dconst_0 + 153: dcmpl + 154: ifle 168 + 157: aload_1 + 158: ldc_w #434 // String spawn_chance + 161: dload_3 + 162: invokestatic #1046 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double; + 165: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 168: iload 5 + 170: ifne 184 + 173: aload_1 + 174: ldc_w #750 // String lockpick + 177: iconst_0 + 178: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 181: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 184: iload 6 + 186: ifeq 200 + 189: aload_1 + 190: ldc_w #1048 // String consume_lockpick_on_fail + 193: iconst_1 + 194: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 197: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 200: iload 9 + 202: ifeq 229 + 205: aload_1 + 206: ldc_w #1050 // String damage_lockpick_on_success + 209: iload 7 + 211: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 214: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 217: aload_1 + 218: ldc_w #1052 // String damage_lockpick_on_fail + 221: iload 8 + 223: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 226: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 229: aload_1 + 230: areturn + + private static com.google.gson.JsonElement compactEmpty(com.google.gson.JsonObject, com.google.gson.JsonElement); + Code: + 0: aload_1 + 1: ifnull 32 + 4: aload_1 + 5: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 8: ifeq 32 + 11: aload_1 + 12: invokevirtual #1059 // Method com/google/gson/JsonElement.getAsJsonPrimitive:()Lcom/google/gson/JsonPrimitive; + 15: invokevirtual #1064 // Method com/google/gson/JsonPrimitive.isNumber:()Z + 18: ifeq 32 + 21: aload_1 + 22: invokevirtual #1068 // Method com/google/gson/JsonElement.getAsDouble:()D + 25: invokestatic #1041 // Method clamp01:(D)D + 28: dstore_2 + 29: goto 54 + 32: aload_0 + 33: ldc_w #373 // String enabled + 36: iconst_0 + 37: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 40: istore 4 + 42: aload_0 + 43: ldc_w #434 // String spawn_chance + 46: dconst_0 + 47: invokestatic #1037 // Method getDouble:(Lcom/google/gson/JsonObject;Ljava/lang/String;D)D + 50: invokestatic #1041 // Method clamp01:(D)D + 53: dstore_2 + 54: dload_2 + 55: dconst_0 + 56: dcmpg + 57: ifgt 62 + 60: aconst_null + 61: areturn + 62: new #1061 // class com/google/gson/JsonPrimitive + 65: dup + 66: dload_2 + 67: invokestatic #1046 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double; + 70: invokespecial #1128 // Method com/google/gson/JsonPrimitive."":(Ljava/lang/Number;)V + 73: areturn + + private static com.google.gson.JsonObject compactOpenPass(com.google.gson.JsonObject); + Code: + 0: new #303 // class com/google/gson/JsonObject + 3: dup + 4: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 7: astore_1 + 8: aload_0 + 9: ldc_w #373 // String enabled + 12: iconst_0 + 13: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 16: istore_2 + 17: new #469 // class com/google/gson/JsonArray + 20: dup + 21: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 24: astore_3 + 25: aload_3 + 26: aload_0 + 27: ifnonnull 34 + 30: aconst_null + 31: goto 41 + 34: aload_0 + 35: ldc_w #636 // String item + 38: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 41: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 44: aload_3 + 45: aload_0 + 46: ifnonnull 53 + 49: aconst_null + 50: goto 60 + 53: aload_0 + 54: ldc_w #762 // String items + 57: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 60: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 63: aload_3 + 64: aload_0 + 65: ifnonnull 72 + 68: aconst_null + 69: goto 79 + 72: aload_0 + 73: ldc_w #1075 // String match + 76: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 79: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 82: aload_3 + 83: aload_0 + 84: ifnonnull 91 + 87: aconst_null + 88: goto 98 + 91: aload_0 + 92: ldc_w #1076 // String matches + 95: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 98: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 101: new #469 // class com/google/gson/JsonArray + 104: dup + 105: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 108: astore 4 + 110: aload 4 + 112: aload_0 + 113: ifnonnull 120 + 116: aconst_null + 117: goto 127 + 120: aload_0 + 121: ldc_w #630 // String tag + 124: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 127: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 130: aload 4 + 132: aload_0 + 133: ifnonnull 140 + 136: aconst_null + 137: goto 147 + 140: aload_0 + 141: ldc_w #764 // String tags + 144: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 147: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 150: iload_2 + 151: ifne 171 + 154: aload_3 + 155: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 158: ifne 171 + 161: aload 4 + 163: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 166: ifne 171 + 169: aload_1 + 170: areturn + 171: aload_1 + 172: ldc_w #373 // String enabled + 175: iload_2 + 176: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 179: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 182: iconst_1 + 183: aload_0 + 184: ldc_w #754 // String amount + 187: iconst_1 + 188: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 191: invokestatic #416 // Method java/lang/Math.max:(II)I + 194: istore 5 + 196: iload 5 + 198: iconst_1 + 199: if_icmpeq 214 + 202: aload_1 + 203: ldc_w #754 // String amount + 206: iload 5 + 208: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 211: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 214: aload_0 + 215: ldc_w #756 // String consume + 218: iconst_1 + 219: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 222: ifne 236 + 225: aload_1 + 226: ldc_w #756 // String consume + 229: iconst_0 + 230: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 233: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 236: aload_0 + 237: ldc_w #758 // String bypass_lock + 240: iconst_1 + 241: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 244: ifne 258 + 247: aload_1 + 248: ldc_w #758 // String bypass_lock + 251: iconst_0 + 252: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 255: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 258: aload_0 + 259: ldc_w #760 // String bypass_search + 262: iconst_1 + 263: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 266: ifne 280 + 269: aload_1 + 270: ldc_w #760 // String bypass_search + 273: iconst_0 + 274: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 277: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 280: aload_0 + 281: ifnull 312 + 284: aload_0 + 285: ldc_w #1070 // String consume_in_creative + 288: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 291: ifeq 312 + 294: aload_1 + 295: ldc_w #1070 // String consume_in_creative + 298: aload_0 + 299: ldc_w #1070 // String consume_in_creative + 302: iconst_0 + 303: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 306: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 309: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 312: aload_3 + 313: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 316: ifle 327 + 319: aload_1 + 320: ldc_w #762 // String items + 323: aload_3 + 324: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 327: aload 4 + 329: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 332: ifle 344 + 335: aload_1 + 336: ldc_w #764 // String tags + 339: aload 4 + 341: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 344: aload_1 + 345: areturn + + private static com.google.gson.JsonObject compactRespawn(com.google.gson.JsonObject); + Code: + 0: new #303 // class com/google/gson/JsonObject + 3: dup + 4: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 7: astore_1 + 8: aload_0 + 9: ldc_w #373 // String enabled + 12: iconst_0 + 13: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 16: istore_2 + 17: iload_2 + 18: ifne 23 + 21: aload_1 + 22: areturn + 23: aload_1 + 24: ldc_w #373 // String enabled + 27: iconst_1 + 28: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 31: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 34: aload_1 + 35: ldc_w #410 // String time_ticks + 38: lconst_1 + 39: aload_0 + 40: ldc_w #410 // String time_ticks + 43: ldc2_w #1077 // long 24000l + 46: invokestatic #1082 // Method getLong:(Lcom/google/gson/JsonObject;Ljava/lang/String;J)J + 49: invokestatic #1085 // Method java/lang/Math.max:(JJ)J + 52: invokestatic #1090 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 55: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 58: aload_0 + 59: ldc_w #421 // String only_if_empty + 62: iconst_1 + 63: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 66: ifne 80 + 69: aload_1 + 70: ldc_w #421 // String only_if_empty + 73: iconst_0 + 74: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 77: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 80: aload_1 + 81: ldc_w #423 // String clear_before_respawn + 84: iconst_1 + 85: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 88: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 91: aload_1 + 92: areturn + + private static com.google.gson.JsonArray compactEntries(com.google.gson.JsonArray); + Code: + 0: new #469 // class com/google/gson/JsonArray + 3: dup + 4: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 7: astore_1 + 8: aload_0 + 9: ifnonnull 14 + 12: aload_1 + 13: areturn + 14: aload_0 + 15: invokevirtual #789 // Method com/google/gson/JsonArray.iterator:()Ljava/util/Iterator; + 18: astore_2 + 19: aload_2 + 20: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 25: ifeq 395 + 28: aload_2 + 29: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 34: checkcast #343 // class com/google/gson/JsonElement + 37: astore_3 + 38: aload_3 + 39: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 42: ifne 48 + 45: goto 19 + 48: aload_3 + 49: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 52: astore 4 + 54: new #303 // class com/google/gson/JsonObject + 57: dup + 58: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 61: astore 5 + 63: aload 4 + 65: aload 5 + 67: ldc_w #636 // String item + 70: invokestatic #1135 // Method copyIfPresent:(Lcom/google/gson/JsonObject;Lcom/google/gson/JsonObject;Ljava/lang/String;)V + 73: aload 4 + 75: aload 5 + 77: ldc_w #762 // String items + 80: invokestatic #1135 // Method copyIfPresent:(Lcom/google/gson/JsonObject;Lcom/google/gson/JsonObject;Ljava/lang/String;)V + 83: aload 4 + 85: aload 5 + 87: ldc_w #630 // String tag + 90: invokestatic #1135 // Method copyIfPresent:(Lcom/google/gson/JsonObject;Lcom/google/gson/JsonObject;Ljava/lang/String;)V + 93: aload 4 + 95: aload 5 + 97: ldc_w #764 // String tags + 100: invokestatic #1135 // Method copyIfPresent:(Lcom/google/gson/JsonObject;Lcom/google/gson/JsonObject;Ljava/lang/String;)V + 103: aload 4 + 105: aload 5 + 107: ldc_w #1075 // String match + 110: invokestatic #1135 // Method copyIfPresent:(Lcom/google/gson/JsonObject;Lcom/google/gson/JsonObject;Ljava/lang/String;)V + 113: aload 4 + 115: aload 5 + 117: ldc_w #1076 // String matches + 120: invokestatic #1135 // Method copyIfPresent:(Lcom/google/gson/JsonObject;Lcom/google/gson/JsonObject;Ljava/lang/String;)V + 123: aload 5 + 125: ldc_w #637 // String weight + 128: iconst_1 + 129: aload 4 + 131: ldc_w #637 // String weight + 134: iconst_1 + 135: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 138: invokestatic #416 // Method java/lang/Math.max:(II)I + 141: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 144: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 147: aload 5 + 149: ldc_w #638 // String chance + 152: aload 4 + 154: ldc_w #638 // String chance + 157: dconst_1 + 158: invokestatic #1037 // Method getDouble:(Lcom/google/gson/JsonObject;Ljava/lang/String;D)D + 161: invokestatic #1041 // Method clamp01:(D)D + 164: invokestatic #1046 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double; + 167: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 170: new #303 // class com/google/gson/JsonObject + 173: dup + 174: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 177: astore 6 + 179: aload 4 + 181: ldc_w #646 // String count + 184: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 187: astore 7 + 189: aload 7 + 191: ifnull 253 + 194: aload 7 + 196: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 199: ifeq 253 + 202: aload 7 + 204: invokevirtual #1059 // Method com/google/gson/JsonElement.getAsJsonPrimitive:()Lcom/google/gson/JsonPrimitive; + 207: invokevirtual #1064 // Method com/google/gson/JsonPrimitive.isNumber:()Z + 210: ifeq 253 + 213: iconst_0 + 214: aload 7 + 216: invokevirtual #1138 // Method com/google/gson/JsonElement.getAsInt:()I + 219: invokestatic #416 // Method java/lang/Math.max:(II)I + 222: istore 8 + 224: aload 6 + 226: ldc_w #641 // String min + 229: iload 8 + 231: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 234: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 237: aload 6 + 239: ldc_w #644 // String max + 242: iload 8 + 244: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 247: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 250: goto 335 + 253: aload 7 + 255: ifnull 274 + 258: aload 7 + 260: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 263: ifeq 274 + 266: aload 7 + 268: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 271: goto 275 + 274: aconst_null + 275: astore 8 + 277: iconst_0 + 278: aload 8 + 280: ldc_w #641 // String min + 283: iconst_1 + 284: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 287: invokestatic #416 // Method java/lang/Math.max:(II)I + 290: istore 9 + 292: iload 9 + 294: aload 8 + 296: ldc_w #644 // String max + 299: iload 9 + 301: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 304: invokestatic #416 // Method java/lang/Math.max:(II)I + 307: istore 10 + 309: aload 6 + 311: ldc_w #641 // String min + 314: iload 9 + 316: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 319: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 322: aload 6 + 324: ldc_w #644 // String max + 327: iload 10 + 329: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 332: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 335: aload 5 + 337: ldc_w #646 // String count + 340: aload 6 + 342: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 345: aload 4 + 347: aload 5 + 349: ldc_w #640 // String nbt + 352: invokestatic #1135 // Method copyIfPresent:(Lcom/google/gson/JsonObject;Lcom/google/gson/JsonObject;Ljava/lang/String;)V + 355: aload 4 + 357: ldc_w #733 // String with + 360: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 363: invokestatic #1141 // Method compactLinkedEntries:(Lcom/google/gson/JsonElement;)Lcom/google/gson/JsonArray; + 366: astore 8 + 368: aload 8 + 370: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 373: ifle 386 + 376: aload 5 + 378: ldc_w #733 // String with + 381: aload 8 + 383: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 386: aload_1 + 387: aload 5 + 389: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 392: goto 19 + 395: aload_1 + 396: areturn + + private static com.google.gson.JsonArray compactLinkedEntries(com.google.gson.JsonElement); + Code: + 0: new #469 // class com/google/gson/JsonArray + 3: dup + 4: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 7: astore_1 + 8: aload_0 + 9: ifnull 19 + 12: aload_0 + 13: invokevirtual #1148 // Method com/google/gson/JsonElement.isJsonNull:()Z + 16: ifeq 21 + 19: aload_1 + 20: areturn + 21: aload_0 + 22: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 25: ifeq 36 + 28: aload_0 + 29: invokevirtual #1099 // Method com/google/gson/JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray; + 32: invokestatic #1103 // Method compactEntries:(Lcom/google/gson/JsonArray;)Lcom/google/gson/JsonArray; + 35: areturn + 36: aload_0 + 37: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 40: ifeq 61 + 43: new #469 // class com/google/gson/JsonArray + 46: dup + 47: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 50: astore_2 + 51: aload_2 + 52: aload_0 + 53: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 56: aload_2 + 57: invokestatic #1103 // Method compactEntries:(Lcom/google/gson/JsonArray;)Lcom/google/gson/JsonArray; + 60: areturn + 61: aload_1 + 62: areturn + + private static void appendEntriesArray(java.lang.StringBuilder, com.google.gson.JsonArray); + Code: + 0: aload_1 + 1: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 4: ifne 16 + 7: aload_0 + 8: ldc_w #1152 // String [] + 11: invokevirtual #1158 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 14: pop + 15: return + 16: aload_0 + 17: ldc_w #1160 // String [\n + 20: invokevirtual #1158 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 23: pop + 24: iconst_0 + 25: istore_2 + 26: iload_2 + 27: aload_1 + 28: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 31: if_icmpge 87 + 34: aload_0 + 35: ldc_w #1162 // String + 38: invokevirtual #1158 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 41: getstatic #1164 // Field COMPACT_GSON:Lcom/google/gson/Gson; + 44: aload_1 + 45: iload_2 + 46: invokevirtual #829 // Method com/google/gson/JsonArray.get:(I)Lcom/google/gson/JsonElement; + 49: invokevirtual #1015 // Method com/google/gson/Gson.toJson:(Lcom/google/gson/JsonElement;)Ljava/lang/String; + 52: invokevirtual #1158 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 55: pop + 56: iload_2 + 57: iconst_1 + 58: iadd + 59: aload_1 + 60: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 63: if_icmpge 73 + 66: aload_0 + 67: bipush 44 + 69: invokevirtual #1167 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder; + 72: pop + 73: aload_0 + 74: ldc_w #1169 // String \n + 77: invokevirtual #1158 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 80: pop + 81: iinc 2, 1 + 84: goto 26 + 87: aload_0 + 88: ldc_w #1171 // String ] + 91: invokevirtual #1158 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 94: pop + 95: return + + private static com.google.gson.JsonArray compactPools(com.google.gson.JsonElement); + Code: + 0: new #469 // class com/google/gson/JsonArray + 3: dup + 4: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 7: astore_1 + 8: aload_0 + 9: ifnull 19 + 12: aload_0 + 13: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 16: ifne 21 + 19: aload_1 + 20: areturn + 21: aload_0 + 22: invokevirtual #1099 // Method com/google/gson/JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray; + 25: invokevirtual #789 // Method com/google/gson/JsonArray.iterator:()Ljava/util/Iterator; + 28: astore_2 + 29: aload_2 + 30: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 35: ifeq 493 + 38: aload_2 + 39: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 44: checkcast #343 // class com/google/gson/JsonElement + 47: astore_3 + 48: aload_3 + 49: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 52: ifne 58 + 55: goto 29 + 58: aload_3 + 59: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 62: astore 4 + 64: new #303 // class com/google/gson/JsonObject + 67: dup + 68: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 71: astore 5 + 73: aload 4 + 75: ldc_w #348 // String id + 78: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 81: ifeq 137 + 84: aload 4 + 86: ldc_w #348 // String id + 89: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 92: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 95: ifeq 137 + 98: aload 4 + 100: ldc_w #348 // String id + 103: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 106: invokevirtual #538 // Method com/google/gson/JsonElement.getAsString:()Ljava/lang/String; + 109: astore 6 + 111: aload 6 + 113: ifnull 137 + 116: aload 6 + 118: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 121: ifne 137 + 124: aload 5 + 126: ldc_w #348 // String id + 129: aload 6 + 131: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 134: invokevirtual #352 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/String;)V + 137: new #303 // class com/google/gson/JsonObject + 140: dup + 141: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 144: astore 6 + 146: aload 4 + 148: ldc_w #744 // String rolls + 151: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 154: astore 7 + 156: aload 7 + 158: ifnull 220 + 161: aload 7 + 163: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 166: ifeq 220 + 169: aload 7 + 171: invokevirtual #1059 // Method com/google/gson/JsonElement.getAsJsonPrimitive:()Lcom/google/gson/JsonPrimitive; + 174: invokevirtual #1064 // Method com/google/gson/JsonPrimitive.isNumber:()Z + 177: ifeq 220 + 180: iconst_0 + 181: aload 7 + 183: invokevirtual #1138 // Method com/google/gson/JsonElement.getAsInt:()I + 186: invokestatic #416 // Method java/lang/Math.max:(II)I + 189: istore 8 + 191: aload 6 + 193: ldc_w #641 // String min + 196: iload 8 + 198: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 201: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 204: aload 6 + 206: ldc_w #644 // String max + 209: iload 8 + 211: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 214: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 217: goto 278 + 220: aload 4 + 222: ldc_w #744 // String rolls + 225: invokestatic #1021 // Method getObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 228: astore 8 + 230: aload 6 + 232: ldc_w #641 // String min + 235: iconst_0 + 236: aload 8 + 238: ldc_w #641 // String min + 241: iconst_1 + 242: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 245: invokestatic #416 // Method java/lang/Math.max:(II)I + 248: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 251: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 254: aload 6 + 256: ldc_w #644 // String max + 259: iconst_0 + 260: aload 8 + 262: ldc_w #644 // String max + 265: iconst_1 + 266: invokestatic #1025 // Method getInt:(Lcom/google/gson/JsonObject;Ljava/lang/String;I)I + 269: invokestatic #416 // Method java/lang/Math.max:(II)I + 272: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 275: invokevirtual #419 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Number;)V + 278: aload 5 + 280: ldc_w #744 // String rolls + 283: aload 6 + 285: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 288: aload 4 + 290: ldc_w #746 // String allow_duplicates + 293: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 296: ifeq 335 + 299: aload 4 + 301: ldc_w #746 // String allow_duplicates + 304: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 307: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 310: ifeq 335 + 313: aload 5 + 315: ldc_w #746 // String allow_duplicates + 318: aload 4 + 320: ldc_w #746 // String allow_duplicates + 323: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 326: invokevirtual #1177 // Method com/google/gson/JsonElement.getAsBoolean:()Z + 329: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 332: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 335: aload 4 + 337: ldc_w #456 // String loot_tables + 340: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 343: invokestatic #1094 // Method compactStringArray:(Lcom/google/gson/JsonElement;)Lcom/google/gson/JsonArray; + 346: astore 8 + 348: aload 8 + 350: aload 4 + 352: ldc_w #1096 // String loot_table + 355: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 358: invokestatic #1074 // Method appendStrings:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 361: aload 8 + 363: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 366: ifle 379 + 369: aload 5 + 371: ldc_w #456 // String loot_tables + 374: aload 8 + 376: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 379: aload 4 + 381: ldc_w #621 // String entries + 384: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 387: astore 9 + 389: aload 9 + 391: ifnull 410 + 394: aload 9 + 396: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 399: ifeq 410 + 402: aload 9 + 404: invokevirtual #1099 // Method com/google/gson/JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray; + 407: goto 411 + 410: aconst_null + 411: invokestatic #1103 // Method compactEntries:(Lcom/google/gson/JsonArray;)Lcom/google/gson/JsonArray; + 414: astore 10 + 416: aload 5 + 418: ldc_w #621 // String entries + 421: aload 10 + 423: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 426: aload 5 + 428: ldc_w #348 // String id + 431: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 434: ifeq 468 + 437: aload 5 + 439: ldc_w #348 // String id + 442: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 445: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 448: ifeq 468 + 451: aload 5 + 453: ldc_w #348 // String id + 456: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 459: invokevirtual #538 // Method com/google/gson/JsonElement.getAsString:()Ljava/lang/String; + 462: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 465: ifeq 484 + 468: aload 10 + 470: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 473: ifgt 484 + 476: aload 8 + 478: invokevirtual #731 // Method com/google/gson/JsonArray.size:()I + 481: ifle 490 + 484: aload_1 + 485: aload 5 + 487: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 490: goto 29 + 493: aload_1 + 494: areturn + + private static com.google.gson.JsonArray compactStringArray(com.google.gson.JsonElement); + Code: + 0: new #469 // class com/google/gson/JsonArray + 3: dup + 4: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 7: astore_1 + 8: aload_0 + 9: ifnull 19 + 12: aload_0 + 13: invokevirtual #1148 // Method com/google/gson/JsonElement.isJsonNull:()Z + 16: ifeq 21 + 19: aload_1 + 20: areturn + 21: aload_0 + 22: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 25: ifeq 65 + 28: aload_0 + 29: invokevirtual #1099 // Method com/google/gson/JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray; + 32: invokevirtual #789 // Method com/google/gson/JsonArray.iterator:()Ljava/util/Iterator; + 35: astore_2 + 36: aload_2 + 37: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 42: ifeq 63 + 45: aload_2 + 46: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 51: checkcast #343 // class com/google/gson/JsonElement + 54: astore_3 + 55: aload_1 + 56: aload_3 + 57: invokestatic #1181 // Method addString:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 60: goto 36 + 63: aload_1 + 64: areturn + 65: aload_1 + 66: aload_0 + 67: invokestatic #1181 // Method addString:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 70: aload_1 + 71: areturn + + private static void appendStrings(com.google.gson.JsonArray, com.google.gson.JsonElement); + Code: + 0: aload_1 + 1: ifnull 11 + 4: aload_1 + 5: invokevirtual #1148 // Method com/google/gson/JsonElement.isJsonNull:()Z + 8: ifeq 12 + 11: return + 12: aload_1 + 13: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 16: ifeq 55 + 19: aload_1 + 20: invokevirtual #1099 // Method com/google/gson/JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray; + 23: invokevirtual #789 // Method com/google/gson/JsonArray.iterator:()Ljava/util/Iterator; + 26: astore_2 + 27: aload_2 + 28: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 33: ifeq 54 + 36: aload_2 + 37: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 42: checkcast #343 // class com/google/gson/JsonElement + 45: astore_3 + 46: aload_0 + 47: aload_3 + 48: invokestatic #1181 // Method addString:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 51: goto 27 + 54: return + 55: aload_0 + 56: aload_1 + 57: invokestatic #1181 // Method addString:(Lcom/google/gson/JsonArray;Lcom/google/gson/JsonElement;)V + 60: return + + private static void addString(com.google.gson.JsonArray, com.google.gson.JsonElement); + Code: + 0: aload_1 + 1: ifnull 11 + 4: aload_1 + 5: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 8: ifne 12 + 11: return + 12: aload_1 + 13: invokevirtual #538 // Method com/google/gson/JsonElement.getAsString:()Ljava/lang/String; + 16: astore_2 + 17: aload_2 + 18: ifnull 36 + 21: aload_2 + 22: invokevirtual #454 // Method java/lang/String.isBlank:()Z + 25: ifne 36 + 28: aload_0 + 29: aload_2 + 30: invokevirtual #503 // Method java/lang/String.trim:()Ljava/lang/String; + 33: invokevirtual #477 // Method com/google/gson/JsonArray.add:(Ljava/lang/String;)V + 36: return + + private static com.google.gson.JsonElement firstExisting(com.google.gson.JsonObject, java.lang.String...); + Code: + 0: aload_0 + 1: ifnonnull 6 + 4: aconst_null + 5: areturn + 6: aload_1 + 7: astore_2 + 8: aload_2 + 9: arraylength + 10: istore_3 + 11: iconst_0 + 12: istore 4 + 14: iload 4 + 16: iload_3 + 17: if_icmpge 48 + 20: aload_2 + 21: iload 4 + 23: aaload + 24: astore 5 + 26: aload_0 + 27: aload 5 + 29: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 32: ifeq 42 + 35: aload_0 + 36: aload 5 + 38: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 41: areturn + 42: iinc 4, 1 + 45: goto 14 + 48: aconst_null + 49: areturn + + private static void copyIfPresent(com.google.gson.JsonObject, com.google.gson.JsonObject, java.lang.String); + Code: + 0: aload_0 + 1: aload_2 + 2: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 5: ifeq 18 + 8: aload_1 + 9: aload_2 + 10: aload_0 + 11: aload_2 + 12: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 15: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 18: return + + private static com.google.gson.JsonObject getObject(com.google.gson.JsonObject, java.lang.String); + Code: + 0: aload_0 + 1: ifnull 29 + 4: aload_0 + 5: aload_1 + 6: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 9: ifeq 29 + 12: aload_0 + 13: aload_1 + 14: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 17: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 20: ifeq 29 + 23: aload_0 + 24: aload_1 + 25: invokevirtual #1190 // Method com/google/gson/JsonObject.getAsJsonObject:(Ljava/lang/String;)Lcom/google/gson/JsonObject; + 28: areturn + 29: aconst_null + 30: areturn + + private static boolean getSearchEnabled(com.google.gson.JsonObject); + Code: + 0: aload_0 + 1: ldc_w #371 // String search + 4: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 7: astore_1 + 8: aload_1 + 9: ifnull 19 + 12: aload_1 + 13: invokevirtual #1148 // Method com/google/gson/JsonElement.isJsonNull:()Z + 16: ifeq 21 + 19: iconst_1 + 20: ireturn + 21: aload_1 + 22: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 25: ifeq 43 + 28: aload_1 + 29: invokevirtual #1059 // Method com/google/gson/JsonElement.getAsJsonPrimitive:()Lcom/google/gson/JsonPrimitive; + 32: invokevirtual #1193 // Method com/google/gson/JsonPrimitive.isBoolean:()Z + 35: ifeq 43 + 38: aload_1 + 39: invokevirtual #1177 // Method com/google/gson/JsonElement.getAsBoolean:()Z + 42: ireturn + 43: aload_1 + 44: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 47: ifeq 62 + 50: aload_1 + 51: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 54: ldc_w #373 // String enabled + 57: iconst_1 + 58: invokestatic #1033 // Method getBoolean:(Lcom/google/gson/JsonObject;Ljava/lang/String;Z)Z + 61: ireturn + 62: iconst_1 + 63: ireturn + + private static java.lang.String getString(com.google.gson.JsonObject, java.lang.String, java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 5: ifeq 30 + 8: aload_0 + 9: aload_1 + 10: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 13: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 16: ifeq 30 + 19: aload_0 + 20: aload_1 + 21: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 24: invokevirtual #538 // Method com/google/gson/JsonElement.getAsString:()Ljava/lang/String; + 27: goto 31 + 30: aload_2 + 31: areturn + + private static boolean getBoolean(com.google.gson.JsonObject, java.lang.String, boolean); + Code: + 0: aload_0 + 1: ifnull 34 + 4: aload_0 + 5: aload_1 + 6: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 9: ifeq 34 + 12: aload_0 + 13: aload_1 + 14: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 17: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 20: ifeq 34 + 23: aload_0 + 24: aload_1 + 25: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 28: invokevirtual #1177 // Method com/google/gson/JsonElement.getAsBoolean:()Z + 31: goto 35 + 34: iload_2 + 35: ireturn + + private static int getInt(com.google.gson.JsonObject, java.lang.String, int); + Code: + 0: aload_0 + 1: ifnull 34 + 4: aload_0 + 5: aload_1 + 6: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 9: ifeq 34 + 12: aload_0 + 13: aload_1 + 14: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 17: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 20: ifeq 34 + 23: aload_0 + 24: aload_1 + 25: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 28: invokevirtual #1138 // Method com/google/gson/JsonElement.getAsInt:()I + 31: goto 35 + 34: iload_2 + 35: ireturn + + private static long getLong(com.google.gson.JsonObject, java.lang.String, long); + Code: + 0: aload_0 + 1: ifnull 34 + 4: aload_0 + 5: aload_1 + 6: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 9: ifeq 34 + 12: aload_0 + 13: aload_1 + 14: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 17: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 20: ifeq 34 + 23: aload_0 + 24: aload_1 + 25: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 28: invokevirtual #1198 // Method com/google/gson/JsonElement.getAsLong:()J + 31: goto 35 + 34: lload_2 + 35: lreturn + + private static double getDouble(com.google.gson.JsonObject, java.lang.String, double); + Code: + 0: aload_0 + 1: ifnull 34 + 4: aload_0 + 5: aload_1 + 6: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 9: ifeq 34 + 12: aload_0 + 13: aload_1 + 14: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 17: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 20: ifeq 34 + 23: aload_0 + 24: aload_1 + 25: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 28: invokevirtual #1068 // Method com/google/gson/JsonElement.getAsDouble:()D + 31: goto 35 + 34: dload_2 + 35: dreturn + + private static double clamp01(double); + Code: + 0: dconst_0 + 1: dconst_1 + 2: dload_0 + 3: invokestatic #1201 // Method java/lang/Math.min:(DD)D + 6: invokestatic #1203 // Method java/lang/Math.max:(DD)D + 9: dreturn + + private static com.google.gson.JsonElement normalizeNumbers(com.google.gson.JsonElement); + Code: + 0: aload_0 + 1: ifnull 11 + 4: aload_0 + 5: invokevirtual #1148 // Method com/google/gson/JsonElement.isJsonNull:()Z + 8: ifeq 13 + 11: aload_0 + 12: areturn + 13: aload_0 + 14: invokevirtual #1055 // Method com/google/gson/JsonElement.isJsonPrimitive:()Z + 17: ifeq 90 + 20: aload_0 + 21: invokevirtual #1059 // Method com/google/gson/JsonElement.getAsJsonPrimitive:()Lcom/google/gson/JsonPrimitive; + 24: astore_1 + 25: aload_1 + 26: invokevirtual #1064 // Method com/google/gson/JsonPrimitive.isNumber:()Z + 29: ifne 34 + 32: aload_1 + 33: areturn + 34: aload_1 + 35: invokevirtual #1204 // Method com/google/gson/JsonPrimitive.getAsDouble:()D + 38: dstore_2 + 39: dload_2 + 40: invokestatic #1208 // Method java/lang/Double.isFinite:(D)Z + 43: ifne 48 + 46: aload_1 + 47: areturn + 48: dload_2 + 49: invokestatic #1213 // Method java/math/BigDecimal.valueOf:(D)Ljava/math/BigDecimal; + 52: iconst_3 + 53: getstatic #1219 // Field java/math/RoundingMode.HALF_UP:Ljava/math/RoundingMode; + 56: invokevirtual #1223 // Method java/math/BigDecimal.setScale:(ILjava/math/RoundingMode;)Ljava/math/BigDecimal; + 59: invokevirtual #1227 // Method java/math/BigDecimal.stripTrailingZeros:()Ljava/math/BigDecimal; + 62: astore 4 + 64: aload 4 + 66: invokevirtual #1230 // Method java/math/BigDecimal.scale:()I + 69: ifge 80 + 72: aload 4 + 74: iconst_0 + 75: invokevirtual #1233 // Method java/math/BigDecimal.setScale:(I)Ljava/math/BigDecimal; + 78: astore 4 + 80: new #1061 // class com/google/gson/JsonPrimitive + 83: dup + 84: aload 4 + 86: invokespecial #1128 // Method com/google/gson/JsonPrimitive."":(Ljava/lang/Number;)V + 89: areturn + 90: aload_0 + 91: invokevirtual #463 // Method com/google/gson/JsonElement.isJsonArray:()Z + 94: ifeq 145 + 97: new #469 // class com/google/gson/JsonArray + 100: dup + 101: invokespecial #470 // Method com/google/gson/JsonArray."":()V + 104: astore_1 + 105: aload_0 + 106: invokevirtual #1099 // Method com/google/gson/JsonElement.getAsJsonArray:()Lcom/google/gson/JsonArray; + 109: invokevirtual #789 // Method com/google/gson/JsonArray.iterator:()Ljava/util/Iterator; + 112: astore_2 + 113: aload_2 + 114: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 119: ifeq 143 + 122: aload_2 + 123: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 128: checkcast #343 // class com/google/gson/JsonElement + 131: astore_3 + 132: aload_1 + 133: aload_3 + 134: invokestatic #1009 // Method normalizeNumbers:(Lcom/google/gson/JsonElement;)Lcom/google/gson/JsonElement; + 137: invokevirtual #649 // Method com/google/gson/JsonArray.add:(Lcom/google/gson/JsonElement;)V + 140: goto 113 + 143: aload_1 + 144: areturn + 145: aload_0 + 146: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 149: ifeq 222 + 152: new #303 // class com/google/gson/JsonObject + 155: dup + 156: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 159: astore_1 + 160: aload_0 + 161: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 164: invokevirtual #1237 // Method com/google/gson/JsonObject.entrySet:()Ljava/util/Set; + 167: invokeinterface #1240, 1 // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator; + 172: astore_2 + 173: aload_2 + 174: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 179: ifeq 220 + 182: aload_2 + 183: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 188: checkcast #13 // class java/util/Map$Entry + 191: astore_3 + 192: aload_1 + 193: aload_3 + 194: invokeinterface #1243, 1 // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object; + 199: checkcast #243 // class java/lang/String + 202: aload_3 + 203: invokeinterface #1246, 1 // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object; + 208: checkcast #343 // class com/google/gson/JsonElement + 211: invokestatic #1009 // Method normalizeNumbers:(Lcom/google/gson/JsonElement;)Lcom/google/gson/JsonElement; + 214: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 217: goto 173 + 220: aload_1 + 221: areturn + 222: aload_0 + 223: areturn + + private static java.lang.String cleanWholeNumberDecimals(java.lang.String); + Code: + 0: aload_0 + 1: ldc_w #1254 // String (?<=: )(-?\\d+)\\.0(?=[,\\r\\n]) + 4: ldc_w #1256 // String $1 + 7: invokevirtual #1259 // Method java/lang/String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 10: areturn + + private static void appendQuoted(java.lang.StringBuilder, java.lang.String); + Code: + 0: aload_0 + 1: getstatic #1164 // Field COMPACT_GSON:Lcom/google/gson/Gson; + 4: aload_1 + 5: invokevirtual #1265 // Method com/google/gson/Gson.toJson:(Ljava/lang/Object;)Ljava/lang/String; + 8: invokevirtual #1158 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 11: pop + 12: return + + private static boolean updateRootBoolean(java.lang.String, java.lang.String, boolean); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore_3 + 13: aload_3 + 14: ifnonnull 19 + 17: iconst_0 + 18: ireturn + 19: aload_3 + 20: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 23: astore 4 + 25: aload 4 + 27: aload_1 + 28: iload_2 + 29: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 32: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 35: aload_3 + 36: aload 4 + 38: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 41: invokestatic #301 // Method reload:()V + 44: iconst_1 + 45: ireturn + 46: astore 4 + 48: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 51: ldc_w #1267 // String Could not update \'{}\' for loot config \'{}\'. + 54: iconst_3 + 55: anewarray #4 // class java/lang/Object + 58: dup + 59: iconst_0 + 60: aload_1 + 61: aastore + 62: dup + 63: iconst_1 + 64: aload_0 + 65: aastore + 66: dup + 67: iconst_2 + 68: aload 4 + 70: aastore + 71: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 76: iconst_0 + 77: ireturn + Exception table: + from to target type + 19 45 46 Class java/lang/Exception + + private static boolean updateBooleanInObject(java.lang.String, java.lang.String, java.lang.String, boolean); + Code: + 0: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #86 // class java/nio/file/Path + 12: astore 4 + 14: aload 4 + 16: ifnonnull 21 + 19: iconst_0 + 20: ireturn + 21: aload 4 + 23: invokestatic #394 // Method readConfigObject:(Ljava/nio/file/Path;)Lcom/google/gson/JsonObject; + 26: astore 5 + 28: aload 5 + 30: aload_1 + 31: invokestatic #400 // Method getOrCreateObject:(Lcom/google/gson/JsonObject;Ljava/lang/String;)Lcom/google/gson/JsonObject; + 34: astore 6 + 36: aload 6 + 38: aload_2 + 39: iload_3 + 40: invokestatic #405 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 43: invokevirtual #408 // Method com/google/gson/JsonObject.addProperty:(Ljava/lang/String;Ljava/lang/Boolean;)V + 46: aload 4 + 48: aload 5 + 50: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 53: invokestatic #301 // Method reload:()V + 56: iconst_1 + 57: ireturn + 58: astore 5 + 60: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 63: ldc_w #1269 // String Could not update \'{}.{}\' for loot config \'{}\'. + 66: iconst_4 + 67: anewarray #4 // class java/lang/Object + 70: dup + 71: iconst_0 + 72: aload_1 + 73: aastore + 74: dup + 75: iconst_1 + 76: aload_2 + 77: aastore + 78: dup + 79: iconst_2 + 80: aload_0 + 81: aastore + 82: dup + 83: iconst_3 + 84: aload 5 + 86: aastore + 87: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 92: iconst_0 + 93: ireturn + Exception table: + from to target type + 21 57 58 Class java/lang/Exception + + private static com.google.gson.JsonObject getOrCreateObject(com.google.gson.JsonObject, java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #457 // Method com/google/gson/JsonObject.has:(Ljava/lang/String;)Z + 5: ifeq 25 + 8: aload_0 + 9: aload_1 + 10: invokevirtual #460 // Method com/google/gson/JsonObject.get:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 13: invokevirtual #792 // Method com/google/gson/JsonElement.isJsonObject:()Z + 16: ifeq 25 + 19: aload_0 + 20: aload_1 + 21: invokevirtual #1190 // Method com/google/gson/JsonObject.getAsJsonObject:(Ljava/lang/String;)Lcom/google/gson/JsonObject; + 24: areturn + 25: new #303 // class com/google/gson/JsonObject + 28: dup + 29: invokespecial #622 // Method com/google/gson/JsonObject."":()V + 32: astore_2 + 33: aload_0 + 34: aload_1 + 35: aload_2 + 36: invokevirtual #474 // Method com/google/gson/JsonObject.add:(Ljava/lang/String;Lcom/google/gson/JsonElement;)V + 39: aload_2 + 40: areturn + + private static void loadConfig(java.nio.file.Path); + Code: + 0: aload_0 + 1: invokeinterface #956, 1 // InterfaceMethod java/nio/file/Path.getFileName:()Ljava/nio/file/Path; + 6: invokeinterface #957, 1 // InterfaceMethod java/nio/file/Path.toString:()Ljava/lang/String; + 11: astore_1 + 12: aload_1 + 13: iconst_0 + 14: aload_1 + 15: invokevirtual #1275 // Method java/lang/String.length:()I + 18: ldc_w #1277 // String .json + 21: invokevirtual #1275 // Method java/lang/String.length:()I + 24: isub + 25: invokevirtual #1280 // Method java/lang/String.substring:(II)Ljava/lang/String; + 28: astore_2 + 29: aload_0 + 30: invokestatic #533 // Method java/nio/file/Files.size:(Ljava/nio/file/Path;)J + 33: ldc2_w #1281 // long 8388608l + 36: lcmp + 37: ifle 53 + 40: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 43: ldc_w #1284 // String Ignoring oversized loot crate config (over 8 MiB): {} + 46: aload_0 + 47: invokeinterface #1286, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V + 52: return + 53: goto 71 + 56: astore_3 + 57: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 60: ldc_w #1288 // String Could not inspect loot crate config size: {} + 63: aload_0 + 64: aload_3 + 65: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 70: return + 71: aload_0 + 72: invokestatic #335 // Method java/nio/file/Files.newBufferedReader:(Ljava/nio/file/Path;)Ljava/io/BufferedReader; + 75: astore_3 + 76: aload_3 + 77: invokestatic #341 // Method com/google/gson/JsonParser.parseReader:(Ljava/io/Reader;)Lcom/google/gson/JsonElement; + 80: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 83: astore 4 + 85: aload_2 + 86: aload 4 + 88: invokestatic #1292 // Method com/ogaba/sa_decor/common/loot/DecorLootConfig.fromJson:(Ljava/lang/String;Lcom/google/gson/JsonObject;)Lcom/ogaba/sa_decor/common/loot/DecorLootConfig; + 91: astore 5 + 93: aload 5 + 95: invokevirtual #1295 // Method com/ogaba/sa_decor/common/loot/DecorLootConfig.isValid:()Z + 98: ifne 122 + 101: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 104: ldc_w #1297 // String Ignoring invalid loot crate config: {} + 107: aload_0 + 108: invokeinterface #1286, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V + 113: aload_3 + 114: ifnull 121 + 117: aload_3 + 118: invokevirtual #358 // Method java/io/Reader.close:()V + 121: return + 122: getstatic #52 // Field CONFIGS:Ljava/util/Map; + 125: aload 5 + 127: invokevirtual #1299 // Method com/ogaba/sa_decor/common/loot/DecorLootConfig.id:()Ljava/lang/String; + 130: invokeinterface #230, 2 // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z + 135: ifeq 190 + 138: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 141: ldc_w #1301 // String Ignoring duplicate loot profile id \'{}\' from {} (already loaded from {}). + 144: iconst_3 + 145: anewarray #4 // class java/lang/Object + 148: dup + 149: iconst_0 + 150: aload 5 + 152: invokevirtual #1299 // Method com/ogaba/sa_decor/common/loot/DecorLootConfig.id:()Ljava/lang/String; + 155: aastore + 156: dup + 157: iconst_1 + 158: aload_0 + 159: aastore + 160: dup + 161: iconst_2 + 162: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 165: aload 5 + 167: invokevirtual #1299 // Method com/ogaba/sa_decor/common/loot/DecorLootConfig.id:()Ljava/lang/String; + 170: invokeinterface #217, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 175: aastore + 176: invokeinterface #308, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V + 181: aload_3 + 182: ifnull 189 + 185: aload_3 + 186: invokevirtual #358 // Method java/io/Reader.close:()V + 189: return + 190: getstatic #52 // Field CONFIGS:Ljava/util/Map; + 193: aload 5 + 195: invokevirtual #1299 // Method com/ogaba/sa_decor/common/loot/DecorLootConfig.id:()Ljava/lang/String; + 198: aload 5 + 200: invokeinterface #1305, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 205: pop + 206: getstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 209: aload 5 + 211: invokevirtual #1299 // Method com/ogaba/sa_decor/common/loot/DecorLootConfig.id:()Ljava/lang/String; + 214: aload_0 + 215: invokeinterface #1305, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 220: pop + 221: aload_3 + 222: ifnull 257 + 225: aload_3 + 226: invokevirtual #358 // Method java/io/Reader.close:()V + 229: goto 257 + 232: astore 4 + 234: aload_3 + 235: ifnull 254 + 238: aload_3 + 239: invokevirtual #358 // Method java/io/Reader.close:()V + 242: goto 254 + 245: astore 5 + 247: aload 4 + 249: aload 5 + 251: invokevirtual #185 // Method java/lang/Throwable.addSuppressed:(Ljava/lang/Throwable;)V + 254: aload 4 + 256: athrow + 257: goto 274 + 260: astore_3 + 261: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 264: ldc_w #1307 // String Could not load loot crate config: {} + 267: aload_0 + 268: aload_3 + 269: invokeinterface #100, 4 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + 274: return + Exception table: + from to target type + 29 52 56 Class java/io/IOException + 76 113 232 Class java/lang/Throwable + 122 181 232 Class java/lang/Throwable + 190 221 232 Class java/lang/Throwable + 238 242 245 Class java/lang/Throwable + 71 121 260 Class java/lang/Exception + 122 189 260 Class java/lang/Exception + 190 257 260 Class java/lang/Exception + + private static void initializeDefaultProfilesOnce(java.nio.file.Path, boolean) throws java.io.IOException; + Code: + 0: aload_0 + 1: invokestatic #1315 // Method defaultProfilesInitializedMarker:(Ljava/nio/file/Path;)Ljava/nio/file/Path; + 4: astore_2 + 5: aload_2 + 6: iconst_0 + 7: anewarray #68 // class java/nio/file/LinkOption + 10: invokestatic #235 // Method java/nio/file/Files.isRegularFile:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 13: ifeq 17 + 16: return + 17: iconst_0 + 18: istore_3 + 19: iload_1 + 20: ifne 28 + 23: aload_0 + 24: invokestatic #1319 // Method createExampleConfigsIfMissing:(Ljava/nio/file/Path;)I + 27: istore_3 + 28: aload_2 + 29: invokeinterface #355, 1 // InterfaceMethod java/nio/file/Path.getParent:()Ljava/nio/file/Path; + 34: iconst_0 + 35: anewarray #76 // class java/nio/file/attribute/FileAttribute + 38: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 41: pop + 42: aload_2 + 43: ldc_w #1321 // String SA Decor loot-crate example profiles initialized.\nDelete any/all JSON profiles freely; reload will not recreate them.\nUse /sa_decor loot restore_defaults to restore missing examples.\n + 46: iconst_0 + 47: anewarray #965 // class java/nio/file/OpenOption + 50: invokestatic #1325 // Method java/nio/file/Files.writeString:(Ljava/nio/file/Path;Ljava/lang/CharSequence;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path; + 53: pop + 54: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 57: ldc_w #1327 // String Loot crate default profiles initialized ({} example profile(s) created). + 60: iload_3 + 61: invokestatic #199 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 64: invokeinterface #203, 3 // InterfaceMethod org/slf4j/Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V + 69: return + + public static int restoreDefaultProfiles(); + Code: + 0: invokestatic #66 // Method getLootCrateConfigDirectory:()Ljava/nio/file/Path; + 3: astore_0 + 4: aload_0 + 5: iconst_0 + 6: anewarray #76 // class java/nio/file/attribute/FileAttribute + 9: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 12: pop + 13: aload_0 + 14: invokestatic #1319 // Method createExampleConfigsIfMissing:(Ljava/nio/file/Path;)I + 17: istore_1 + 18: aload_0 + 19: invokestatic #1315 // Method defaultProfilesInitializedMarker:(Ljava/nio/file/Path;)Ljava/nio/file/Path; + 22: astore_2 + 23: aload_2 + 24: invokeinterface #355, 1 // InterfaceMethod java/nio/file/Path.getParent:()Ljava/nio/file/Path; + 29: iconst_0 + 30: anewarray #76 // class java/nio/file/attribute/FileAttribute + 33: invokestatic #80 // Method java/nio/file/Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + 36: pop + 37: aload_2 + 38: iconst_0 + 39: anewarray #68 // class java/nio/file/LinkOption + 42: invokestatic #291 // Method java/nio/file/Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 45: ifne 60 + 48: aload_2 + 49: ldc_w #1321 // String SA Decor loot-crate example profiles initialized.\nDelete any/all JSON profiles freely; reload will not recreate them.\nUse /sa_decor loot restore_defaults to restore missing examples.\n + 52: iconst_0 + 53: anewarray #965 // class java/nio/file/OpenOption + 56: invokestatic #1325 // Method java/nio/file/Files.writeString:(Ljava/nio/file/Path;Ljava/lang/CharSequence;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path; + 59: pop + 60: invokestatic #301 // Method reload:()V + 63: iload_1 + 64: ireturn + 65: astore_1 + 66: getstatic #92 // Field com/ogaba/sa_decor/SADecor.LOGGER:Lorg/slf4j/Logger; + 69: ldc_w #1332 // String Could not restore Survivors Arsenal loot crate default profiles. + 72: aload_1 + 73: invokeinterface #1335, 3 // InterfaceMethod org/slf4j/Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V + 78: iconst_m1 + 79: ireturn + Exception table: + from to target type + 4 64 65 Class java/io/IOException + + private static java.nio.file.Path defaultProfilesInitializedMarker(java.nio.file.Path); + Code: + 0: aload_0 + 1: invokeinterface #355, 1 // InterfaceMethod java/nio/file/Path.getParent:()Ljava/nio/file/Path; + 6: astore_1 + 7: aload_1 + 8: ifnonnull 15 + 11: aload_0 + 12: goto 16 + 15: aload_1 + 16: ldc #31 // String .loot_crate_defaults_initialized + 18: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 23: areturn + + private static int createExampleConfigsIfMissing(java.nio.file.Path) throws java.io.IOException; + Code: + 0: iconst_0 + 1: istore_1 + 2: invokestatic #1341 // Method com/ogaba/sa_decor/common/loot/DecorLootDefaultProfiles.createDefaultConfigs:()Ljava/util/Map; + 5: invokeinterface #1342, 1 // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set; + 10: invokeinterface #1240, 1 // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator; + 15: astore_2 + 16: aload_2 + 17: invokeinterface #602, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 22: ifeq 89 + 25: aload_2 + 26: invokeinterface #606, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 31: checkcast #13 // class java/util/Map$Entry + 34: astore_3 + 35: aload_0 + 36: aload_3 + 37: invokeinterface #1243, 1 // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object; + 42: checkcast #243 // class java/lang/String + 45: invokedynamic #284, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 50: invokeinterface #288, 2 // InterfaceMethod java/nio/file/Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path; + 55: astore 4 + 57: aload 4 + 59: iconst_0 + 60: anewarray #68 // class java/nio/file/LinkOption + 63: invokestatic #291 // Method java/nio/file/Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 66: ifne 86 + 69: aload 4 + 71: aload_3 + 72: invokeinterface #1246, 1 // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object; + 77: checkcast #303 // class com/google/gson/JsonObject + 80: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 83: iinc 1, 1 + 86: goto 16 + 89: iload_1 + 90: ireturn + + private static void writeExample(java.nio.file.Path, java.lang.String) throws java.io.IOException; + Code: + 0: aload_1 + 1: invokestatic #509 // Method com/google/gson/JsonParser.parseString:(Ljava/lang/String;)Lcom/google/gson/JsonElement; + 4: invokevirtual #347 // Method com/google/gson/JsonElement.getAsJsonObject:()Lcom/google/gson/JsonObject; + 7: astore_2 + 8: aload_0 + 9: aload_2 + 10: invokestatic #299 // Method writeConfigObject:(Ljava/nio/file/Path;Lcom/google/gson/JsonObject;)V + 13: return + + private static java.lang.String lambda$exportedProfileIds$6(java.lang.String); + Code: + 0: aload_0 + 1: iconst_0 + 2: aload_0 + 3: invokevirtual #1275 // Method java/lang/String.length:()I + 6: iconst_5 + 7: isub + 8: invokevirtual #1280 // Method java/lang/String.substring:(II)Ljava/lang/String; + 11: areturn + + private static boolean lambda$exportedProfileIds$5(java.lang.String); + Code: + 0: aload_0 + 1: ldc_w #1277 // String .json + 4: invokevirtual #1349 // Method java/lang/String.endsWith:(Ljava/lang/String;)Z + 7: ireturn + + private static java.lang.String lambda$exportedProfileIds$4(java.nio.file.Path); + Code: + 0: aload_0 + 1: invokeinterface #956, 1 // InterfaceMethod java/nio/file/Path.getFileName:()Ljava/nio/file/Path; + 6: invokeinterface #957, 1 // InterfaceMethod java/nio/file/Path.toString:()Ljava/lang/String; + 11: areturn + + private static boolean lambda$exportedProfileIds$3(java.nio.file.Path); + Code: + 0: aload_0 + 1: iconst_0 + 2: anewarray #68 // class java/nio/file/LinkOption + 5: invokestatic #235 // Method java/nio/file/Files.isRegularFile:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 8: ireturn + + private static java.lang.String lambda$reload$2(java.nio.file.Path); + Code: + 0: aload_0 + 1: invokeinterface #956, 1 // InterfaceMethod java/nio/file/Path.getFileName:()Ljava/nio/file/Path; + 6: invokeinterface #957, 1 // InterfaceMethod java/nio/file/Path.toString:()Ljava/lang/String; + 11: areturn + + private static boolean lambda$reload$1(java.nio.file.Path); + Code: + 0: aload_0 + 1: invokeinterface #956, 1 // InterfaceMethod java/nio/file/Path.getFileName:()Ljava/nio/file/Path; + 6: invokeinterface #957, 1 // InterfaceMethod java/nio/file/Path.toString:()Ljava/lang/String; + 11: ldc_w #1277 // String .json + 14: invokevirtual #1349 // Method java/lang/String.endsWith:(Ljava/lang/String;)Z + 17: ireturn + + private static boolean lambda$reload$0(java.nio.file.Path); + Code: + 0: aload_0 + 1: iconst_0 + 2: anewarray #68 // class java/nio/file/LinkOption + 5: invokestatic #235 // Method java/nio/file/Files.isRegularFile:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z + 8: ireturn + + static {}; + Code: + 0: new #1353 // class com/google/gson/GsonBuilder + 3: dup + 4: invokespecial #1354 // Method com/google/gson/GsonBuilder."":()V + 7: invokevirtual #1358 // Method com/google/gson/GsonBuilder.setPrettyPrinting:()Lcom/google/gson/GsonBuilder; + 10: invokevirtual #1361 // Method com/google/gson/GsonBuilder.disableHtmlEscaping:()Lcom/google/gson/GsonBuilder; + 13: invokevirtual #1365 // Method com/google/gson/GsonBuilder.create:()Lcom/google/gson/Gson; + 16: putstatic #1001 // Field GSON:Lcom/google/gson/Gson; + 19: new #1353 // class com/google/gson/GsonBuilder + 22: dup + 23: invokespecial #1354 // Method com/google/gson/GsonBuilder."":()V + 26: invokevirtual #1361 // Method com/google/gson/GsonBuilder.disableHtmlEscaping:()Lcom/google/gson/GsonBuilder; + 29: invokevirtual #1365 // Method com/google/gson/GsonBuilder.create:()Lcom/google/gson/Gson; + 32: putstatic #1164 // Field COMPACT_GSON:Lcom/google/gson/Gson; + 35: new #1367 // class java/util/LinkedHashMap + 38: dup + 39: invokespecial #1368 // Method java/util/LinkedHashMap."":()V + 42: putstatic #52 // Field CONFIGS:Ljava/util/Map; + 45: new #1367 // class java/util/LinkedHashMap + 48: dup + 49: invokespecial #1368 // Method java/util/LinkedHashMap."":()V + 52: putstatic #57 // Field CONFIG_PATHS:Ljava/util/Map; + 55: return +} diff --git a/_sa_hanhua_out/_tmp/consts_render.txt b/_sa_hanhua_out/_tmp/consts_render.txt new file mode 100644 index 0000000..52fa759 --- /dev/null +++ b/_sa_hanhua_out/_tmp/consts_render.txt @@ -0,0 +1,175 @@ +== com.ogaba.sa_combat.client.event.SACombatClientForgeEvents == + item.durability + [a-z0-9_.-]+:[a-z0-9_./-]+ + item.modifiers.mainhand + attack damage + attack speed + attack range + entity reach + attack knockback + dano de ataque + velocidade de ataque + alcance de ataque + repuls + knockback + when in main hand + main hand + m?o principal + mao principal + %.2f + ������... + renderSpyglassOverlay +== com.ogaba.sa_combat.client.render.PlayerArmSkinLayer == + root + base + slim + right_hand_wide + right_hand_slim + left_hand_wide + left_hand_slim +== com.ogaba.sa_combat.client.render.SAWeaponItemRenderer == + idle_view + camera + right_hand_wide + left_hand_wide + right_hand_slim + left_hand_slim + spyglass +== com.ogaba.sa_combat.client.render.SpecialGrenadeItemRenderer == + camera + idle_view + held_item + granade + right_hand + left_hand + right_hand_wide + left_hand_wide + right_hand_slim + left_hand_slim + item/pipe_bomb_visual + item/nail_bomb_visual + item/molotov_visual +== com.ogaba.sa_combat.client.render.SpecialGrenadePlayerArmSkinLayer == + main + right + left + right_hand + left_hand + granade + camera + right_hand_wide + right_hand_slim + left_hand_wide + left_hand_slim + slim +== com.ogaba.sa_combat.client.tooltip.BlueprintClientTooltipComponent == + tooltip.sa_combat.blueprint.unknown + Unknown Unlock + tooltip.sa_combat.blueprint.check_data + Check blueprint data + tooltip.sa_combat.blueprint.unlock + Unlock + tooltip.sa_combat.blueprint.recipe_unlock + Recipe Unlock + ���� + tooltip.sa_combat.blueprint.no_abilities + No abilities + tooltip.sa_combat.blueprint.on_hit + On Hit + ���� + bettercombat + attack_range + ���� + ���� + %.1f +== com.ogaba.sa_combat.client.tooltip.WeaponClientTooltipComponent == + tooltip.sa_combat.modifier_section + tooltip.sa_combat.on_hit + tooltip.sa_combat.empty_socket +== com.ogaba.sa_combat.event.SACombatForgeEvents == + SA Combat TACZ vest bullet resistance + SA Combat weapon upgrade damage + SA Combat weapon upgrade speed + SA Combat weapon upgrade knockback + SA Combat weapon upgrade reach + SACombatLastShieldThornsTick + SACombatLastShieldThornsTick + spiked + 13a24b02-d971-4ee7-879c-1c7068a6bb71 + 457d3b0c-c7b7-43a4-8395-01f82ec1bdb2 + df109f67-5b6d-4de4-9a1b-c75443c0f1b2 + 9d46b9e9-46cb-4ab3-b2a0-c0e331cce312 + 11d92754-4e96-4c9e-9b25-d8945bc43b24 + tacz + tacz.bullet_resistance +== com.ogaba.sa_survival.client.BackpackGuiKeyHandler == + key.sa_combat.open_backpack_gui + key.categories.sa_combat +== com.ogaba.sa_survival.client.BackpackInventoryPanelOverlay$SlotVisualState == + NONE + ACTIVE + LOCKED + EMPTY +== com.ogaba.sa_survival.client.BackpackInventoryPanelOverlay == + pink + blue + jeans + green + yellow + desert + black + camo + olive + military + tactical + vest + jacket + leather + brown + shirt + f_40220_ + f_40221_ + [SA Survival] Could not access Slot position fields for modular inventory slots. + ���� + �������IJ�λ + �˱����޷�ʹ�õIJ�λ + screen.sa_combat.utility_panel.close + screen.sa_combat.utility_panel.open +== com.ogaba.sa_survival.client.renderer.BackpackCurioRenderer$WeaponMountSide == + RIGHT + LEFT +== com.ogaba.sa_survival.client.renderer.BackpackCurioRenderer == + SatchelCurioRender + Expected 3 double values + Expected 3 float values +== com.ogaba.sa_survival.client.renderer.FlashlightItemRenderer == + right_hand_wide + right_hand_slim + left_hand_wide + left_hand_slim + item/flashlight_emissive +== com.ogaba.sa_survival.client.tooltip.ClientBackpackContentsTooltip == + pink + yellow + desert + blue + jeans + green + camo + black + jacket + vest +== com.ogaba.sa_survival.event.ExternalEquipmentStorageTooltipEvents == + extra slots + ��סShift��Ԥ������ + ��סShift��Ԥ������ +== com.ogaba.sa_survival.item.tooltip.BackpackContentsTooltip == + Items + ClothingItems +== com.ogaba.sa_survival.item.tooltip.EffectTooltipUtil == + tooltip.sa_combat.effects + tooltip.sa_combat.removes_poison + tooltip.sa_combat.removes_bleeding + tooltip.sa_combat.heals_amount + potion.withAmplifier + potion.withDuration \ No newline at end of file diff --git a/_sa_hanhua_out/_tmp/decor_lang.txt b/_sa_hanhua_out/_tmp/decor_lang.txt new file mode 100644 index 0000000..460e9ca --- /dev/null +++ b/_sa_hanhua_out/_tmp/decor_lang.txt @@ -0,0 +1,3150 @@ +block.sa_decor.air_conditioner + EN: Air Conditioner + PT: Ar-condicionado + ZH: 空调 +block.sa_decor.ambulance + EN: Ambulance + PT: Ambulância + ZH: 救护车 +block.sa_decor.ammo_box + EN: Ammo Box + PT: Caixa de Municao + ZH: 弹药箱 +block.sa_decor.ammo_box_stack_2 + EN: Ammo Box Stack + PT: Pilha de Caixas de Municao + ZH: 弹药箱堆 +block.sa_decor.ammo_box_stack_3 + EN: Large Ammo Box Stack + PT: Pilha Grande de Caixas de Municao + ZH: 大型弹药箱堆 +block.sa_decor.ammo_box_stack_4 + EN: Ammo Box Stack x4 + PT: Pilha de 4 Caixas de Municao + ZH: 弹药箱堆 x4 +block.sa_decor.ammo_props + EN: Ammo Props + PT: Props de Municao + ZH: 弹药道具 +block.sa_decor.asphalt + EN: Asphalt + PT: Asfalto + ZH: 沥青 +block.sa_decor.asphalt_corner_white_line + EN: Asphalt Corner White Line + PT: Asfalto com Linha Branca de Canto + ZH: 沥青白色转角线 +block.sa_decor.asphalt_double_yellow_line + EN: Asphalt Double Yellow Line + PT: Asfalto com Linha Amarela Dupla + ZH: 沥青双黄线 +block.sa_decor.asphalt_white_line + EN: Asphalt White Line + PT: Asfalto com Linha Branca + ZH: 沥青白线 +block.sa_decor.attach_case + EN: Attach Case + PT: Maleta + ZH: 配件箱 +block.sa_decor.backpack_loot + EN: Loot Backpack + PT: Mochila de Loot + ZH: 战利品背包 +block.sa_decor.barbed_wire + EN: Barbed Wire + PT: Arame Farpado + ZH: 铁丝网 +block.sa_decor.barricade + EN: Barricade + PT: Barricada + ZH: 路障 +block.sa_decor.bathroom_sink + EN: Bathroom Sink + PT: Pia de Banheiro + ZH: 浴室水槽 +block.sa_decor.bear_trap + EN: Bear Trap + PT: Armadilha de Urso + ZH: 捕兽夹 +block.sa_decor.beige_commercial_wall + EN: Beige Commercial Wall + PT: Parede Comercial Bege + ZH: 米色商用墙 +block.sa_decor.beige_utility_vent_door + EN: Beige Utility Vent Door + PT: Porta de Ventilação Bege + ZH: 米色检修通风门 +block.sa_decor.big_barricade + EN: Big Barricade + PT: Barricada Grande + ZH: 大型路障 +block.sa_decor.big_metal_locker + EN: Big Metal Locker + PT: Armario Metalico Grande + ZH: 大型金属储物柜 +block.sa_decor.big_military_crate + EN: Big Military Crate + PT: Caixa Militar Grande + ZH: 大型军用板条箱 +block.sa_decor.birch_big_wooden_crate + EN: Birch Big Wooden Crate + PT: Caixa Grande de Bétula + ZH: 白桦大型木箱 +block.sa_decor.birch_supply_crate + EN: Birch Crate + PT: Caixa de Bétula + ZH: 白桦木箱 +block.sa_decor.birch_wooden_drawer_double + EN: Double Birch Wooden Drawer + PT: Gaveta de Madeira de Bétula Dupla + ZH: 白桦木双抽屉 +block.sa_decor.birch_wooden_drawer_one + EN: Birch Wooden Drawer + PT: Gaveta de Madeira de Bétula + ZH: 白桦木抽屉 +block.sa_decor.black_commercial_floor + EN: Black Commercial Floor + PT: Piso Comercial Preto + ZH: 黑色商用地板 +block.sa_decor.black_commercial_floor_slab + EN: Black Commercial Floor Slab + PT: Laje de Piso Comercial Preto + ZH: 黑色商用地板台阶 +block.sa_decor.black_desk_lamp + EN: Black Desk Lamp + PT: Luminária de Mesa Preta + ZH: 黑色台灯 +block.sa_decor.black_panel_door + EN: Black Panel Door + PT: Porta de Painel Preta + ZH: 黑色镶板门 +block.sa_decor.black_shutter + EN: Black Shutter + PT: Shutter Preto + ZH: 黑色卷帘 +block.sa_decor.black_storefront_door + EN: Black Storefront Door + PT: Porta de Fachada Preta + ZH: 黑色店面门 +block.sa_decor.black_storefront_double_glass_panel + EN: Black Storefront Double Glass Panel + PT: Painel de Vidro Duplo de Fachada Preto + ZH: 黑色店面双玻璃门 +block.sa_decor.black_storefront_glass_panel + EN: Black Storefront Glass Panel + PT: Painel de Vidro de Fachada Preto + ZH: 黑色店面玻璃门 +block.sa_decor.black_storefront_header_trapdoor + EN: Black Storefront Header + PT: Complemento de Fachada Preto + ZH: 黑色店面招牌 +block.sa_decor.black_storefront_panel + EN: Black Storefront Panel + PT: Painel de Fachada Preto + ZH: 黑色店面镶板 +block.sa_decor.black_telephone + EN: Black Telephone + PT: Telefone Preto + ZH: 黑色电话 +block.sa_decor.blood_props + EN: Blood Props + PT: Manchas de Sangue + ZH: 血迹道具 +block.sa_decor.bloodied_gray_steel_door + EN: Bloodied Gray Steel Door + PT: Porta de Aço Cinza Ensanguentada + ZH: 沾血的灰色钢门 +block.sa_decor.blue_desk_lamp + EN: Blue Desk Lamp + PT: Luminária de Mesa Azul + ZH: 蓝色台灯 +block.sa_decor.blue_horizontal_siding + EN: Blue Horizontal Siding + PT: Revestimento Horizontal Azul + ZH: 蓝色横向护墙板 +block.sa_decor.blue_horizontal_siding_slab + EN: Blue Horizontal Siding Slab + PT: Laje de Revestimento Horizontal Azul + ZH: 蓝色横向护墙板台阶 +block.sa_decor.blue_horizontal_siding_stairs + EN: Blue Horizontal Siding Stairs + PT: Escadas de Revestimento Horizontal Azul + ZH: 蓝色横向护墙板楼梯 +block.sa_decor.blue_horizontal_siding_wall + EN: Blue Horizontal Siding Wall + PT: Muro de Revestimento Horizontal Azul + ZH: 蓝色横向护墙板墙 +block.sa_decor.blue_industrial_door + EN: Blue Industrial Door + PT: Porta Industrial Azul + ZH: 蓝色工业门 +block.sa_decor.blue_low_roof + EN: Blue Low Roof + PT: Blue Low Roof + ZH: 蓝色低屋顶 +block.sa_decor.blue_low_roof_top + EN: Blue Low Roof Ridge + PT: Blue Low Roof Ridge + ZH: 蓝色低屋顶屋脊 +block.sa_decor.blue_roof + EN: Blue Roof + PT: Blue Roof + ZH: 蓝色屋顶 +block.sa_decor.blue_roof_top + EN: Blue Roof Ridge + PT: Blue Roof Ridge + ZH: 蓝色屋顶屋脊 +block.sa_decor.blue_roof_top_slab + EN: Blue Roof Top Slab + PT: Blue Roof Top Slab + ZH: 蓝色屋顶顶台阶 +block.sa_decor.blue_side_bars + EN: Blue Side Bars + PT: Barras Laterais Azuis + ZH: 蓝色侧栏杆 +block.sa_decor.brazil_flag + EN: Brazilian Flag + PT: Bandeira do Brasil + ZH: 巴西国旗 +block.sa_decor.broken_ambulance + EN: Broken Ambulance + PT: Ambulância Quebrada + ZH: 损坏的救护车 +block.sa_decor.broken_asphalt + EN: Broken Asphalt + PT: Asfalto Quebrado + ZH: 破损沥青 +block.sa_decor.broken_ceiling_tile + EN: Broken Ceiling Tile + PT: Placa de Teto Quebrada + ZH: 破损天花板 +block.sa_decor.broken_cinder_block + EN: Broken Cinder Block + PT: Bloco de Concreto Quebrado + ZH: 破损煤渣砖 +block.sa_decor.broken_cinder_block_slab + EN: Broken Cinder Block Slab + PT: Laje de Blocos de Concreto Quebrados + ZH: 破损煤渣砖台阶 +block.sa_decor.broken_cinder_block_stairs + EN: Broken Cinder Block Stairs + PT: Escadas de Blocos de Concreto Quebrados + ZH: 破损煤渣砖楼梯 +block.sa_decor.broken_cinder_block_wall + EN: Broken Cinder Block Wall + PT: Muro de Blocos de Concreto Quebrados + ZH: 破损煤渣砖墙 +block.sa_decor.broken_glass + EN: Broken Glass + PT: Vidro Quebrado + ZH: 碎玻璃 +block.sa_decor.broken_light_asphalt + EN: Broken Light Asphalt + PT: Asfalto Claro Quebrado + ZH: 破损浅色沥青 +block.sa_decor.broken_old_computer + EN: Broken Old Computer + PT: Computador Antigo Quebrado + ZH: 损坏的旧电脑 +block.sa_decor.broken_pickup + EN: Broken Pickup + PT: Pickup Quebrada + ZH: 损坏的皮卡 +block.sa_decor.broken_police_car + EN: Broken Police Car + PT: Carro de Polícia Quebrado + ZH: 损坏的警车 +block.sa_decor.broken_sedan + EN: Broken Sedan + PT: Sedan Quebrado + ZH: 损坏的轿车 +block.sa_decor.broken_van + EN: Broken Van + PT: Van Quebrada + ZH: 损坏的厢式货车 +block.sa_decor.brown_glass_panel_door + EN: Brown Glass Panel Door + PT: Porta Marrom com Painel de Vidro + ZH: 棕色玻璃门 +block.sa_decor.brown_low_roof + EN: Brown Low Roof + PT: Brown Low Roof + ZH: 棕色低屋顶 +block.sa_decor.brown_low_roof_top + EN: Brown Low Roof Ridge + PT: Brown Low Roof Ridge + ZH: 棕色低屋顶屋脊 +block.sa_decor.brown_roof + EN: Brown Roof + PT: Brown Roof + ZH: 棕色屋顶 +block.sa_decor.brown_roof_top + EN: Brown Roof Ridge + PT: Brown Roof Ridge + ZH: 棕色屋顶屋脊 +block.sa_decor.brown_roof_top_slab + EN: Brown Roof Top Slab + PT: Brown Roof Top Slab + ZH: 棕色屋顶顶台阶 +block.sa_decor.brown_seam_low_roof + EN: Brown Seam Low Roof + PT: Brown Seam Low Roof + ZH: 棕色拼接低屋顶 +block.sa_decor.brown_seam_low_roof_top + EN: Brown Seam Low Roof Ridge + PT: Brown Seam Low Roof Ridge + ZH: 棕色拼接低屋顶屋脊 +block.sa_decor.brown_seam_roof + EN: Brown Seam Roof + PT: Brown Seam Roof + ZH: 棕色拼接屋顶 +block.sa_decor.brown_seam_roof_top + EN: Brown Seam Roof Ridge + PT: Brown Seam Roof Ridge + ZH: 棕色拼接屋顶屋脊 +block.sa_decor.brown_seam_roof_top_slab + EN: Brown Seam Roof Top Slab + PT: Brown Seam Roof Top Slab + ZH: 棕色拼接屋顶顶台阶 +block.sa_decor.cabinet_double + EN: Double Cabinet + PT: Armario Duplo + ZH: 双门橱柜 +block.sa_decor.cabinet_one + EN: Cabinet + PT: Armario + ZH: 橱柜 +block.sa_decor.cardboard_box + EN: Cardboard Box + PT: Caixa de Papelão + ZH: 纸板箱 +block.sa_decor.cash_register_machine + EN: Cash Register + PT: Caixa Registradora + ZH: 收银机 +block.sa_decor.ceiling_tile + EN: Ceiling Tile + PT: Placa de Teto + ZH: 天花板 +block.sa_decor.cinder_block + EN: Cinder Block + PT: Bloco de Concreto + ZH: 煤渣砖 +block.sa_decor.cinder_block_slab + EN: Cinder Block Slab + PT: Laje de Blocos de Concreto + ZH: 煤渣砖台阶 +block.sa_decor.cinder_block_stairs + EN: Cinder Block Stairs + PT: Escadas de Blocos de Concreto + ZH: 煤渣砖楼梯 +block.sa_decor.cinder_block_wall + EN: Cinder Block Wall + PT: Muro de Blocos de Concreto + ZH: 煤渣砖墙 +block.sa_decor.concrete_barrier + EN: Concrete Barrier + PT: Barreira de Concreto + ZH: 混凝土隔离墩 +block.sa_decor.concrete_barrier_big + EN: Big Concrete Barrier + PT: Barreira de Concreto Grande + ZH: 大型混凝土隔离墩 +block.sa_decor.concrete_barrier_break + EN: Broken Concrete Barrier + PT: Barreira de Concreto Quebrada + ZH: 破损混凝土隔离墩 +block.sa_decor.concrete_barrier_small + EN: Small Concrete Barrier + PT: Barreira de Concreto Baixa + ZH: 小型混凝土隔离墩 +block.sa_decor.concrete_barrier_smooth + EN: Smooth Concrete Barrier + PT: Barreira de Concreto Lisa + ZH: 光滑混凝土隔离墩 +block.sa_decor.construction_barrier + EN: Construction Barrier + PT: Barreira de Construção + ZH: 施工围挡 +block.sa_decor.construction_barrier_break + EN: Broken Construction Barrier + PT: Barreira de Construção Quebrada + ZH: 破损施工围挡 +block.sa_decor.construction_barrier_break_no_lamp + EN: Broken Construction Barrier No Lamp + PT: Barreira de Construção Quebrada Sem Luz + ZH: 无灯破损施工围挡 +block.sa_decor.construction_barrier_no_lamp + EN: Construction Barrier No Lamp + PT: Barreira de Construção Sem Luz + ZH: 无灯施工围挡 +block.sa_decor.counter_cabinet + EN: Counter Cabinet + PT: Gabinete de Balcão + ZH: 柜台柜 +block.sa_decor.cracked_asphalt + EN: Cracked Asphalt + PT: Asfalto Rachado + ZH: 开裂沥青 +block.sa_decor.cracked_light_asphalt + EN: Cracked Light Asphalt + PT: Asfalto Claro Rachado + ZH: 开裂浅色沥青 +block.sa_decor.cracked_polished_concrete + EN: Cracked Polished Concrete + PT: Concreto Polido Rachado + ZH: 开裂抛光混凝土 +block.sa_decor.cracked_polished_concrete_slab + EN: Cracked Polished Concrete Slab + PT: Laje de Concreto Polido Rachado + ZH: 开裂抛光混凝土台阶 +block.sa_decor.cracked_polished_concrete_stairs + EN: Cracked Polished Concrete Stairs + PT: Escadas de Concreto Polido Rachado + ZH: 开裂抛光混凝土楼梯 +block.sa_decor.cracked_white_tiles + EN: Cracked White Tiles + PT: Azulejos Brancos Rachados + ZH: 开裂白色瓷砖 +block.sa_decor.cracked_white_tiles_slab + EN: Cracked White Tiles Slab + PT: Laje de Azulejos Brancos Rachados + ZH: 开裂白色瓷砖台阶 +block.sa_decor.cream_paneled_door + EN: Cream Paneled Door + PT: Porta com Painéis Creme + ZH: 奶油色镶板门 +block.sa_decor.damaged_dark_brick_wall + EN: Damaged Dark Brick Wall + PT: Parede de Tijolos Escuros Danificada + ZH: 受损深色砖墙 +block.sa_decor.damaged_dark_brick_wall_slab + EN: Damaged Dark Brick Wall Slab + PT: Laje de Tijolos Escuros Danificada + ZH: 受损深色砖墙台阶 +block.sa_decor.damaged_dark_brick_wall_stairs + EN: Damaged Dark Brick Wall Stairs + PT: Escadas de Tijolos Escuros Danificadas + ZH: 受损深色砖墙楼梯 +block.sa_decor.damaged_dark_brick_wall_wall + EN: Damaged Dark Brick Wall + PT: Muro de Tijolos Escuros Danificado + ZH: 受损深色砖墙 +block.sa_decor.danger_sign + EN: Danger Sign + PT: Placa de Perigo + ZH: 危险标志 +block.sa_decor.dark_brick_wall + EN: Dark Brick Wall + PT: Parede de Tijolos Escuros + ZH: 深色砖墙 +block.sa_decor.dark_brick_wall_slab + EN: Dark Brick Wall Slab + PT: Laje de Tijolos Escuros + ZH: 深色砖墙台阶 +block.sa_decor.dark_brick_wall_stairs + EN: Dark Brick Wall Stairs + PT: Escadas de Tijolos Escuros + ZH: 深色砖墙楼梯 +block.sa_decor.dark_brick_wall_wall + EN: Dark Brick Wall + PT: Muro de Tijolos Escuros + ZH: 深色砖墙 +block.sa_decor.decor_workbench + EN: Decor Workbench + PT: Bancada de Decoração + ZH: 装饰工作台 +block.sa_decor.destroyed_ambulance + EN: Destroyed Ambulance + PT: Ambulância Destruída + ZH: 被摧毁的救护车 +block.sa_decor.destroyed_pickup + EN: Destroyed Pickup + PT: Pickup Destruída + ZH: 被摧毁的皮卡 +block.sa_decor.destroyed_police_car + EN: Destroyed Police Car + PT: Carro de Polícia Destruído + ZH: 被摧毁的警车 +block.sa_decor.destroyed_sedan + EN: Destroyed Sedan + PT: Sedan Destruído + ZH: 被摧毁的轿车 +block.sa_decor.destroyed_van + EN: Destroyed Van + PT: Van Destruída + ZH: 被摧毁的厢式货车 +block.sa_decor.dirty_beige_commercial_wall + EN: Dirty Beige Commercial Wall + PT: Parede Comercial Bege Suja + ZH: 脏污米色商用墙 +block.sa_decor.dirty_props + EN: Dirty Props + PT: Sujeira + ZH: 脏污道具 +block.sa_decor.double_flourecent_lamp + EN: Double Fluorescent Lamp + PT: Lâmpada Fluorescente Dupla + ZH: 双管荧光灯 +block.sa_decor.double_flourecent_lamp_broken + EN: Broken Double Fluorescent Lamp + PT: Lâmpada Fluorescente Dupla Quebrada + ZH: 损坏的双管荧光灯 +block.sa_decor.double_flourecent_lamp_flickering + EN: Flickering Double Fluorescent Lamp + PT: Lâmpada Fluorescente Dupla Piscando + ZH: 闪烁的双管荧光灯 +block.sa_decor.double_wooden_supply_crate + EN: Double Wooden Supply Crate + PT: Caixa Dupla de Suprimentos de Madeira + ZH: 双木补给箱 +block.sa_decor.drinking_fountain + EN: Drinking Fountain + PT: Bebedouro + ZH: 饮水机 +block.sa_decor.dual_tripod_work_light + EN: Dual Tripod Work Light + PT: Luz de Trabalho Dupla com Tripé + ZH: 双头三脚架工作灯 +block.sa_decor.duct_trapdoor + EN: Duct Trapdoor + PT: Alcapao de Duto + ZH: 风管活板门 +block.sa_decor.dumpster + EN: Dumpster + PT: Caçamba de Lixo + ZH: 垃圾斗 +block.sa_decor.dumpster_blue + EN: Blue Dumpster + PT: Caçamba de Lixo Azul + ZH: 蓝色垃圾斗 +block.sa_decor.electrical_box + EN: Electrical Box + PT: Caixa Elétrica + ZH: 配电箱 +block.sa_decor.electrical_outlet + EN: Electrical Outlet + PT: Tomada Elétrica + ZH: 电源插座 +block.sa_decor.electronic_security_door + EN: Electronic Security Door + PT: Porta de Segurança Eletrônica + ZH: 电子安全门 +block.sa_decor.empty_hesco_barrier + EN: Empty Hesco Barrier + PT: Barreira Hesco Vazia + ZH: 空赫斯科防爆墙 +block.sa_decor.exit_sign + EN: Exit Sign + PT: Placa de Saída + ZH: 出口标志 +block.sa_decor.fire_escape_platform + EN: Fire Escape Platform + PT: Plataforma de Escada de Incêndio + ZH: 消防梯平台 +block.sa_decor.fire_escape_railing + EN: Fire Escape Railing + PT: Corrimão de Escada de Incêndio + ZH: 消防梯栏杆 +block.sa_decor.fire_escape_stairs + EN: Fire Escape Stairs + PT: Escada de Incêndio + ZH: 消防楼梯 +block.sa_decor.fire_hydrant + EN: Fire Hydrant + PT: Hidrante + ZH: 消防栓 +block.sa_decor.floor_mirror + EN: Floor Mirror + PT: Espelho de Chão + ZH: 落地镜 +block.sa_decor.fly_emitter + EN: Fly Emitter + PT: Emissor de Moscas + ZH: 苍蝇发生器 +block.sa_decor.folding_chair_blue + EN: Folding Chair + PT: Cadeira Dobrável + ZH: 折叠椅 +block.sa_decor.folding_chair_green + EN: Green Folding Chair + PT: Cadeira Dobrável Verde + ZH: 绿色折叠椅 +block.sa_decor.food_crate + EN: Food Crate + PT: Caixa de Comida + ZH: 食品箱 +block.sa_decor.framed_low_roof + EN: Black Low Roof + PT: Black Low Roof + ZH: 黑色低屋顶 +block.sa_decor.framed_low_roof_top + EN: Black Low Roof Ridge + PT: Black Low Roof Ridge + ZH: 黑色低屋顶屋脊 +block.sa_decor.framed_roof + EN: Black Roof + PT: Black Roof + ZH: 黑色屋顶 +block.sa_decor.framed_roof_top + EN: Black Roof Ridge + PT: Black Roof Ridge + ZH: 黑色屋顶屋脊 +block.sa_decor.framed_roof_top_slab + EN: Black Roof Top Slab + PT: Black Roof Top Slab + ZH: 黑色屋顶顶台阶 +block.sa_decor.freezer + EN: Freezer + PT: Freezer + ZH: 冰柜 +block.sa_decor.fridge + EN: Fridge + PT: Geladeira + ZH: 冰箱 +block.sa_decor.fridge_green + EN: Green Fridge + PT: Geladeira Verde + ZH: 绿色冰箱 +block.sa_decor.fridge_red + EN: Red Fridge + PT: Geladeira Vermelha + ZH: 红色冰箱 +block.sa_decor.fuel_pump + EN: Fuel Pump + PT: Bomba de Combustível + ZH: 加油泵 +block.sa_decor.fuse_box + EN: Fuse Box + PT: Caixa de Fusíveis + ZH: 保险丝盒 +block.sa_decor.garage_door + EN: White Garage Door + PT: Porta de Garagem Branca + ZH: 白色车库门 +block.sa_decor.garage_door_metal + EN: Metal Garage Door + PT: Porta de Garagem de Metal + ZH: 金属车库门 +block.sa_decor.garage_door_metal_green + EN: Green Metal Garage Door + PT: Porta de Garagem de Metal Verde + ZH: 绿色金属车库门 +block.sa_decor.garage_door_metal_red + EN: Red Metal Garage Door + PT: Porta de Garagem de Metal Vermelha + ZH: 红色金属车库门 +block.sa_decor.garbage_bin + EN: Garbage Bin + PT: Lixeira + ZH: 垃圾桶 +block.sa_decor.garbage_props + EN: Garbage Props + PT: Lixo Espalhado + ZH: 垃圾道具 +block.sa_decor.gas_barrel + EN: Gas Barrel + PT: Barril de Gasolina + ZH: 汽油桶 +block.sa_decor.gray_fire_escape_platform + EN: Gray Fire Escape Platform + PT: Plataforma de Escada de Incêndio Cinza + ZH: 灰色消防梯平台 +block.sa_decor.gray_fire_escape_railing + EN: Gray Fire Escape Railing + PT: Corrimão de Escada de Incêndio Cinza + ZH: 灰色消防梯栏杆 +block.sa_decor.gray_fire_escape_stairs + EN: Gray Fire Escape Stairs + PT: Escada de Incêndio Cinza + ZH: 灰色消防楼梯 +block.sa_decor.gray_glass_door + EN: Gray Glass Door + PT: Porta de Vidro Cinza + ZH: 灰色玻璃门 +block.sa_decor.gray_industrial_ladder + EN: Gray Industrial Ladder + PT: Escada Industrial Cinza + ZH: 灰色工业梯 +block.sa_decor.gray_low_roof + EN: Gray Low Roof + PT: Gray Low Roof + ZH: 灰色低屋顶 +block.sa_decor.gray_low_roof_top + EN: Gray Low Roof Ridge + PT: Gray Low Roof Ridge + ZH: 灰色低屋顶屋脊 +block.sa_decor.gray_paver_path + EN: Gray Paver Path + PT: Caminho de Paver Cinza + ZH: 灰色铺砖小径 +block.sa_decor.gray_paver_path_slab + EN: Gray Paver Path Slab + PT: Laje de Paver Cinza + ZH: 灰色铺砖小径台阶 +block.sa_decor.gray_paver_path_stairs + EN: Gray Paver Path Stairs + PT: Escadas de Paver Cinza + ZH: 灰色铺砖小径楼梯 +block.sa_decor.gray_paver_path_wall + EN: Gray Paver Path Wall + PT: Muro de Paver Cinza + ZH: 灰色铺砖小径墙 +block.sa_decor.gray_roof + EN: Gray Roof + PT: Gray Roof + ZH: 灰色屋顶 +block.sa_decor.gray_roof_top + EN: Gray Roof Ridge + PT: Gray Roof Ridge + ZH: 灰色屋顶屋脊 +block.sa_decor.gray_roof_top_slab + EN: Gray Roof Top Slab + PT: Gray Roof Top Slab + ZH: 灰色屋顶顶台阶 +block.sa_decor.gray_steel_door + EN: Gray Steel Door + PT: Porta de Aço Cinza + ZH: 灰色钢门 +block.sa_decor.green_horizontal_siding + EN: Green Horizontal Siding + PT: Revestimento Horizontal Verde + ZH: 绿色横向护墙板 +block.sa_decor.green_horizontal_siding_slab + EN: Green Horizontal Siding Slab + PT: Laje de Revestimento Horizontal Verde + ZH: 绿色横向护墙板台阶 +block.sa_decor.green_horizontal_siding_stairs + EN: Green Horizontal Siding Stairs + PT: Escadas de Revestimento Horizontal Verde + ZH: 绿色横向护墙板楼梯 +block.sa_decor.green_horizontal_siding_wall + EN: Green Horizontal Siding Wall + PT: Muro de Revestimento Horizontal Verde + ZH: 绿色横向护墙板墙 +block.sa_decor.green_low_roof + EN: Green Low Roof + PT: Green Low Roof + ZH: 绿色低屋顶 +block.sa_decor.green_low_roof_top + EN: Green Low Roof Ridge + PT: Green Low Roof Ridge + ZH: 绿色低屋顶屋脊 +block.sa_decor.green_roof + EN: Green Roof + PT: Green Roof + ZH: 绿色屋顶 +block.sa_decor.green_roof_top + EN: Green Roof Ridge + PT: Green Roof Ridge + ZH: 绿色屋顶屋脊 +block.sa_decor.green_roof_top_slab + EN: Green Roof Top Slab + PT: Green Roof Top Slab + ZH: 绿色屋顶顶台阶 +block.sa_decor.green_seam_low_roof + EN: Green Seam Low Roof + PT: Green Seam Low Roof + ZH: 绿色拼接低屋顶 +block.sa_decor.green_seam_low_roof_top + EN: Green Seam Low Roof Ridge + PT: Green Seam Low Roof Ridge + ZH: 绿色拼接低屋顶屋脊 +block.sa_decor.green_seam_roof + EN: Green Seam Roof + PT: Green Seam Roof + ZH: 绿色拼接屋顶 +block.sa_decor.green_seam_roof_top + EN: Green Seam Roof Ridge + PT: Green Seam Roof Ridge + ZH: 绿色拼接屋顶屋脊 +block.sa_decor.green_seam_roof_top_slab + EN: Green Seam Roof Top Slab + PT: Green Seam Roof Top Slab + ZH: 绿色拼接屋顶顶台阶 +block.sa_decor.grime + EN: Grime + PT: Sujeira + ZH: 污垢 +block.sa_decor.grime_carpet + EN: Grime Carpet + PT: Sujeira no Chao + ZH: 污垢地毯 +block.sa_decor.gun_cabinet + EN: Gun Cabinet + PT: Armário de Armas + ZH: 枪械柜 +block.sa_decor.gun_case + EN: Gun Case + PT: Maleta de Arma + ZH: 枪械箱 +block.sa_decor.gun_case_green + EN: Green Gun Case + PT: Maleta de Arma Verde + ZH: 绿色枪械箱 +block.sa_decor.gutter + EN: Gutter + PT: Calha + ZH: 排水沟 +block.sa_decor.gutter_tube + EN: Gutter Tube + PT: Tubo de Calha + ZH: 排水管 +block.sa_decor.handgun_case + EN: Handgun Case + PT: Maleta de Pistola + ZH: 手枪箱 +block.sa_decor.handgun_case_green + EN: Green Handgun Case + PT: Maleta de Pistola Verde + ZH: 绿色手枪箱 +block.sa_decor.hesco_barrier + EN: Hesco Barrier + PT: Barreira Hesco + ZH: 赫斯科防爆墙 +block.sa_decor.highway_guardrail + EN: Highway Guardrail + PT: Guard Rail de Rodovia + ZH: 高速护栏 +block.sa_decor.hospital_cabinet + EN: Hospital Cabinet + PT: Armario Hospitalar + ZH: 医院储物柜 +block.sa_decor.hospital_curtain + EN: Hospital Curtain + PT: Cortina Hospitalar + ZH: 医院隔帘 +block.sa_decor.hospital_curtain_big + EN: Big Hospital Curtain + PT: Cortina Hospitalar Grande + ZH: 大型医院隔帘 +block.sa_decor.industrial_ladder + EN: Industrial Ladder + PT: Escada Industrial + ZH: 工业梯 +block.sa_decor.iron_duct + EN: Iron Duct + PT: Duto de Ferro + ZH: 铁制风管 +block.sa_decor.iron_duct_full + EN: Iron Duct Full + PT: Duto de Ferro Cheio + ZH: 铁制全通风管 +block.sa_decor.iv_stand + EN: IV Stand + PT: Suporte de Soro + ZH: 输液架 +block.sa_decor.keycard_reader + EN: Keycard Reader + PT: Leitor de Cartão + ZH: 门禁卡读卡器 +block.sa_decor.kitchen_cover + EN: Kitchen Cover + PT: Tampa de Cozinha + ZH: 厨房遮罩 +block.sa_decor.kitchen_drawer + EN: Kitchen Drawer + PT: Gaveta de Cozinha + ZH: 厨房抽屉 +block.sa_decor.kitchen_shelf + EN: Kitchen Shelf + PT: Prateleira de Cozinha + ZH: 厨房置物架 +block.sa_decor.kitchen_sink + EN: Kitchen Sink + PT: Pia de Cozinha + ZH: 厨房水槽 +block.sa_decor.lamp_block + EN: Lamp Block + PT: Bloco de Lampada + ZH: 灯块 +block.sa_decor.lamp_block_flickering + EN: Flickering Lamp Block + PT: Bloco de Lampada Piscando + ZH: 闪烁灯块 +block.sa_decor.light_asphalt + EN: Light Asphalt + PT: Asfalto Claro + ZH: 浅色沥青 +block.sa_decor.light_asphalt_corner_white_line + EN: Light Asphalt Corner White Line + PT: Asfalto Claro com Linha Branca de Canto + ZH: 浅色沥青白色转角线 +block.sa_decor.light_switch + EN: Light Switch + PT: Interruptor + ZH: 电灯开关 +block.sa_decor.locker + EN: Locker + PT: Armario + ZH: 储物柜 +block.sa_decor.locker_gray + EN: Gray Locker + PT: Armario Cinza + ZH: 灰色储物柜 +block.sa_decor.locker_green + EN: Green Locker + PT: Armario Verde + ZH: 绿色储物柜 +block.sa_decor.locker_red + EN: Red Locker + PT: Armario Vermelho + ZH: 红色储物柜 +block.sa_decor.loose_key + EN: Key + PT: Chave + ZH: 钥匙 +block.sa_decor.loose_keycard + EN: Keycard + PT: Cartão de Acesso + ZH: 门禁卡 +block.sa_decor.lying_corpse + EN: Lying Corpse + PT: Corpo Caido + ZH: 躺着的尸体 +block.sa_decor.manhole + EN: Manhole + PT: Tampa de Bueiro + ZH: 下水道井盖 +block.sa_decor.marketing_shelf + EN: Marketing Shelf + PT: Prateleira de Mercado + ZH: 促销货架 +block.sa_decor.marketing_shelf_wooden + EN: Wooden Marketing Shelf + PT: Prateleira de Mercado de Madeira + ZH: 木质促销货架 +block.sa_decor.medical_props + EN: Medical Props + PT: Props Medicos + ZH: 医疗道具 +block.sa_decor.medicinal_cabinet + EN: Medicinal Cabinet + PT: Armario de Medicamentos + ZH: 药品柜 +block.sa_decor.medicinal_crate + EN: Medicinal Crate + PT: Caixa de Medicamentos + ZH: 药品箱 +block.sa_decor.medium_cardboard_box + EN: Medium Cardboard Box + PT: Caixa de Papelão Média + ZH: 中型纸板箱 +block.sa_decor.metal_counter + EN: Metal Counter + PT: Balcão Metálico + ZH: 金属柜台 +block.sa_decor.metal_counter_cabinet + EN: Metal Counter Cabinet + PT: Gabinete de Balcão Metálico + ZH: 金属柜台柜 +block.sa_decor.metal_rack + EN: Metal Rack + PT: Prateleira Metalica + ZH: 金属货架 +block.sa_decor.metal_rack_side + EN: Metal Rack Side + PT: Lateral de Prateleira Metalica + ZH: 金属货架侧板 +block.sa_decor.microwave + EN: Microwave + PT: Micro-ondas + ZH: 微波炉 +block.sa_decor.military_bed + EN: Military Bed + PT: Cama Militar + ZH: 军用床 +block.sa_decor.military_bed_blue + EN: Blue Military Bed + PT: Cama Militar Azul + ZH: 蓝色军用床 +block.sa_decor.military_crate + EN: Military Crate + PT: Caixa Militar + ZH: 军用板条箱 +block.sa_decor.military_radio + EN: Military Radio + PT: Radio Militar + ZH: 军用无线电 +block.sa_decor.mint_paneled_door + EN: Mint Paneled Door + PT: Porta com Painéis Verde Menta + ZH: 薄荷色镶板门 +block.sa_decor.mirror + EN: Mirror + PT: Espelho + ZH: 镜子 +block.sa_decor.modern_trash_bin + EN: Modern Trash Bin + PT: Lixeira Moderna + ZH: 现代垃圾桶 +block.sa_decor.mustard_commercial_floor + EN: Mustard Commercial Floor + PT: Piso Comercial Mostarda + ZH: 芥末色商用地板 +block.sa_decor.mustard_commercial_floor_slab + EN: Mustard Commercial Floor Slab + PT: Laje de Piso Comercial Mostarda + ZH: 芥末色商用地板台阶 +block.sa_decor.noteboard + EN: Noteboard + PT: Quadro de Avisos + ZH: 公告板 +block.sa_decor.oak_big_wooden_crate + EN: Oak Big Wooden Crate + PT: Caixa Grande de Carvalho + ZH: 橡木大型木箱 +block.sa_decor.oak_supply_crate + EN: Oak Crate + PT: Caixa de Carvalho + ZH: 橡木木箱 +block.sa_decor.oak_wooden_drawer_double + EN: Double Oak Wooden Drawer + PT: Gaveta de Madeira de Carvalho Dupla + ZH: 橡木双抽屉 +block.sa_decor.oak_wooden_drawer_one + EN: Oak Wooden Drawer + PT: Gaveta de Madeira de Carvalho + ZH: 橡木抽屉 +block.sa_decor.office_chair + EN: Office Chair + PT: Cadeira de Escritório + ZH: 办公椅 +block.sa_decor.office_chair_blue + EN: Blue Office Chair + PT: Cadeira de Escritório Azul + ZH: 蓝色办公椅 +block.sa_decor.office_chair_broken + EN: Broken Office Chair + PT: Cadeira de Escritório Quebrada + ZH: 破损办公椅 +block.sa_decor.office_chair_broken_blue + EN: Broken Blue Office Chair + PT: Cadeira de Escritório Azul Quebrada + ZH: 破损蓝色办公椅 +block.sa_decor.office_chair_broken_brown + EN: Broken Brown Office Chair + PT: Cadeira de Escritório Marrom Quebrada + ZH: 破损棕色办公椅 +block.sa_decor.office_chair_broken_green + EN: Broken Green Office Chair + PT: Cadeira de Escritório Verde Quebrada + ZH: 破损绿色办公椅 +block.sa_decor.office_chair_broken_red + EN: Broken Red Office Chair + PT: Cadeira de Escritório Vermelha Quebrada + ZH: 破损红色办公椅 +block.sa_decor.office_chair_brown + EN: Brown Office Chair + PT: Cadeira de Escritório Marrom + ZH: 棕色办公椅 +block.sa_decor.office_chair_green + EN: Green Office Chair + PT: Cadeira de Escritório Verde + ZH: 绿色办公椅 +block.sa_decor.office_chair_red + EN: Red Office Chair + PT: Cadeira de Escritório Vermelha + ZH: 红色办公椅 +block.sa_decor.office_desk + EN: Office Desk + PT: Mesa de Escritório + ZH: 办公桌 +block.sa_decor.oil_barrel + EN: Oil Barrel + PT: Barril de Óleo + ZH: 油桶 +block.sa_decor.oil_barrel_blue + EN: Blue Oil Barrel + PT: Barril de Óleo Azul + ZH: 蓝色油桶 +block.sa_decor.oil_barrel_green + EN: Green Oil Barrel + PT: Barril de Óleo Verde + ZH: 绿色油桶 +block.sa_decor.oil_barrel_red + EN: Red Oil Barrel + PT: Barril de Óleo Vermelho + ZH: 红色油桶 +block.sa_decor.oil_barrel_yellow + EN: Yellow Oil Barrel + PT: Barril de Óleo Amarelo + ZH: 黄色油桶 +block.sa_decor.old_computer + EN: Old Computer + PT: Computador Antigo + ZH: 旧电脑 +block.sa_decor.paper_props + EN: Paper Props + PT: Papéis Espalhados + ZH: 纸张道具 +block.sa_decor.park_bench + EN: Park Bench + PT: Banco de Parque + ZH: 公园长椅 +block.sa_decor.pc + EN: PC + PT: PC + ZH: 电脑 +block.sa_decor.pc_broken + EN: Broken PC + PT: PC Quebrado + ZH: 破损电脑 +block.sa_decor.pickup + EN: Pickup + PT: Pickup + ZH: 皮卡 +block.sa_decor.planks_pallet_stack1 + EN: Planks Pallet + PT: Pallet de Tábuas + ZH: 木板托盘 +block.sa_decor.planks_pallet_stack2 + EN: Stacked Planks Pallet + PT: Pallet de Tábuas Empilhado + ZH: 堆叠木板托盘 +block.sa_decor.planks_pallet_stack3 + EN: Tall Planks Pallet + PT: Pallet de Tábuas Alto + ZH: 高堆木板托盘 +block.sa_decor.plastic_chair_red + EN: Red Plastic Chair + PT: Cadeira Plástica Vermelha + ZH: 红色塑料椅 +block.sa_decor.plastic_chair_white + EN: Plastic Chair + PT: Cadeira Plástica + ZH: 塑料椅 +block.sa_decor.plastic_table_red + EN: Red Plastic Table + PT: Mesa Plástica Vermelha + ZH: 红色塑料桌 +block.sa_decor.plastic_table_white + EN: Plastic Table + PT: Mesa Plástica + ZH: 塑料桌 +block.sa_decor.police_car + EN: Police Car + PT: Carro de Polícia + ZH: 警车 +block.sa_decor.polished_concrete + EN: Polished Concrete + PT: Concreto Polido + ZH: 抛光混凝土 +block.sa_decor.polished_concrete_slab + EN: Polished Concrete Slab + PT: Laje de Concreto Polido + ZH: 抛光混凝土台阶 +block.sa_decor.polished_concrete_stairs + EN: Polished Concrete Stairs + PT: Escadas de Concreto Polido + ZH: 抛光混凝土楼梯 +block.sa_decor.portable_work_light + EN: Portable Work Light + PT: Luz de Trabalho Portátil + ZH: 便携工作灯 +block.sa_decor.post_transformer + EN: Post Transformer + PT: Transformador de Poste + ZH: 电线杆变压器 +block.sa_decor.radio + EN: Radio + PT: Radio + ZH: 收音机 +block.sa_decor.red_horizontal_siding + EN: Red Horizontal Siding + PT: Revestimento Horizontal Vermelho + ZH: 红色横向护墙板 +block.sa_decor.red_horizontal_siding_slab + EN: Red Horizontal Siding Slab + PT: Laje de Revestimento Horizontal Vermelho + ZH: 红色横向护墙板台阶 +block.sa_decor.red_horizontal_siding_stairs + EN: Red Horizontal Siding Stairs + PT: Escadas de Revestimento Horizontal Vermelho + ZH: 红色横向护墙板楼梯 +block.sa_decor.red_horizontal_siding_wall + EN: Red Horizontal Siding Wall + PT: Muro de Revestimento Horizontal Vermelho + ZH: 红色横向护墙板墙 +block.sa_decor.red_seam_low_roof + EN: Red Seam Low Roof + PT: Red Seam Low Roof + ZH: 红色拼接低屋顶 +block.sa_decor.red_seam_low_roof_top + EN: Red Seam Low Roof Ridge + PT: Red Seam Low Roof Ridge + ZH: 红色拼接低屋顶屋脊 +block.sa_decor.red_seam_roof + EN: Red Seam Roof + PT: Red Seam Roof + ZH: 红色拼接屋顶 +block.sa_decor.red_seam_roof_top + EN: Red Seam Roof Ridge + PT: Red Seam Roof Ridge + ZH: 红色拼接屋顶屋脊 +block.sa_decor.red_seam_roof_top_slab + EN: Red Seam Roof Top Slab + PT: Red Seam Roof Top Slab + ZH: 红色拼接屋顶顶台阶 +block.sa_decor.red_sleeping_bag + EN: Red Sleeping Bag + PT: Saco de Dormir Vermelho + ZH: 红色睡袋 +block.sa_decor.refrigerator + EN: Refrigerator + PT: Refrigerador + ZH: 冷藏柜 +block.sa_decor.road_sign_do_not_enter + EN: Do Not Enter Road Sign + PT: Placa de Proibido Entrar + ZH: 禁止驶入路牌 +block.sa_decor.road_sign_no_entry + EN: No Entry Road Sign + PT: Placa de Entrada Proibida + ZH: 禁止进入路牌 +block.sa_decor.road_sign_one_way + EN: One Way Road Sign + PT: Placa de Mao Unica + ZH: 单行道路牌 +block.sa_decor.road_sign_parking + EN: Parking Road Sign + PT: Placa de Estacionamento + ZH: 停车路牌 +block.sa_decor.road_sign_sharp_curves + EN: Sharp Curves Road Sign + PT: Placa de Curvas Perigosas + ZH: 急转弯路牌 +block.sa_decor.road_sign_speed_limit_30 + EN: Speed Limit 30 Road Sign + PT: Placa de Limite 30 + ZH: 限速 30 路牌 +block.sa_decor.road_sign_stop + EN: Stop Road Sign + PT: Placa de Pare + ZH: 停止路牌 +block.sa_decor.road_sign_traffic_light_warning + EN: Traffic Light Warning Road Sign + PT: Placa de Semaforo + ZH: 信号灯警示路牌 +block.sa_decor.safe + EN: Safe + PT: Cofre + ZH: 保险柜 +block.sa_decor.sand_bag + EN: Sand Bag + PT: Saco de Areia + ZH: 沙袋 +block.sa_decor.security_door + EN: Security Door + PT: Porta de Segurança + ZH: 安全门 +block.sa_decor.sedan + EN: Sedan + PT: Sedan + ZH: 轿车 +block.sa_decor.shutter_leaf + EN: Open Shutter + PT: Shutter Aberto + ZH: 打开卷帘 +block.sa_decor.sidewalk_concrete + EN: Sidewalk Concrete + PT: Concreto de Calçada + ZH: 人行道混凝土 +block.sa_decor.sidewalk_concrete_slab + EN: Sidewalk Concrete Slab + PT: Laje de Concreto de Calçada + ZH: 人行道混凝土台阶 +block.sa_decor.small_cardboard_box + EN: Small Cardboard Box + PT: Caixa de Papelão Pequena + ZH: 小型纸板箱 +block.sa_decor.small_cardboard_box_stack1 + EN: Small Cardboard Boxes (2) + PT: Caixas de Papelão Pequenas (2) + ZH: 小型纸板箱(2 个) +block.sa_decor.small_cardboard_box_stack2 + EN: Small Cardboard Boxes (3) + PT: Caixas de Papelão Pequenas (3) + ZH: 小型纸板箱(3 个) +block.sa_decor.small_cardboard_box_stack3 + EN: Small Cardboard Boxes (4) + PT: Caixas de Papelão Pequenas (4) + ZH: 小型纸板箱(4 个) +block.sa_decor.small_garage_door + EN: Metal Small Garage Door + PT: Porta de Garagem Pequena de Metal + ZH: 金属小型车库门 +block.sa_decor.small_garage_door_metal_green + EN: Green Metal Small Garage Door + PT: Porta de Garagem Pequena Verde + ZH: 绿色金属小型车库门 +block.sa_decor.small_garage_door_metal_red + EN: Red Metal Small Garage Door + PT: Porta de Garagem Pequena Vermelha + ZH: 红色金属小型车库门 +block.sa_decor.small_garage_door_white + EN: White Small Garage Door + PT: Porta de Garagem Pequena Branca + ZH: 白色小型车库门 +block.sa_decor.small_gun_cabinet + EN: Small Gun Cabinet + PT: Armário de Armas Pequeno + ZH: 小型枪械柜 +block.sa_decor.small_lamp + EN: Small Lamp + PT: Pequena Lâmpada + ZH: 小灯 +block.sa_decor.small_lamp_flickering + EN: Flickering Small Lamp + PT: Pequena Lâmpada Piscando + ZH: 闪烁小灯 +block.sa_decor.small_mirror + EN: Small Mirror + PT: Espelho Pequeno + ZH: 小镜子 +block.sa_decor.smart_tv + EN: Smart TV + PT: Smart TV + ZH: 智能电视 +block.sa_decor.smart_tv_broken + EN: Broken Smart TV + PT: Smart TV Quebrada + ZH: 破损智能电视 +block.sa_decor.spruce_big_wooden_crate + EN: Spruce Big Wooden Crate + PT: Caixa Grande de Pinheiro + ZH: 云杉大型木箱 +block.sa_decor.spruce_supply_crate + EN: Spruce Crate + PT: Caixa de Pinheiro + ZH: 云杉木箱 +block.sa_decor.spruce_wooden_drawer_double + EN: Double Spruce Wooden Drawer + PT: Gaveta de Madeira de Pinheiro Dupla + ZH: 云杉双抽屉 +block.sa_decor.spruce_wooden_drawer_one + EN: Spruce Wooden Drawer + PT: Gaveta de Madeira de Pinheiro + ZH: 云杉木抽屉 +block.sa_decor.store_shelf + EN: Store Shelf + PT: Prateleira de Loja + ZH: 商店货架 +block.sa_decor.stove + EN: Stove + PT: Fogão + ZH: 炉灶 +block.sa_decor.stove_green + EN: Green Stove + PT: Fogão Verde + ZH: 绿色炉灶 +block.sa_decor.stove_red + EN: Red Stove + PT: Fogão Vermelho + ZH: 红色炉灶 +block.sa_decor.street_light_arm + EN: Street Light Arm + PT: Braço de Poste de Rua + ZH: 路灯臂 +block.sa_decor.street_light_base + EN: Street Light Base + PT: Base de Poste de Rua + ZH: 路灯底座 +block.sa_decor.street_light_lamp_broken + EN: Broken Street Light Lamp + PT: Lâmpada de Poste Quebrada + ZH: 破损路灯灯头 +block.sa_decor.street_light_lamp_flickering + EN: Flickering Street Light Lamp + PT: Lâmpada de Poste Piscando + ZH: 闪烁路灯灯头 +block.sa_decor.street_light_lamp_off + EN: Street Light Lamp Off + PT: Lâmpada de Poste Apagada + ZH: 关闭的路灯灯头 +block.sa_decor.street_light_lamp_on + EN: Street Light Lamp + PT: Lâmpada de Poste + ZH: 路灯灯头 +block.sa_decor.street_light_pole + EN: Street Light Pole + PT: Tubo de Poste de Rua + ZH: 路灯杆 +block.sa_decor.street_light_support_arm + EN: Street Light Support Arm + PT: Braço de Suporte de Poste de Rua + ZH: 路灯支撑臂 +block.sa_decor.street_light_top + EN: Street Light Top + PT: Topo de Poste de Rua + ZH: 路灯顶部 +block.sa_decor.supply_drop + EN: Supply Drop + PT: Drop de Suprimentos + ZH: 补给空投箱 +block.sa_decor.tire_block + EN: Tire Block + PT: Bloco de Pneu + ZH: 轮胎块 +block.sa_decor.tire_block_stack2 + EN: Tire Block Stack + PT: Pilha de Pneus + ZH: 轮胎堆 +block.sa_decor.tire_block_stack2v + EN: Tire Block Stack Variant + PT: Variação da Pilha de Pneus + ZH: 轮胎堆变体 +block.sa_decor.tire_block_stack3 + EN: Tall Tire Block Stack + PT: Pilha Alta de Pneus + ZH: 高堆轮胎 +block.sa_decor.tire_block_stack3v + EN: Tall Tire Block Stack Variant + PT: Variação da Pilha Alta de Pneus + ZH: 高堆轮胎变体 +block.sa_decor.toilet + EN: Toilet + PT: Vaso Sanitário + ZH: 马桶 +block.sa_decor.toilet_paper + EN: Toilet Paper + PT: Papel Higiênico + ZH: 厕纸 +block.sa_decor.tool_storage + EN: Tool Storage + PT: Armazenamento de Ferramentas + ZH: 工具收纳架 +block.sa_decor.traffic_cone + EN: Traffic Cone + PT: Cone de Trânsito + ZH: 交通锥 +block.sa_decor.traffic_cone_tall + EN: Tall Traffic Cone + PT: Cone de Trânsito Alto + ZH: 高交通锥 +block.sa_decor.trash_bin + EN: Trash Bin + PT: Cesto de Lixo + ZH: 垃圾桶 +block.sa_decor.trash_can + EN: Trash Can + PT: Lixeira + ZH: 垃圾桶 +block.sa_decor.trash_props + EN: Trash Props + PT: Props de Lixo + ZH: 垃圾道具 +block.sa_decor.tv + EN: TV + PT: TV + ZH: 电视 +block.sa_decor.tv_broken + EN: Broken TV + PT: TV Quebrada + ZH: 破损电视 +block.sa_decor.umbrella_sign + EN: Umbrella Sign + PT: Placa de Guarda-sol + ZH: 伞形招牌 +block.sa_decor.urban_fence + EN: Urban Fence + PT: Grade Urbana + ZH: 城市围栏 +block.sa_decor.urban_fence_door + EN: Urban Fence Door + PT: Portão de Grade Urbana + ZH: 城市围栏门 +block.sa_decor.urban_fence_wire + EN: Urban Fence Wire + PT: Arame de Grade Urbana + ZH: 城市围栏铁丝 +block.sa_decor.usa_flag + EN: United States Flag + PT: Bandeira dos Estados Unidos + ZH: 美国国旗 +block.sa_decor.van + EN: Van + PT: Van + ZH: 厢式货车 +block.sa_decor.vending_machine + EN: Vending Machine + PT: Máquina de Vendas + ZH: 自动售货机 +block.sa_decor.wall_clock + EN: Wall Clock + PT: Relógio de Parede + ZH: 挂钟 +block.sa_decor.wall_metal_counter_cabinet + EN: Wall Metal Counter Cabinet + PT: Gabinete Metálico de Parede + ZH: 壁挂金属柜台柜 +block.sa_decor.wall_metal_rack + EN: Wall Metal Rack + PT: Prateleira Metalica de Parede + ZH: 壁挂金属货架 +block.sa_decor.wall_vent + EN: Wall Vent + PT: Grade de Ventilação de Parede + ZH: 墙面通风口 +block.sa_decor.wall_wooden_drawer + EN: Wall Wooden Drawer + PT: Gaveta de Madeira de Parede + ZH: 壁挂木抽屉 +block.sa_decor.wall_wooden_drawer_glass + EN: Glass Wall Wooden Drawer + PT: Gaveta de Madeira de Parede com Vidro + ZH: 玻璃壁挂木抽屉 +block.sa_decor.wardrobe + EN: Wardrobe + PT: Guarda-roupa + ZH: 衣柜 +block.sa_decor.white_commercial_floor + EN: White Commercial Floor + PT: Piso Comercial Branco + ZH: 白色商用地板 +block.sa_decor.white_commercial_floor_slab + EN: White Commercial Floor Slab + PT: Laje de Piso Comercial Branco + ZH: 白色商用地板台阶 +block.sa_decor.white_full_glass_door + EN: White Full Glass Door + PT: Porta Branca de Vidro Inteiro + ZH: 白色全玻璃门 +block.sa_decor.white_horizontal_siding + EN: White Horizontal Siding + PT: Revestimento Horizontal Branco + ZH: 白色横向护墙板 +block.sa_decor.white_horizontal_siding_slab + EN: White Horizontal Siding Slab + PT: Laje de Revestimento Horizontal Branco + ZH: 白色横向护墙板台阶 +block.sa_decor.white_horizontal_siding_stairs + EN: White Horizontal Siding Stairs + PT: Escadas de Revestimento Horizontal Branco + ZH: 白色横向护墙板楼梯 +block.sa_decor.white_horizontal_siding_wall + EN: White Horizontal Siding Wall + PT: Muro de Revestimento Horizontal Branco + ZH: 白色横向护墙板墙 +block.sa_decor.white_plain_door + EN: White Plain Door + PT: Porta Branca Lisa + ZH: 白色素门 +block.sa_decor.white_plaster_wall + EN: White Plaster Wall + PT: Parede de Reboco Branco + ZH: 白色石膏墙 +block.sa_decor.white_plaster_wall_slab + EN: White Plaster Wall Slab + PT: Laje de Reboco Branco + ZH: 白色石膏墙台阶 +block.sa_decor.white_plaster_wall_stairs + EN: White Plaster Wall Stairs + PT: Escadas de Reboco Branco + ZH: 白色石膏墙楼梯 +block.sa_decor.white_plaster_wall_wall + EN: White Plaster Wall + PT: Muro de Reboco Branco + ZH: 白色石膏墙 +block.sa_decor.white_seam_low_roof + EN: White Seam Low Roof + PT: White Seam Low Roof + ZH: 白色拼接低屋顶 +block.sa_decor.white_seam_low_roof_top + EN: White Seam Low Roof Ridge + PT: White Seam Low Roof Ridge + ZH: 白色拼接低屋顶屋脊 +block.sa_decor.white_seam_roof + EN: White Seam Roof + PT: White Seam Roof + ZH: 白色拼接屋顶 +block.sa_decor.white_seam_roof_top + EN: White Seam Roof Ridge + PT: White Seam Roof Ridge + ZH: 白色拼接屋顶屋脊 +block.sa_decor.white_seam_roof_top_slab + EN: White Seam Roof Top Slab + PT: White Seam Roof Top Slab + ZH: 白色拼接屋顶顶台阶 +block.sa_decor.white_shutter + EN: White Shutter + PT: Shutter Branco + ZH: 白色卷帘 +block.sa_decor.white_smooth_table + EN: White Smooth Table + PT: Mesa Lisa Branca + ZH: 白色光滑桌子 +block.sa_decor.white_stained_glass_door + EN: White Stained Glass Door + PT: Porta Branca com Vidro Manchado + ZH: 白色染色玻璃门 +block.sa_decor.white_telephone + EN: White Telephone + PT: Telefone Branco + ZH: 白色电话 +block.sa_decor.white_tiles + EN: White Tiles + PT: Azulejos Brancos + ZH: 白色瓷砖 +block.sa_decor.white_tiles_slab + EN: White Tiles Slab + PT: Laje de Azulejos Brancos + ZH: 白色瓷砖台阶 +block.sa_decor.wire_connector + EN: Wire Connector + PT: Conector de Cabo + ZH: 电线连接器 +block.sa_decor.wires + EN: Wires + PT: Fios + ZH: 电线 +block.sa_decor.wood_plank_pile + EN: Wood Plank Pile + PT: Pilha de Tábuas de Madeira + ZH: 木板堆 +block.sa_decor.wooden_scaffolding + EN: Wooden Scaffolding + PT: Andaime de Madeira + ZH: 木脚手架 +block.sa_decor.wooden_seat + EN: Wooden Seat + PT: Banco de Madeira + ZH: 木凳 +block.sa_decor.wooden_seat_beige + EN: Beige Wooden Seat + PT: Banco de Madeira Bege + ZH: 米色木凳 +block.sa_decor.wooden_seat_blue + EN: Blue Wooden Seat + PT: Banco de Madeira Azul + ZH: 蓝色木凳 +block.sa_decor.wooden_seat_gray + EN: Gray Wooden Seat + PT: Banco de Madeira Cinza + ZH: 灰色木凳 +block.sa_decor.wooden_seat_green + EN: Green Wooden Seat + PT: Banco de Madeira Verde + ZH: 绿色木凳 +block.sa_decor.wooden_seat_red + EN: Red Wooden Seat + PT: Banco de Madeira Vermelho + ZH: 红色木凳 +block.sa_decor.wooden_shelves + EN: Wooden Shelves + PT: Prateleiras de Madeira + ZH: 木架 +block.sa_decor.wooden_supply_crate + EN: Wooden Supply Crate + PT: Caixa de Suprimentos de Madeira + ZH: 木制补给箱 +block.sa_decor.wooden_table + EN: Wooden Table + PT: Mesa de Madeira + ZH: 木桌 +block.sa_decor.yellow_security_door + EN: Yellow Security Door + PT: Porta de Segurança Amarela + ZH: 黄色安全门 +category.sa_decor.decor_workbench.decor + EN: Decor + PT: Decoração + ZH: 装饰 +category.sa_decor.decor_workbench.functional + EN: Functional + PT: Funcionais + ZH: 功能性 +category.sa_decor.decor_workbench.misc + EN: Miscellaneous + PT: Diversos + ZH: 其他 +category.sa_decor.decor_workbench.storage + EN: Storage + PT: Armazenamento + ZH: 储物 +container.sa_decor.ambulance_trunk + EN: Ambulance Trunk + PT: Porta-malas da Ambulância + ZH: 救护车后备箱 +container.sa_decor.ammo_box + EN: Ammo Box + PT: Caixa de Municao + ZH: 弹药箱 +container.sa_decor.ammo_box_stack_2 + EN: Ammo Box Stack + PT: Pilha de Caixas de Municao + ZH: 弹药箱堆 +container.sa_decor.ammo_box_stack_3 + EN: Large Ammo Box Stack + PT: Pilha Grande de Caixas de Municao + ZH: 大型弹药箱堆 +container.sa_decor.ammo_box_stack_4 + EN: Ammo Box Stack x4 + PT: Pilha de 4 Caixas de Municao + ZH: 弹药箱堆 x4 +container.sa_decor.attach_case + EN: Attach Case + PT: Maleta + ZH: 配件箱 +container.sa_decor.big_metal_locker + EN: Big Metal Locker + PT: Armario Metalico Grande + ZH: 大型金属储物柜 +container.sa_decor.big_military_crate + EN: Big Military Crate + PT: Caixa Militar Grande + ZH: 大型军用板条箱 +container.sa_decor.big_wooden_crate + EN: Big Wooden Crate + PT: Caixa de Madeira Grande + ZH: 大型木箱 +container.sa_decor.birch_supply_crate + EN: Birch Crate + PT: Caixa de Bétula + ZH: 白桦木箱 +container.sa_decor.birch_wooden_drawer + EN: Birch Wooden Drawer + PT: Gaveta de Madeira de Bétula + ZH: 白桦木抽屉 +container.sa_decor.cabinet + EN: Cabinet + PT: Armario + ZH: 橱柜 +container.sa_decor.cardboard_box + EN: Cardboard Box + PT: Caixa de Papelão + ZH: 纸板箱 +container.sa_decor.cash_register_machine + EN: Cash Register + PT: Caixa Registradora + ZH: 收银机 +container.sa_decor.counter_cabinet + EN: Counter Cabinet + PT: Gabinete de Balcão + ZH: 柜台柜 +container.sa_decor.decor_workbench + EN: Decor Workbench + PT: Bancada de Decoração + ZH: 装饰工作台 +container.sa_decor.double_wooden_supply_crate + EN: Double Wooden Supply Crate + PT: Caixa Dupla de Suprimentos de Madeira + ZH: 双木补给箱 +container.sa_decor.dumpster + EN: Dumpster + PT: Caçamba de Lixo + ZH: 垃圾斗 +container.sa_decor.food_crate + EN: Food Crate + PT: Caixa de Comida + ZH: 食品箱 +container.sa_decor.freezer + EN: Freezer + PT: Freezer + ZH: 冰柜 +container.sa_decor.fridge + EN: Fridge + PT: Geladeira + ZH: 冰箱 +container.sa_decor.garbage_bin + EN: Garbage Bin + PT: Lixeira + ZH: 垃圾桶 +container.sa_decor.gun_cabinet + EN: Gun Cabinet + PT: Armário de Armas + ZH: 枪械柜 +container.sa_decor.gun_case + EN: Gun Case + PT: Maleta de Arma + ZH: 枪械箱 +container.sa_decor.handgun_case + EN: Handgun Case + PT: Maleta de Pistola + ZH: 手枪箱 +container.sa_decor.hospital_cabinet + EN: Hospital Cabinet + PT: Armario Hospitalar + ZH: 医院储物柜 +container.sa_decor.kitchen_drawer + EN: Kitchen Drawer + PT: Gaveta de Cozinha + ZH: 厨房抽屉 +container.sa_decor.kitchen_shelf + EN: Kitchen Shelf + PT: Prateleira de Cozinha + ZH: 厨房置物架 +container.sa_decor.locker + EN: Locker + PT: Armario + ZH: 储物柜 +container.sa_decor.marketing_shelf + EN: Marketing Shelf + PT: Prateleira de Mercado + ZH: 促销货架 +container.sa_decor.marketing_shelf_wooden + EN: Wooden Marketing Shelf + PT: Prateleira de Mercado de Madeira + ZH: 木质促销货架 +container.sa_decor.medicinal_cabinet + EN: Medicinal Cabinet + PT: Armario de Medicamentos + ZH: 药品柜 +container.sa_decor.medicinal_crate + EN: Medicinal Crate + PT: Caixa de Medicamentos + ZH: 药品箱 +container.sa_decor.medium_cardboard_box + EN: Medium Cardboard Box + PT: Caixa de Papelão Média + ZH: 中型纸板箱 +container.sa_decor.metal_counter_cabinet + EN: Metal Counter Cabinet + PT: Gabinete de Balcão Metálico + ZH: 金属柜台柜 +container.sa_decor.metal_rack + EN: Metal Rack + PT: Prateleira Metalica + ZH: 金属货架 +container.sa_decor.military_crate + EN: Military Crate + PT: Caixa Militar + ZH: 军用板条箱 +container.sa_decor.modern_trash_bin + EN: Modern Trash Bin + PT: Lixeira Moderna + ZH: 现代垃圾桶 +container.sa_decor.oak_supply_crate + EN: Oak Crate + PT: Caixa de Carvalho + ZH: 橡木木箱 +container.sa_decor.oak_wooden_drawer + EN: Oak Wooden Drawer + PT: Gaveta de Madeira de Carvalho + ZH: 橡木抽屉 +container.sa_decor.office_desk + EN: Office Desk + PT: Mesa de Escritório + ZH: 办公桌 +container.sa_decor.pickup_bed + EN: Pickup Bed + PT: Caçamba da Pickup + ZH: 皮卡货斗 +container.sa_decor.police_car_trunk + EN: Police Car Trunk + PT: Porta-malas do Carro de Polícia + ZH: 警车后备箱 +container.sa_decor.refrigerator + EN: Refrigerator + PT: Refrigerador + ZH: 冷藏柜 +container.sa_decor.safe + EN: Safe + PT: Cofre + ZH: 保险柜 +container.sa_decor.sedan_white_trunk + EN: Sedan Trunk + PT: Porta-malas do Sedan + ZH: 轿车后备箱 +container.sa_decor.small_cardboard_box + EN: Small Cardboard Box + PT: Caixa de Papelão Pequena + ZH: 小型纸板箱 +container.sa_decor.small_cardboard_box_stack1 + EN: Small Cardboard Boxes (2) + PT: Caixas de Papelão Pequenas (2) + ZH: 小型纸板箱(2 个) +container.sa_decor.small_cardboard_box_stack2 + EN: Small Cardboard Boxes (3) + PT: Caixas de Papelão Pequenas (3) + ZH: 小型纸板箱(3 个) +container.sa_decor.small_cardboard_box_stack3 + EN: Small Cardboard Boxes (4) + PT: Caixas de Papelão Pequenas (4) + ZH: 小型纸板箱(4 个) +container.sa_decor.small_gun_cabinet + EN: Small Gun Cabinet + PT: Armário de Armas Pequeno + ZH: 小型枪械柜 +container.sa_decor.spruce_supply_crate + EN: Spruce Crate + PT: Caixa de Pinheiro + ZH: 云杉木箱 +container.sa_decor.spruce_wooden_drawer + EN: Spruce Wooden Drawer + PT: Gaveta de Madeira de Pinheiro + ZH: 云杉木抽屉 +container.sa_decor.store_shelf + EN: Store Shelf + PT: Prateleira de Loja + ZH: 商店货架 +container.sa_decor.stove + EN: Stove + PT: Fogão + ZH: 炉灶 +container.sa_decor.supply_drop + EN: Supply Drop + PT: Drop de Suprimentos + ZH: 补给空投箱 +container.sa_decor.tool_storage + EN: Tool Storage + PT: Armazenamento de Ferramentas + ZH: 工具收纳架 +container.sa_decor.trash_bin + EN: Trash Bin + PT: Cesto de Lixo + ZH: 垃圾桶 +container.sa_decor.trash_can + EN: Trash Can + PT: Lixeira + ZH: 垃圾桶 +container.sa_decor.van_trunk + EN: Van Trunk + PT: Porta-malas da Van + ZH: 厢式货车后备箱 +container.sa_decor.vending_machine + EN: Vending Machine + PT: Máquina de Vendas + ZH: 自动售货机 +container.sa_decor.wall_metal_counter_cabinet + EN: Wall Metal Counter Cabinet + PT: Gabinete Metálico de Parede + ZH: 壁挂金属柜台柜 +container.sa_decor.wall_metal_rack + EN: Wall Metal Rack + PT: Prateleira Metalica de Parede + ZH: 壁挂金属货架 +container.sa_decor.wall_wooden_drawer + EN: Wall Wooden Drawer + PT: Gaveta de Madeira de Parede + ZH: 壁挂木抽屉 +container.sa_decor.wardrobe + EN: Wardrobe + PT: Guarda-roupa + ZH: 衣柜 +container.sa_decor.wooden_shelves + EN: Wooden Shelves + PT: Prateleiras de Madeira + ZH: 木架 +container.sa_decor.wooden_supply_crate + EN: Wooden Supply Crate + PT: Caixa de Suprimentos de Madeira + ZH: 木制补给箱 +entity.sa_decor.air_drop + EN: Air Drop + PT: Suprimento Aéreo + ZH: 空投 +gui.sa_decor.decor_workbench.cost + EN: Cost + PT: Custo + ZH: 花费 +gui.sa_decor.decor_workbench.materials_only + EN: Show recipes with available materials only + PT: Mostrar apenas receitas com materiais disponíveis + ZH: 仅显示有可用材料的配方 +item.sa_decor.broken_padlock + EN: Broken Padlock + PT: Cadeado Quebrado + ZH: 破损挂锁 +item.sa_decor.flare_gun + EN: Flare Gun + PT: Pistola de Sinalização + ZH: 信号枪 +item.sa_decor.key + EN: Key + PT: Chave + ZH: 钥匙 +item.sa_decor.keycard + EN: Keycard + PT: Cartão de Acesso + ZH: 门禁卡 +item.sa_decor.linking_tool + EN: Linking Tool + PT: Ferramenta de Link + ZH: 连接工具 +item.sa_decor.lock + EN: Padlock + PT: Cadeado + ZH: 挂锁 +item.sa_decor.lockpick + EN: Lockpick + PT: Gazua + ZH: 撬锁器 +item.sa_decor.loot_crate_wand + EN: Loot Crate Wand + PT: Varinha de Loot Crate + ZH: 战利品箱魔杖 +item.sa_decor.rotation_wand + EN: Rotation Wand + PT: Varinha de Rotacao + ZH: 旋转魔杖 +item.sa_decor.structure_access_tool + EN: Structure Access Tool + PT: Ferramenta de Acesso de Estrutura + ZH: 结构门禁工具 +item.sa_decor.variation_tool + EN: Variation Tool + PT: Ferramenta de Variacao + ZH: 变体工具 +itemGroup.sa_decor + EN: Survivor's Arsenal: Loot & Decor + PT: SA Decor + ZH: 幸存者军火库:战利品与装饰 +key.categories.sa_decor + EN: SA Decor + PT: SA Decor + ZH: SA 装饰 +key.sa_decor.qte + EN: Quick Action + PT: Ação Rápida + ZH: 快速操作 +message.sa_decor.access.break_denied + EN: You cannot break this | Owner: %s + PT: Você não pode quebrar isto | Dono: %s + ZH: 你无法破坏这个 | 所有者:%s +message.sa_decor.access.break_denied_survival + EN: Protected system + PT: Sistema protegido + ZH: 受保护的系统 +message.sa_decor.access.not_owner + EN: Access denied | Owner: %s + PT: Acesso negado | Dono: %s + ZH: 拒绝访问 | 所有者:%s +message.sa_decor.airdrop.arrived + EN: ✈ Supply drop has landed! + PT: ✈ O suprimento pousou! + ZH: ✈ 补给空投已落地! +message.sa_decor.airdrop.arriving + EN: Airdrop arriving in %ss + PT: Suprimento chegando em %ss + ZH: 空投将在 %s 秒后到达 +message.sa_decor.airdrop.landing_failed + EN: Supply drop aborted: no safe landing space. + PT: Lançamento cancelado: não há espaço seguro para o suprimento. + ZH: 补给空投中止:没有安全降落点。 +message.sa_decor.cable.already_connected + EN: These blocks are already connected + PT: Estes blocos já estão conectados + ZH: 这些方块已经连接 +message.sa_decor.cable.connected + EN: Cable connected. Used %s cable + PT: Cabo conectado. Foram usados %s cabos + ZH: 电缆已连接。已使用 %s 根电缆 +message.sa_decor.cable.cut + EN: Cut %s cable(s) and recovered %s cable + PT: %s cabo(s) cortado(s); %s cabos recuperados + ZH: 切断 %s 根电缆并回收 %s 根电缆 +message.sa_decor.cable.dimension_changed + EN: Cable selection cleared after changing dimension + PT: Seleção do cabo limpa após mudar de dimensão + ZH: 更换维度后,电缆选择已清除 +message.sa_decor.cable.drawing_started_branch + EN: First end attached to the network. Carry it and click to attach the other end + PT: Primeira ponta presa na rede. Leve o cabo e clique para fixar a outra ponta + ZH: 第一端已连接到网络。拿着它点击以连接另一端 +message.sa_decor.cable.drawing_started_source + EN: First end attached to the power source. Carry it and click to attach the other end + PT: Primeira ponta presa na fonte. Leve o cabo e clique para fixar a outra ponta + ZH: 第一端已连接到电源。拿着它点击以连接另一端 +message.sa_decor.cable.endpoint_detected + EN: Nearby energy consumer detected at %s %s %s + PT: Consumidor de energia detectado em %s %s %s + ZH: 在 %s %s %s 检测到附近的用电设备 +message.sa_decor.cable.finished_extension + EN: Powered cable extension finished. Used %s cable + PT: Extensão energizada finalizada. Foram usados %s cabo(s) + ZH: 供电电缆延长完成。已使用 %s 根电缆 +message.sa_decor.cable.finished_powered + EN: Powered cable finished. Used %s cable + PT: Cabo energizado finalizado. Foram usados %s cabo(s) + ZH: 供电电缆完成。已使用 %s 根电缆 +message.sa_decor.cable.first_point + EN: First cable point selected at %s %s %s + PT: Primeiro ponto do cabo selecionado em %s %s %s + ZH: 第一个电缆点在 %s %s %s 已选定 +message.sa_decor.cable.invalid_endpoint + EN: This block is not an electrical endpoint + PT: Este bloco não é um ponto elétrico + ZH: 这个方块不是电气端点 +message.sa_decor.cable.invalid_pair + EN: Connect an energy source to an energy consumer + PT: Conecte uma fonte de energia a um consumidor + ZH: 请将电源连接到用电设备 +message.sa_decor.cable.none_to_cut + EN: No cable crosses this block + PT: Nenhum cabo passa por este bloco + ZH: 没有电缆穿过这个方块 +message.sa_decor.cable.not_enough + EN: You need %s cable, but only have %s + PT: Você precisa de %s cabos, mas possui apenas %s + ZH: 你需要 %s 根电缆,但只有 %s 根 +message.sa_decor.cable.not_enough_points + EN: Add at least one cable segment before finishing + PT: Adicione pelo menos um segmento antes de finalizar + ZH: 结束前至少添加一段电缆 +message.sa_decor.cable.out_of_reach + EN: This point is outside the %s-block cable reach + PT: Este ponto passou do alcance de %s blocos + ZH: 这个点超出了 %s 格的电缆铺设范围 +message.sa_decor.cable.point_added + EN: Cable point added. %s segment(s), %s cable required + PT: Ponto adicionado. %s segmento(s), precisa de %s cabo(s) + ZH: 电缆点已添加。%s 段,需要 %s 根电缆 +message.sa_decor.cable.second_point_required + EN: Click a surface to attach the second end + PT: Clique em uma superfície para fixar a segunda ponta + ZH: 点击一个表面以连接第二端 +message.sa_decor.cable.selection_cleared + EN: Cable selection cleared + PT: Seleção do cabo removida + ZH: 电缆选择已清除 +message.sa_decor.cable.source_lost + EN: The cable power source is no longer available + PT: A fonte de energia do cabo não está mais disponível + ZH: 电缆电源已不可用 +message.sa_decor.cable.source_required + EN: Start the cable from a power source or an existing powered cable + PT: Comece o cabo em uma fonte de energia ou em outro cabo energizado + ZH: 请从电源或已有的供电电缆开始铺设 +message.sa_decor.cable.too_far + EN: Cable is too long. Maximum: %s blocks + PT: Cabo muito longo. Máximo: %s blocos + ZH: 电缆太长。最大:%s 格 +message.sa_decor.cable.too_many_points + EN: This cable has too many control points + PT: Este cabo possui pontos demais + ZH: 这条电缆的控制点太多了 +message.sa_decor.door_lock_applied + EN: Door locked. + PT: Porta trancada. + ZH: 门已上锁。 +message.sa_decor.door_lock_applied_hud + EN:  Door locked + PT:  Porta trancada + ZH: 门已上锁 +message.sa_decor.door_locked_short + EN: Door locked. Use a lockpick. + PT: Porta trancada. Use uma gazua. + ZH: 门已上锁。使用撬锁器。 +message.sa_decor.electronic_access.locked_survival + EN: Keycard required + PT: Keycard necessária + ZH: 需要门禁卡 +message.sa_decor.electronic_access.reader_required + EN: Electronic lock. +Use the Keycard Reader. + PT: Trava eletrônica. +Use o Leitor de Cartão. + ZH: 电子锁。 +使用门禁卡读卡器。 +message.sa_decor.electronic_security_door.reader_required + EN: Electronic lock. +Use a linked Keycard Reader. + PT: Trava eletrônica. +Use um Leitor de Cartão vinculado. + ZH: 电子锁。 +使用已连接的门禁卡读卡器。 +message.sa_decor.fuel_pump.no_power + EN: Fuel Pump requires power to dispense fuel + PT: A Bomba de Combustível precisa de energia para abastecer + ZH: 加油泵需要电力才能输出燃料 +message.sa_decor.fuel_pump_hud + EN: Fuel: %s / %s mB + PT: Combustível: %s / %s mB + ZH: 燃料:%s / %s mB +message.sa_decor.fuel_pump_tank_hud + EN: Tank: %s / %s mB (%s) + PT: Tanque: %s / %s mB (%s) + ZH: 油箱:%s / %s mB(%s) +message.sa_decor.fuse_box.activated + EN: Fuse Box activated + PT: Caixa de Fusíveis ativada + ZH: 保险丝盒已激活 +message.sa_decor.fuse_box.deactivated + EN: Fuse Box deactivated + PT: Caixa de Fusíveis desativada + ZH: 保险丝盒已停用 +message.sa_decor.fuse_box.energy + EN: Fuse Box: %s / %s FE + PT: Caixa de Fusíveis: %s / %s FE + ZH: 保险丝盒:%s / %s FE +message.sa_decor.fuse_box.no_power + EN: No stored power + PT: Sem energia armazenada + ZH: 没有储存的电力 +message.sa_decor.keycard.access_denied + EN: Access denied + PT: Acesso negado + ZH: 拒绝访问 +message.sa_decor.keycard.access_granted + EN: Access granted + PT: Acesso liberado + ZH: 允许访问 +message.sa_decor.keycard.access_granted_id + EN: Access granted | ID %s + PT: Acesso liberado | ID %s + ZH: 允许访问 | ID %s +message.sa_decor.keycard.blank_denied + EN: Unprogrammed card. +Use the Linking Tool to enroll. + PT: Cartão não programado. +Use a Linking Tool para cadastrar. + ZH: 未编程的卡片。 +使用连接工具登记。 +message.sa_decor.keycard.card_not_recognized + EN: Card not recognized + PT: Cartão não reconhecido + ZH: 卡片无法识别 +message.sa_decor.keycard.enrolled_access_granted + EN: Card enrolled. Access granted + PT: Cartão registrado. Acesso liberado + ZH: 卡片已登记。允许访问 +message.sa_decor.keycard.enrolled_access_granted_id + EN: Card enrolled | ID %s | Access granted + PT: Cartão registrado | ID %s | Acesso liberado + ZH: 卡片已登记 | ID %s | 允许访问 +message.sa_decor.keycard.reader_info + EN: ID %s | %s | Reader %s, %s, %s +Door %s, %s, %s | Readers: %s | Owner: %s + PT: ID %s | %s | Leitor %s, %s, %s +Porta %s, %s, %s | Leitores: %s | Dono: %s + ZH: ID %s | %s | 读卡器 %s, %s, %s +门 %s, %s, %s | 读卡器:%s | 所有者:%s +message.sa_decor.keycard.reader_info_unlinked + EN: Unlinked reader | Position %s, %s, %s +Owner: %s + PT: Leitor sem vínculo | Posição %s, %s, %s +Dono: %s + ZH: 未连接的读卡器 | 位置 %s, %s, %s +所有者:%s +message.sa_decor.keycard.reader_not_linked + EN: This reader is not linked to a door + PT: Este leitor não está vinculado a uma porta + ZH: 这个读卡器未连接到任何门 +message.sa_decor.keycard.reader_status_enrollment + EN: Enrollment mode + PT: Modo de cadastro + ZH: 登记模式 +message.sa_decor.keycard.reader_status_granted + EN: Access granted + PT: Acesso liberado + ZH: 允许访问 +message.sa_decor.keycard.reader_status_offline + EN: Reader offline + PT: Leitor offline + ZH: 读卡器离线 +message.sa_decor.keycard.reader_status_ready + EN: Reader ready + PT: Leitor pronto + ZH: 读卡器就绪 +message.sa_decor.keycard.reader_status_waiting + EN: Waiting for keycard + PT: Aguardando cartão + ZH: 等待门禁卡 +message.sa_decor.keycard.status_enrollment + EN: ENROLLMENT OPEN + PT: CADASTRO ABERTO + ZH: 登记开放中 +message.sa_decor.keycard.status_granted + EN: ACCESS GRANTED + PT: ACESSO LIBERADO + ZH: 允许访问 +message.sa_decor.keycard.status_locked + EN: LOCKED + PT: TRANCADO + ZH: 已锁定 +message.sa_decor.keycard.status_waiting_card + EN: WAITING FOR CARD + PT: AGUARDANDO CARTÃO + ZH: 等待刷卡 +message.sa_decor.keycard.swipe_blank_prompt_debug + EN: Unprogrammed keycard +Swipe to enroll + PT: Cartão não programado +Passe para cadastrar + ZH: 未编程的门禁卡 +刷卡以登记 +message.sa_decor.keycard.swipe_prompt + EN: Swipe keycard + PT: Passe o cartão + ZH: 刷门禁卡 +message.sa_decor.keycard.swipe_prompt_debug + EN: Swipe keycard +ID: %s + PT: Passe o cartão +ID: %s + ZH: 刷门禁卡 +ID:%s +message.sa_decor.light_switch.applied + EN: Light Switch links applied. Linked lamps: %s + PT: Links aplicados no interruptor. Lampadas linkadas: %s + ZH: 电灯开关连接已应用。已连接灯具:%s +message.sa_decor.light_switch.cleared + EN: Stored Light Switch links cleared + PT: Links guardados no interruptor limpos + ZH: 已清除储存的电灯开关连接 +message.sa_decor.light_switch.invalid + EN: Selected Light Switch is no longer valid + PT: O interruptor selecionado nao existe mais + ZH: 选中的电灯开关已失效 +message.sa_decor.light_switch.item_linked + EN: Lamp stored in switch item. Stored lamps: %s + PT: Lampada guardada no item do interruptor. Lampadas guardadas: %s + ZH: 灯具已存入开关物品。已储存灯具:%s +message.sa_decor.light_switch.item_unlinked + EN: Lamp removed from switch item. Stored lamps: %s + PT: Lampada removida do item do interruptor. Lampadas guardadas: %s + ZH: 灯具已从开关物品移除。已储存灯具:%s +message.sa_decor.light_switch.linked + EN: Lamp linked. Linked lamps: %s + PT: Lampada linkada. Lampadas linkadas: %s + ZH: 灯具已连接。已连接灯具:%s +message.sa_decor.light_switch.select_first + EN: Link lamps with the Light Switch item first + PT: Linke as lampadas com o item do interruptor primeiro + ZH: 先用开关物品连接灯具 +message.sa_decor.light_switch.selected + EN: Light Switch selected for linking + PT: Interruptor selecionado para link + ZH: 已选择电灯开关进行连接 +message.sa_decor.light_switch.too_far + EN: Lamp is too far. Max range: %s blocks + PT: Lampada muito longe. Alcance maximo: %s blocos + ZH: 灯具太远。最大范围:%s 格 +message.sa_decor.light_switch.unlinked + EN: Lamp unlinked. Linked lamps: %s + PT: Link da lampada removido. Lampadas linkadas: %s + ZH: 灯具已断开。已连接灯具:%s +message.sa_decor.linking_tool.dimension_mismatch + EN: The selected reader is in another dimension + PT: O leitor selecionado está em outra dimensão + ZH: 选中的读卡器在另一个维度 +message.sa_decor.linking_tool.enrollment_open + EN: Enrollment open | ID %s +%ss remaining + PT: Cadastro aberto | ID %s +%ss restantes + ZH: 登记开放 | ID %s +还剩 %s 秒 +message.sa_decor.linking_tool.enrollment_unavailable + EN: This reader does not have an Access Group yet + PT: Este leitor ainda não possui um Access Group + ZH: 这个读卡器还没有访问组 +message.sa_decor.linking_tool.invalid_target + EN: The reader cannot be linked to itself + PT: O leitor não pode ser vinculado a ele mesmo + ZH: 读卡器不能连接到自身 +message.sa_decor.linking_tool.linked + EN: Reader linked to %s, %s, %s + PT: Leitor vinculado a %s, %s, %s + ZH: 读卡器已连接到 %s, %s, %s +message.sa_decor.linking_tool.linked_locked + EN: Reader linked. Door locked at %s, %s, %s + PT: Leitor vinculado. Porta trancada em %s, %s, %s + ZH: 读卡器已连接。门已在 %s, %s, %s 处锁定 +message.sa_decor.linking_tool.linked_locked_existing_group + EN: Group linked | ID %s | Door %s, %s, %s +Readers: %s + PT: Grupo vinculado | ID %s | Porta %s, %s, %s +Leitores: %s + ZH: 访问组已连接 | ID %s | 门 %s, %s, %s +读卡器:%s +message.sa_decor.linking_tool.linked_locked_waiting_card + EN: Reader linked. Swipe an unprogrammed Keycard to register access + PT: Leitor vinculado. Passe uma Keycard não programada para registrar o acesso + ZH: 读卡器已连接。刷一张未编程的门禁卡以登记访问权限 +message.sa_decor.linking_tool.linked_locked_waiting_card_id + EN: Door locked | ID %s +Door %s, %s, %s | Swipe the first card + PT: Porta trancada | ID %s +Porta %s, %s, %s | Passe o primeiro cartão + ZH: 门已锁定 | ID %s +门 %s, %s, %s | 刷第一张卡 +message.sa_decor.linking_tool.no_reader_selected + EN: Select a keycard reader first + PT: Selecione um leitor de cartão primeiro + ZH: 请先选择门禁卡读卡器 +message.sa_decor.linking_tool.pair_requires_door + EN: Link the first reader to a door before pairing another reader + PT: Vincule o primeiro leitor a uma porta antes de parear outro leitor + ZH: 先连接第一个读卡器到门,再配对其他读卡器 +message.sa_decor.linking_tool.reader_cleared + EN: Reader link cleared + PT: Vínculo do leitor removido + ZH: 读卡器连接已清除 +message.sa_decor.linking_tool.reader_missing + EN: The selected reader no longer exists + PT: O leitor selecionado não existe mais + ZH: 选中的读卡器已不存在 +message.sa_decor.linking_tool.reader_selected + EN: Reader selected at %s, %s, %s + PT: Leitor selecionado em %s, %s, %s + ZH: 已在 %s, %s, %s 选择读卡器 +message.sa_decor.linking_tool.reader_selected_configured + EN: Reader %s, %s, %s | ID %s +Door %s, %s, %s + PT: Leitor %s, %s, %s | ID %s +Porta %s, %s, %s + ZH: 读卡器 %s, %s, %s | ID %s +门 %s, %s, %s +message.sa_decor.linking_tool.readers_paired + EN: Readers paired | ID %s | Readers: %s + PT: Leitores pareados | ID %s | Leitores: %s + ZH: 读卡器已配对 | ID %s | 读卡器:%s +message.sa_decor.linking_tool.selection_cleared + EN: Selection cleared + PT: Seleção limpa + ZH: 选择已清除 +message.sa_decor.linking_tool.target_not_lockable + EN: Target must be a supported door + PT: O alvo precisa ser uma porta compatível + ZH: 目标必须是受支持的门 +message.sa_decor.lock_applied + EN: Lock applied. + PT: Cadeado aplicado. + ZH: 挂锁已安装。 +message.sa_decor.lock_applied_hud + EN:  Lock applied + PT:  Cadeado aplicado + ZH: 挂锁已安装 +message.sa_decor.locked_hud + EN: It's locked + PT: Está trancado + ZH: 它被锁住了 +message.sa_decor.locked_short + EN: Locked. Use a lockpick. + PT: Trancado. Use uma gazua. + ZH: 已锁定。使用撬锁器。 +message.sa_decor.loose_pickup.prompt + EN: Pick up + PT: Pegar + ZH: 捡起 +message.sa_decor.loot_break.blocked + EN: Protected loot crate - it cannot be broken. + PT: Loot crate protegida - não pode ser quebrada. + ZH: 受保护的战利品箱 - 无法破坏。 +message.sa_decor.loot_break.blocked_shift + EN: Protected loot crate - hold Shift to break it. + PT: Loot crate protegida - segure Shift para quebrar. + ZH: 受保护的战利品箱 - 按住 Shift 破坏它。 +message.sa_decor.loot_wand.marked + EN: Marked container at %s %s %s as loot crate '%s' locked=%s + PT: Container em %s %s %s marcado como loot crate '%s' locked=%s + ZH: 已将 %s %s %s 处的容器标记为战利品箱 '%s',锁定=%s +message.sa_decor.loot_wand.missing_config + EN: Missing loot crate config: %s + PT: Config de loot crate nao encontrada: %s + ZH: 缺少战利品箱配置:%s +message.sa_decor.loot_wand.no_configs + EN: No loot crate configs loaded. + PT: Nenhuma config de loot crate carregada. + ZH: 没有加载任何战利品箱配置。 +message.sa_decor.loot_wand.not_container + EN: This block is not a loot container. + PT: Este bloco nao e um container de loot. + ZH: 这个方块不是战利品容器。 +message.sa_decor.loot_wand.selected + EN: Selected loot config: %s + PT: Config de loot selecionada: %s + ZH: 已选择战利品配置:%s +message.sa_decor.loot_wand.selected_hud + EN: Selected: %s + PT: Selecionado: %s + ZH: 已选择:%s +message.sa_decor.mechanical_lock.already_keyed + EN: This padlock already has a key + PT: Este cadeado já possui uma chave + ZH: 这把挂锁已经有钥匙了 +message.sa_decor.mechanical_lock.already_locked + EN: This door is already locked + PT: Esta porta já está trancada + ZH: 这扇门已经锁上了 +message.sa_decor.mechanical_lock.break_denied + EN: The padlock prevents you from breaking this + PT: O cadeado impede que você quebre isto + ZH: 挂锁阻止你破坏这个 +message.sa_decor.mechanical_lock.installed + EN: Padlock secured + PT: Cadeado instalado + ZH: 挂锁已固定 +message.sa_decor.mechanical_lock.installed_debug + EN: Padlock secured | Key ID %s + PT: Cadeado instalado | ID da chave %s + ZH: 挂锁已固定 | 钥匙 ID %s +message.sa_decor.mechanical_lock.installed_debug_keyed + EN: Padlock secured | Keyed | ID %s + PT: Cadeado instalado | Com chave | ID %s + ZH: 挂锁已固定 | 已配钥匙 | ID %s +message.sa_decor.mechanical_lock.installed_debug_uncut + EN: Padlock secured | Unkeyed | ID %s + PT: Cadeado instalado | Sem chave | ID %s + ZH: 挂锁已固定 | 未配钥匙 | ID %s +message.sa_decor.mechanical_lock.installed_existing + EN: Padlock secured + PT: Cadeado instalado + ZH: 挂锁已固定 +message.sa_decor.mechanical_lock.installed_keyed + EN: Padlock secured + PT: Cadeado instalado + ZH: 挂锁已固定 +message.sa_decor.mechanical_lock.installed_uncut + EN: Padlock secured. It needs a key. + PT: Cadeado instalado. Ainda precisa de uma chave. + ZH: 挂锁已固定。它需要一把钥匙。 +message.sa_decor.mechanical_lock.key_reset + EN: Key reset + PT: Chave resetada + ZH: 钥匙已重置 +message.sa_decor.mechanical_lock.key_set + EN: Key cut to match this padlock + PT: Chave cortada para este cadeado + ZH: 钥匙已配好,与这把挂锁匹配 +message.sa_decor.mechanical_lock.key_set_debug + EN: Key cut | ID %s + PT: Chave cortada | ID %s + ZH: 钥匙已配好 | ID %s +message.sa_decor.mechanical_lock.key_set_denied + EN: Only the owner can cut a new key + PT: Apenas o dono pode cortar uma nova chave + ZH: 只有所有者才能配新钥匙 +message.sa_decor.mechanical_lock.key_set_ownerless_denied + EN: Ownerless locks can only be configured in Creative/admin mode + PT: Cadeados sem dono só podem ser configurados no Criativo/admin + ZH: 无主挂锁只能在创造/管理员模式下配置 +message.sa_decor.mechanical_lock.locked + EN: Locked + PT: Trancado + ZH: 已锁定 +message.sa_decor.mechanical_lock.locked_uncut + EN: Locked. No key has been cut yet. + PT: Trancado. Nenhuma chave foi cortada ainda. + ZH: 已锁定。还没有配过钥匙。 +message.sa_decor.mechanical_lock.loot_separate + EN: Loot crates use their own lock system + PT: Loot Crates usam o próprio sistema de lock + ZH: 战利品箱使用自己的锁系统 +message.sa_decor.mechanical_lock.player_protected + EN: Player-owned padlock + PT: Cadeado protegido pelo dono + ZH: 玩家所有的挂锁 +message.sa_decor.mechanical_lock.removed + EN: Padlock removed + PT: Cadeado removido + ZH: 挂锁已移除 +message.sa_decor.mechanical_lock.unlocked + EN: Padlock unlocked + PT: Cadeado destrancado + ZH: 挂锁已解锁 +message.sa_decor.mechanical_lock.vertical_face + EN: Place the padlock on a side face + PT: Coloque o cadeado em uma face lateral + ZH: 请把挂锁放在侧面 +message.sa_decor.mechanical_lock.wrong_key + EN: This key does not fit + PT: Esta chave não serve + ZH: 这把钥匙不匹配 +message.sa_decor.open_pass.accepted_hud + EN: Payment accepted + PT: Pagamento aceito + ZH: 已接受付款 +message.sa_decor.open_pass.not_enough_hud + EN: Not enough payment: %s + PT: Pagamento insuficiente: %s + ZH: 付款不足:%s +message.sa_decor.open_pass.required_hud + EN: Payment required: %s + PT: Pagamento necessário: %s + ZH: 需要付款:%s +message.sa_decor.per_player_container_busy_hud + EN: Container is already in use + PT: Container já em uso + ZH: 容器正在使用中 +message.sa_decor.roof.invalid_camouflage + EN: Use a full solid block. + PT: Use um bloco sólido completo. + ZH: 请使用完整的实心方块。 +message.sa_decor.rotation_wand.axis.pitch + EN: Pitch + PT: Pitch + ZH: 俯仰 +message.sa_decor.rotation_wand.axis.roll + EN: Roll + PT: Roll + ZH: 翻滚 +message.sa_decor.rotation_wand.axis.yaw + EN: Yaw + PT: Yaw + ZH: 偏航 +message.sa_decor.rotation_wand.mode + EN: Rotation mode: %s + PT: Modo de rotacao: %s + ZH: 旋转模式:%s +message.sa_decor.rotation_wand.reset + EN: Visual rotation reset + PT: Rotacao visual resetada + ZH: 视觉旋转已重置 +message.sa_decor.rotation_wand.rotated + EN: %s: %s° + PT: %s: %s° + ZH: %s:%s° +message.sa_decor.structure_access.card_candidate_added + EN: Keycard spawn added | Spots: %s + PT: Ponto de Keycard adicionado | Pontos: %s + ZH: 门禁卡生成点已添加 | 位置:%s +message.sa_decor.structure_access.card_candidate_removed + EN: Keycard spawn removed | Spots: %s + PT: Ponto de Keycard removido | Pontos: %s + ZH: 门禁卡生成点已移除 | 位置:%s +message.sa_decor.structure_access.controller_missing + EN: The selected Key controller no longer exists + PT: A Key controladora não existe mais + ZH: 选中的门控制器已不存在 +message.sa_decor.structure_access.creative_only + EN: Creative/admin tool only + PT: Ferramenta apenas para criativo/admin + ZH: 仅限创造/管理员工具 +message.sa_decor.structure_access.dimension_mismatch + EN: Structure Access selection cleared: different dimension + PT: Seleção do Structure Access limpa: outra dimensão + ZH: 结构门禁选择已清除:维度不同 +message.sa_decor.structure_access.electronic_click_hint + EN: Add a door, Readers or Loose Keycards + PT: Adicione a porta, Readers ou Loose Keycards + ZH: 添加一扇门、读卡器或散落门禁卡 +message.sa_decor.structure_access.electronic_ready + EN: Electronic structure access ready +Readers: %s | Random card spots: %s + PT: Acesso eletrônico da estrutura pronto +Readers: %s | Pontos aleatórios de card: %s + ZH: 电子结构门禁已就绪 +读卡器:%s | 随机门禁卡位置:%s +message.sa_decor.structure_access.electronic_summary + EN: Electronic setup | Door: %s | Readers: %s | Cards: %s +Shift-click primary Reader to finish + PT: Estrutura eletrônica | Porta: %s | Readers: %s | Cards: %s +Shift-clique no Reader principal para finalizar + ZH: 电子设置 | 门:%s | 读卡器:%s | 门禁卡:%s +Shift + 点击主读卡器完成 +message.sa_decor.structure_access.electronic_target_invalid + EN: Electronic access requires a supported door + PT: O acesso eletrônico precisa de uma porta compatível + ZH: 电子门禁需要一扇受支持的门 +message.sa_decor.structure_access.key_candidate_added + EN: Key spawn added | Spots: %s + PT: Ponto de Key adicionado | Pontos: %s + ZH: 钥匙生成点已添加 | 位置:%s +message.sa_decor.structure_access.key_candidate_removed + EN: Key spawn removed | Spots: %s + PT: Ponto de Key removido | Pontos: %s + ZH: 钥匙生成点已移除 | 位置:%s +message.sa_decor.structure_access.mechanical_click_hint + EN: Add Loose Keys, then Shift-click the selected Padlock to finish + PT: Adicione Loose Keys e depois Shift-clique no Padlock selecionado + ZH: 添加散落钥匙,然后 Shift + 点击选中的挂锁完成 +message.sa_decor.structure_access.mechanical_ready + EN: Mechanical structure access ready +Random Key spots: %s + PT: Acesso mecânico da estrutura pronto +Pontos aleatórios de Key: %s + ZH: 机械结构门禁已就绪 +随机钥匙位置:%s +message.sa_decor.structure_access.mechanical_selected + EN: Structure Padlock selected: %s, %s, %s + PT: Padlock da estrutura selecionado: %s, %s, %s + ZH: 已选择结构挂锁:%s, %s, %s +message.sa_decor.structure_access.mechanical_summary + EN: Mechanical structure setup | Key spots: %s +Shift-click Padlock to finish + PT: Estrutura mecânica | Pontos de Key: %s +Shift-clique no Padlock para finalizar + ZH: 机械结构设置 | 钥匙位置:%s +Shift + 点击挂锁完成 +message.sa_decor.structure_access.need_card_candidate + EN: Add at least one Loose Keycard spawn + PT: Adicione pelo menos um ponto com Loose Keycard + ZH: 至少添加一个散落门禁卡生成点 +message.sa_decor.structure_access.need_door + EN: Select the access door first + PT: Selecione primeiro a porta de acesso + ZH: 请先选择门 +message.sa_decor.structure_access.need_key_candidate + EN: Add at least one Loose Key spawn + PT: Adicione pelo menos um ponto com Loose Key + ZH: 至少添加一个散落钥匙生成点 +message.sa_decor.structure_access.padlock_missing + EN: The selected Padlock no longer exists + PT: O Padlock selecionado não existe mais + ZH: 选中的挂锁已不存在 +message.sa_decor.structure_access.primary_reader_missing + EN: The primary Reader no longer exists + PT: O Reader principal não existe mais + ZH: 主读卡器已不存在 +message.sa_decor.structure_access.reader_added + EN: Reader added | Extra readers: %s + PT: Reader adicionado | Extras: %s + ZH: 读卡器已添加 | 额外读卡器:%s +message.sa_decor.structure_access.reader_removed + EN: Reader removed | Extra readers: %s + PT: Reader removido | Extras: %s + ZH: 读卡器已移除 | 额外读卡器:%s +message.sa_decor.structure_access.reader_selected + EN: Primary Reader selected: %s, %s, %s + PT: Reader principal selecionado: %s, %s, %s + ZH: 已选择主读卡器:%s, %s, %s +message.sa_decor.structure_access.select_source_first + EN: Select a Padlock or Keycard Reader first + PT: Selecione primeiro um Padlock ou Keycard Reader + ZH: 请先选择挂锁或门禁卡读卡器 +message.sa_decor.structure_access.selection_cleared + EN: Structure Access selection cleared + PT: Seleção do Structure Access limpa + ZH: 结构门禁选择已清除 +message.sa_decor.structure_access.target_set + EN: Door set: %s, %s, %s + PT: Porta definida: %s, %s, %s + ZH: 门已设置:%s, %s, %s +message.sa_decor.wall_clock.time + EN: It's: %s + PT: Agora são: %s + ZH: 现在是:%s +qte.sa_decor.escape_bear_trap + EN: Press [F] to escape + PT: Aperte [F] para escapar + ZH: 按 [F] 逃脱 +qte.sa_decor.force_open_lock + EN: Hold to force open + PT: Segure para forçar abertura + ZH: 按住强制打开 +qte.sa_decor.force_open_lock_strike + EN: Hit to force open + PT: Bata para forçar abertura + ZH: 击打以强制打开 +qte.sa_decor.mechanical_lock.cut_key + EN: Cut key + PT: Cortar chave + ZH: 配钥匙 +qte.sa_decor.mechanical_lock.pick + EN: Pick lock + PT: Abrir com lockpick + ZH: 撬锁 +qte.sa_decor.mechanical_lock.try_key + EN: Try key + PT: Testar chave + ZH: 试钥匙 +qte.sa_decor.mechanical_lock.unlock + EN: Unlock + PT: Destrancar + ZH: 解锁 +qte.sa_decor.remove_barricade + EN: Press F to remove barricade + PT: Aperte F para remover a barricada + ZH: 按 F 移除路障 +qte.sa_decor.search_loot_crate + EN: Search loot crate + PT: Vasculhar loot crate + ZH: 搜索战利品箱 +qte.sa_decor.searching + EN: Searching... + PT: Vasculhando... + ZH: 搜索中... +screen.sa_decor.loot_wand + EN: Loot Crate Wand + PT: Loot Crate Wand + ZH: 战利品箱魔杖 +screen.sa_decor.loot_wand.current + EN: Current: %s + PT: Atual: %s + ZH: 当前:%s +screen.sa_decor.loot_wand.subtitle + EN: Select a loot profile + PT: Selecione um perfil de loot + ZH: 选择一个战利品方案 +screen.sa_decor.loot_wand.tip + EN: Click a config to select it. Use the scrollbar on the right. + PT: Clique em uma config para selecionar. Use a scrollbar ao lado. + ZH: 点击配置以选择它。使用右侧的滚动条。 +text.sa_decor.forcing + EN: Forcing... + PT: Forçando... + ZH: 强制中... +text.sa_decor.forcing_open + EN: Forcing open... + PT: Forçando abertura... + ZH: 强制打开中... +text.sa_decor.loot_prompt_locked_prefix + EN: [Locked] + PT: [Trancado] + ZH: [已锁定] +text.sa_decor.loot_prompt_locked_suffix + EN: %s + PT: %s + ZH: %s +text.sa_decor.loot_prompt_right_click_prefix + EN: [Right Click] + PT: [Clique Direito] + ZH: [右键] +text.sa_decor.loot_prompt_suffix + EN: to loot %s... + PT: para vasculhar %s... + ZH: 以搜刮 %s... +text.sa_decor.loot_prompt_unlock_suffix + EN: to unlock %s... + PT: para destrancar %s... + ZH: 以解锁 %s... +text.sa_decor.searching + EN: Searching... + PT: Vasculhando... + ZH: 搜索中... +tooltip.sa_decor.barricade_construction.line1 + EN: Recommended: build barricades directly in the world + PT: Recomendado: construa barricadas diretamente no mundo + ZH: 建议:直接在世界上建造路障 +tooltip.sa_decor.barricade_construction.line2 + EN: Main hand: Hammer | Offhand: Scrap Wood | Keep Nails in inventory + PT: Mão principal: Martelo | Offhand: Scrap Wood | Tenha Nails no inventário + ZH: 主手:锤子 | 副手:废木料 | 背包里带上钉子 +tooltip.sa_decor.barricade_construction.line3 + EN: Right-click to build each stage + PT: Clique direito para construir cada estágio + ZH: 右键建造每个阶段 +tooltip.sa_decor.barricade_construction.line4 + EN: Press R to switch between normal and big barricades + PT: Pressione R para alternar entre barricada normal e grande + ZH: 按 R 切换普通与大型路障 +tooltip.sa_decor.cable.connect + EN: Start from a power source or an existing powered cable + PT: Comece em uma fonte ou em outro cabo energizado + ZH: 从电源或已有的供电电缆开始 +tooltip.sa_decor.cable.cost + EN: Each cable run reaches up to 16 blocks + PT: Cada trecho alcança até 16 blocos + ZH: 每段电缆最长可达 16 格 +tooltip.sa_decor.cable.cut + EN: Use SA Core pliers to cut and recover cable + PT: Use o alicate do SA Core para cortar e recuperar o cabo + ZH: 使用 SA 核心的钳子切断并回收电缆 +tooltip.sa_decor.cable.draw + EN: Click to attach the first end; walk and click again to attach the other end + PT: Clique para prender a primeira ponta; caminhe e clique novamente para fixar + ZH: 点击连接第一端;走过去再点击连接另一端 +tooltip.sa_decor.cable.finish + EN: Shift + click air to cancel placement + PT: Shift + clique no ar para cancelar a colocação + ZH: Shift + 点击空气取消放置 +tooltip.sa_decor.cable.power + EN: Must begin at a power source or powered cable + PT: Deve começar em uma fonte ou cabo energizado + ZH: 必须从电源或供电电缆开始 +tooltip.sa_decor.cable.visibility + EN: Hold cable or pliers to view the network + PT: Segure o cabo ou o alicate para visualizar a rede + ZH: 手持电缆或钳子以查看网络 +tooltip.sa_decor.camouflage + EN: Right-click with a solid block; empty-hand click removes it + PT: Clique com bloco sólido; clique de mão vazia remove + ZH: 手持实心方块右键;空手点击移除它 +tooltip.sa_decor.container + EN: Stores items + PT: Armazena itens + ZH: 储存物品 +tooltip.sa_decor.dangerous + EN: Dangerous to walk through + PT: Perigoso ao atravessar + ZH: 踩上去很危险 +tooltip.sa_decor.electrifies_fences + EN: Electrifies connected urban fences + PT: Eletrifica cercas urbanas conectadas + ZH: 使连接的城市围栏通电 +tooltip.sa_decor.fire_hydrant.line1 + EN: Forge water tank for buckets and fluid pipes + PT: Tanque Forge de agua para baldes e pipes + ZH: 供桶和流体管道使用的水源水箱 +tooltip.sa_decor.fire_hydrant.line2 + EN: Capacity: 16L of water + PT: Capacidade: 16L de agua + ZH: 容量:16L 水 +tooltip.sa_decor.fire_hydrant.line3 + EN: Stays full with water up to 3 blocks below + PT: Fica cheio com agua ate 3 blocos abaixo + ZH: 下方 3 格以内有水时保持满水 +tooltip.sa_decor.fire_hydrant.line4 + EN: Use buckets or pipes to fill and drain it + PT: Use baldes ou pipes para encher e esvaziar + ZH: 使用桶或管道注水与排水 +tooltip.sa_decor.fly_emitter.line1 + EN: Invisible fly marker for dirty areas + PT: Marcador invisivel de moscas para areas sujas + ZH: 用于脏乱区域的隐形苍蝇标记 +tooltip.sa_decor.fly_emitter.line2 + EN: Right-click placed emitter to increase intensity + PT: Clique direito no emissor colocado para aumentar a intensidade + ZH: 右键已放置的发生器提高强度 +tooltip.sa_decor.fly_emitter.line3 + EN: Crouch + right-click to decrease intensity + PT: Agache + clique direito para diminuir a intensidade + ZH: 潜行 + 右键降低强度 +tooltip.sa_decor.fly_emitter.line4 + EN: Only visible while holding the emitter item + PT: So aparece enquanto segura o item do emissor + ZH: 手持发生器物品时才能看到 +tooltip.sa_decor.fuse_box.line1 + EN: Wall-mounted structure power source + PT: Fonte de energia de parede para estruturas + ZH: 壁挂式结构电源 +tooltip.sa_decor.fuse_box.line2 + EN: Creative-placed boxes start charged + PT: Caixas colocadas no criativo começam carregadas + ZH: 创造模式放置的盒子初始带电 +tooltip.sa_decor.fuse_box.line3 + EN: Open it, then right-click to activate + PT: Abra e clique direito para ativar + ZH: 打开它,然后右键激活 +tooltip.sa_decor.fuse_box.line4 + EN: Crouch + right-click while open to close + PT: Agache + clique direito aberta para fechar + ZH: 打开状态下潜行 + 右键关闭 +tooltip.sa_decor.garage_door.line1 + EN: Place at the bottom-center of a clear 5x4 opening + PT: Coloque no centro inferior de um espaço livre 5x4 + ZH: 放置在净空 5x4 开口的底部中央 +tooltip.sa_decor.garage_door.line2 + EN: Right-click the door or rails to open and close + PT: Clique com o botão direito na porta ou trilhos para abrir e fechar + ZH: 右键门或轨道以开关 +tooltip.sa_decor.garage_door.line3 + EN: Redstone power opens it; removing power closes it + PT: Sinal de redstone abre; remover o sinal fecha + ZH: 红石信号打开它;移除信号关闭它 +tooltip.sa_decor.gas_barrel.amount + EN: %s / %s mB + PT: + ZH: %s / %s mB +tooltip.sa_decor.gas_barrel.empty + EN: Empty / %s mB + PT: + ZH: 空 / %s mB +tooltip.sa_decor.gas_barrel.liquid + EN: Liquid: %s + PT: + ZH: 液体:%s +tooltip.sa_decor.has_variants + EN: Use the Variation Tool to change appearance + PT: Use a Ferramenta de Variação para trocar a aparência + ZH: 使用变体工具更换外观 +tooltip.sa_decor.key.access_id + EN: Key ID: %s + PT: ID da chave: %s + ZH: 钥匙 ID:%s +tooltip.sa_decor.key.blank + EN: Uncut key + PT: Chave sem corte + ZH: 未配钥匙 +tooltip.sa_decor.key.blank_hint + EN: Use on a padlock to cut this key + PT: Use em um cadeado para cortar esta chave + ZH: 对着挂锁使用以配这把钥匙 +tooltip.sa_decor.key.copy_hint + EN: Craft with one blank Key to make a copy + PT: Combine com uma Chave em branco para criar uma cópia + ZH: 与一把空白钥匙合成以制作副本 +tooltip.sa_decor.key.owner + EN: Owner: %s + PT: Dono: %s + ZH: 所有者:%s +tooltip.sa_decor.key.programmed + EN: Cut key + PT: Chave cortada + ZH: 已配钥匙 +tooltip.sa_decor.key.reset_hint + EN: Place alone in the crafting grid to reset + PT: Coloque sozinha na grade de criação para resetar + ZH: 单独放入合成格以重置 +tooltip.sa_decor.keycard.access_id + EN: ID: %s + PT: ID: %s + ZH: ID:%s +tooltip.sa_decor.keycard.blank + EN: Unprogrammed + PT: Não programado + ZH: 未编程 +tooltip.sa_decor.keycard.dimension + EN: Dimension: %s + PT: Dimensão: %s + ZH: 维度:%s +tooltip.sa_decor.keycard.owner + EN: Owner: %s + PT: Dono: %s + ZH: 所有者:%s +tooltip.sa_decor.keycard.programmed + EN: Programmed + PT: Programado + ZH: 已编程 +tooltip.sa_decor.keycard.reader_pos + EN: Reader: %s, %s, %s + PT: Leitor: %s, %s, %s + ZH: 读卡器:%s, %s, %s +tooltip.sa_decor.keycard.target_pos + EN: Door: %s, %s, %s + PT: Porta: %s, %s, %s + ZH: 门:%s, %s, %s +tooltip.sa_decor.light_switch.line1 + EN: Crouch + right-click lamps while holding this item + PT: Agache + clique direito nas lampadas segurando este item + ZH: 手持此物品潜行 + 右键灯具 +tooltip.sa_decor.light_switch.line2 + EN: Then place the switch to apply those lamp links + PT: Depois coloque o interruptor para aplicar os links + ZH: 然后放置开关以应用这些灯具连接 +tooltip.sa_decor.light_switch.line3 + EN: Crouch + right-click air to clear stored links + PT: Agache + clique direito no ar para limpar os links + ZH: 潜行 + 右键空气以清除储存的连接 +tooltip.sa_decor.light_switch.line4 + EN: Max range after placing: 24 blocks + PT: Alcance maximo apos colocar: 24 blocos + ZH: 放置后最大范围:24 格 +tooltip.sa_decor.light_switch.link_mode + EN: Linked lamps stored: %s + PT: Lampadas guardadas: %s + ZH: 已储存连接的灯具:%s +tooltip.sa_decor.linking_tool.line1 + EN: Select readers and link their access group to a door + PT: Seleciona leitores e vincula o grupo a uma porta + ZH: 选择读卡器并将其访问组连接到门 +tooltip.sa_decor.linking_tool.line2 + EN: Reader -> Door: create/link the Access Group + PT: Leitor -> Porta: cria/vincula o Access Group + ZH: 读卡器 -> 门:创建/连接访问组 +tooltip.sa_decor.linking_tool.line3 + EN: Reader -> Reader: add another reader to the same group + PT: Leitor -> Leitor: adiciona outro leitor ao mesmo grupo + ZH: 读卡器 -> 读卡器:将另一个读卡器加入同一组 +tooltip.sa_decor.linking_tool.line4 + EN: Shift + reader: enroll 15s | Shift in air: clear selection + PT: Shift + leitor: cadastro 15s | Shift no ar: limpa seleção + ZH: Shift + 读卡器:登记 15 秒 | 空中 Shift:清除选择 +tooltip.sa_decor.linking_tool.selected + EN: Selected reader: %s, %s, %s + PT: Leitor selecionado: %s, %s, %s + ZH: 已选择读卡器:%s, %s, %s +tooltip.sa_decor.loot_wand.no_config + EN: Selected config: none + PT: Config selecionada: nenhuma + ZH: 已选择配置:无 +tooltip.sa_decor.loot_wand.selected + EN: Selected config: %s + PT: Config selecionada: %s + ZH: 已选择配置:%s +tooltip.sa_decor.loot_wand.shift_use + EN: Shift + right-click on a container marks it as locked. + PT: Shift + clique direito em um container marca ele como trancado. + ZH: Shift + 右键容器将其标记为已锁定。 +tooltip.sa_decor.loot_wand.use + EN: Right-click air to open the config selector. Right-click a container to mark it. + PT: Clique direito no ar para abrir o seletor de configs. Clique em um container para marcar. + ZH: 右键空气打开配置选择器。右键容器进行标记。 +tooltip.sa_decor.microwave + EN: Insert food, close it, and wait for it to cook + PT: Insira comida, feche e aguarde cozinhar + ZH: 放入食物,关上,等待加热 +tooltip.sa_decor.noisy_dangerous + EN: Makes noise and can cause bleeding + PT: Faz barulho e pode causar sangramento + ZH: 会产生噪音并可能造成流血 +tooltip.sa_decor.padlock.access_id + EN: Key ID: %s + PT: ID da chave: %s + ZH: 钥匙 ID:%s +tooltip.sa_decor.padlock.keyed + EN: Keyed + PT: Com chave + ZH: 已配钥匙 +tooltip.sa_decor.padlock.owner + EN: Owner: %s + PT: Dono: %s + ZH: 所有者:%s +tooltip.sa_decor.padlock.unkeyed + EN: Unkeyed + PT: Sem chave + ZH: 未配钥匙 +tooltip.sa_decor.requires_energy + EN: Requires FE energy to operate + PT: Requer energia FE para funcionar + ZH: 运行时需要 FE 能量 +tooltip.sa_decor.rotation_wand.left_click + EN: Left-click block: reset visual rotation + PT: Clique esquerdo no bloco: reseta a rotacao visual + ZH: 左键点击方块:重置视觉旋转 +tooltip.sa_decor.rotation_wand.mode + EN: Mode: %s + PT: Modo: %s + ZH: 模式:%s +tooltip.sa_decor.rotation_wand.shift_use + EN: Shift + right-click block: rotate backwards + PT: Shift + clique direito no bloco: gira ao contrario + ZH: Shift + 右键方块:反向旋转 +tooltip.sa_decor.rotation_wand.use + EN: Right-click block: rotate visual + PT: Clique direito no bloco: gira o visual + ZH: 右键方块:旋转外观 +tooltip.sa_decor.shift_to_view + EN: Shift to view + PT: Shift para ver + ZH: 按住 Shift 查看 +tooltip.sa_decor.sittable + EN: Click to sit + PT: Clique para sentar + ZH: 点击坐下 +tooltip.sa_decor.small_garage_door.line1 + EN: Place at the bottom-center of a clear 3x3 opening + PT: Coloque no centro inferior de um espaço livre 3x3 + ZH: 放置在净空 3x3 开口的底部中央 +tooltip.sa_decor.small_garage_door.line2 + EN: Right-click the door or rails to open and close + PT: Clique com o botão direito na porta ou trilhos para abrir e fechar + ZH: 右键门或轨道以开关 +tooltip.sa_decor.small_garage_door.line3 + EN: Redstone power opens it; removing power closes it + PT: Sinal de redstone abre; remover o sinal fecha + ZH: 红石信号打开它;移除信号关闭它 +tooltip.sa_decor.stackable + EN: Stackable + PT: Empilhável + ZH: 可堆叠 +tooltip.sa_decor.stackable_count + EN: Stacks up to %s + PT: Empilhável até %s + ZH: 最多堆叠 %s 个 +tooltip.sa_decor.structure_access_tool.line1 + EN: Creative tool for structure access + PT: Ferramenta criativa para acesso de estruturas + ZH: 用于结构门禁的创造工具 +tooltip.sa_decor.structure_access_tool.line2 + EN: Mechanical: Padlock -> Loose Keys + PT: Mecânico: Padlock -> Loose Keys + ZH: 机械:挂锁 -> 散落钥匙 +tooltip.sa_decor.structure_access_tool.line3 + EN: Electronic: Reader -> door / Readers / Loose Keycards + PT: Eletrônico: Reader -> porta / Readers / Loose Keycards + ZH: 电子:读卡器 -> 门 / 读卡器 / 散落门禁卡 +tooltip.sa_decor.structure_access_tool.line4 + EN: Shift-click selected Padlock/Reader to finalize + PT: Shift-clique no Padlock/Reader selecionado para finalizar + ZH: Shift + 点击选中的挂锁/读卡器完成 +tooltip.sa_decor.structure_access_tool.line5 + EN: Shift-right-click air clears the current selection + PT: Shift + clique direito no ar limpa a seleção + ZH: Shift + 右键空气清除当前选择 +tooltip.sa_decor.structure_access_tool.selected_electronic + EN: Primary Reader: %s, %s, %s + PT: Reader principal: %s, %s, %s + ZH: 主读卡器:%s, %s, %s +tooltip.sa_decor.structure_access_tool.selected_mechanical + EN: Selected Padlock: %s, %s, %s + PT: Padlock selecionado: %s, %s, %s + ZH: 已选择挂锁:%s, %s, %s +tooltip.sa_decor.water_source + EN: Use an empty bucket to collect water + PT: Use um balde vazio para coletar água + ZH: 使用空桶收集水 +TOTAL 776 diff --git a/_sa_hanhua_out/_tmp/drop_cellphone.py b/_sa_hanhua_out/_tmp/drop_cellphone.py new file mode 100644 index 0000000..daa5767 --- /dev/null +++ b/_sa_hanhua_out/_tmp/drop_cellphone.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +"""剔除 cellphone(手机,带模型)""" +import os, json + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +DROP = ['cellphone'] + +for sub in ['behavior_pack_kcH4M5u0/netease_items_beh', 'resource_pack_t7eJjrxY/netease_items_res']: + for m in DROP: + p = os.path.join(BASE, sub, 'dn_sa_%s.json' % m) + if os.path.exists(p): + os.remove(p) +p = os.path.join(BASE, 'resource_pack_t7eJjrxY/textures/items/cellphone.png') +if os.path.exists(p): + os.remove(p) + +IP = os.path.join(BASE, 'resource_pack_t7eJjrxY/textures/item_texture.json') +it = json.load(open(IP, encoding='utf-8')) +it['texture_data'].pop('dn_sa:cellphone', None) +json.dump(it, open(IP, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + +LP = os.path.join(BASE, 'resource_pack_t7eJjrxY/texts/zh_CN.lang') +lines = open(LP, encoding='utf-8').read().splitlines() +keep = [l for l in lines if not l.startswith('item.dn_sa:cellphone.')] +open(LP, 'w', encoding='utf-8').write('\n'.join(keep) + ('\n' if keep else '')) + +beh = [f for f in os.listdir(os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh')) if f.endswith('.json')] +print('beh json 总数:', len(beh), '| 材料数:', len(beh) - 44) diff --git a/_sa_hanhua_out/_tmp/drop_dirty_water.py b/_sa_hanhua_out/_tmp/drop_dirty_water.py new file mode 100644 index 0000000..148e86f --- /dev/null +++ b/_sa_hanhua_out/_tmp/drop_dirty_water.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +"""剔除 dirty_water_bottle(脏水瓶,带模型)""" +import os, json + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +DROP = ['dirty_water_bottle'] + +for sub in ['behavior_pack_kcH4M5u0/netease_items_beh', 'resource_pack_t7eJjrxY/netease_items_res']: + for m in DROP: + p = os.path.join(BASE, sub, 'dn_sa_%s.json' % m) + if os.path.exists(p): + os.remove(p) +p = os.path.join(BASE, 'resource_pack_t7eJjrxY/textures/items/dirty_water_bottle.png') +if os.path.exists(p): + os.remove(p) + +IP = os.path.join(BASE, 'resource_pack_t7eJjrxY/textures/item_texture.json') +it = json.load(open(IP, encoding='utf-8')) +it['texture_data'].pop('dn_sa:dirty_water_bottle', None) +json.dump(it, open(IP, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + +LP = os.path.join(BASE, 'resource_pack_t7eJjrxY/texts/zh_CN.lang') +lines = open(LP, encoding='utf-8').read().splitlines() +keep = [l for l in lines if not l.startswith('item.dn_sa:dirty_water_bottle.')] +open(LP, 'w', encoding='utf-8').write('\n'.join(keep) + ('\n' if keep else '')) + +beh = [f for f in os.listdir(os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh')) if f.endswith('.json')] +print('beh json 总数:', len(beh), '| 材料数:', len(beh) - 44) diff --git a/_sa_hanhua_out/_tmp/drop_jerry.py b/_sa_hanhua_out/_tmp/drop_jerry.py new file mode 100644 index 0000000..bb09668 --- /dev/null +++ b/_sa_hanhua_out/_tmp/drop_jerry.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +"""剔除 jerry_can(油桶,带模型)""" +import os, json + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +DROP = ['jerry_can'] + +for sub in ['behavior_pack_kcH4M5u0/netease_items_beh', 'resource_pack_t7eJjrxY/netease_items_res']: + for m in DROP: + p = os.path.join(BASE, sub, 'dn_sa_%s.json' % m) + if os.path.exists(p): + os.remove(p) +p = os.path.join(BASE, 'resource_pack_t7eJjrxY/textures/items/jerry_can.png') +if os.path.exists(p): + os.remove(p) + +IP = os.path.join(BASE, 'resource_pack_t7eJjrxY/textures/item_texture.json') +it = json.load(open(IP, encoding='utf-8')) +it['texture_data'].pop('dn_sa:jerry_can', None) +json.dump(it, open(IP, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + +LP = os.path.join(BASE, 'resource_pack_t7eJjrxY/texts/zh_CN.lang') +lines = open(LP, encoding='utf-8').read().splitlines() +keep = [l for l in lines if not l.startswith('item.dn_sa:jerry_can.')] +open(LP, 'w', encoding='utf-8').write('\n'.join(keep) + ('\n' if keep else '')) + +beh = [f for f in os.listdir(os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh')) if f.endswith('.json')] +print('beh json 总数:', len(beh), '| 材料数:', len(beh) - 44) diff --git a/_sa_hanhua_out/_tmp/drop_water_blank.py b/_sa_hanhua_out/_tmp/drop_water_blank.py new file mode 100644 index 0000000..9e4ceab --- /dev/null +++ b/_sa_hanhua_out/_tmp/drop_water_blank.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +"""剔除 water_bottle / water_bottle2 / blank 三个材料(水瓶带模型、空白为占位物品)""" +import os, json + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +DROP = ['water_bottle', 'water_bottle2', 'blank'] + +# 1) 删 beh/res json + 贴图 +for sub in ['behavior_pack_kcH4M5u0/netease_items_beh', 'resource_pack_t7eJjrxY/netease_items_res']: + for m in DROP: + p = os.path.join(BASE, sub, 'dn_sa_%s.json' % m) + if os.path.exists(p): + os.remove(p) + print('删', sub.split('/')[-1], m) +for m in DROP: + p = os.path.join(BASE, 'resource_pack_t7eJjrxY/textures/items/%s.png' % m) + if os.path.exists(p): + os.remove(p) + print('删贴图', m) + +# 2) item_texture.json 移除 +IP = os.path.join(BASE, 'resource_pack_t7eJjrxY/textures/item_texture.json') +it = json.load(open(IP, encoding='utf-8')) +for m in DROP: + it['texture_data'].pop('dn_sa:%s' % m, None) +json.dump(it, open(IP, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) +print('item_texture 移除后条数:', len(it['texture_data'])) + +# 3) zh_CN.lang 移除 name 行 +LP = os.path.join(BASE, 'resource_pack_t7eJjrxY/texts/zh_CN.lang') +lines = open(LP, encoding='utf-8').read().splitlines() +keep = [] +removed = 0 +for l in lines: + if any(('item.dn_sa:%s.' % m) in l for m in DROP): + removed += 1 + continue + keep.append(l) +open(LP, 'w', encoding='utf-8').write('\n'.join(keep) + ('\n' if keep else '')) +print('lang 移除行:', removed, '| 剩余行:', len(keep)) + +# 4) 最终数量 +beh = [f for f in os.listdir(os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh')) if f.endswith('.json')] +print('beh json 总数:', len(beh)) +print('材料数:', len(beh) - 44) diff --git a/_sa_hanhua_out/_tmp/dump_decor.py b/_sa_hanhua_out/_tmp/dump_decor.py new file mode 100644 index 0000000..f5c77ba --- /dev/null +++ b/_sa_hanhua_out/_tmp/dump_decor.py @@ -0,0 +1,23 @@ +import zipfile, json, os + +base = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out" +jar = os.path.join(base, "sa_decor-forge-1.20.1-1.0.3.jar") + +def load(z, n): + return json.loads(z.read(n).decode('utf-8')) + +with zipfile.ZipFile(jar) as z: + en = load(z, "assets/sa_decor/lang/en_us.json") + pt = load(z, "assets/sa_decor/lang/pt_br.json") + zh = load(z, "assets/sa_decor/lang/zh_cn.json") + +keys = sorted(set(en) | set(pt) | set(zh)) +out = [] +for k in keys: + e = en.get(k, "") + p = pt.get(k, "") + c = zh.get(k, "") + out.append(f"{k}\n EN: {e}\n PT: {p}\n ZH: {c}") +with open(os.path.join(base, "_tmp", "decor_lang.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(out)) + f.write(f"\nTOTAL {len(keys)}\n") diff --git a/_sa_hanhua_out/_tmp/dump_lang.py b/_sa_hanhua_out/_tmp/dump_lang.py new file mode 100644 index 0000000..0f002f1 --- /dev/null +++ b/_sa_hanhua_out/_tmp/dump_lang.py @@ -0,0 +1,12 @@ +import zipfile, json, sys, io, os + +base = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out" +jars = [f for f in os.listdir(base) if f.endswith('.jar')] + +for j in jars: + p = os.path.join(base, j) + print("=" * 30, j) + with zipfile.ZipFile(p) as z: + names = [n for n in z.namelist() if '/lang/' in n] + for n in names: + print(" ", n) diff --git a/_sa_hanhua_out/_tmp/extract_3classes.py b/_sa_hanhua_out/_tmp/extract_3classes.py new file mode 100644 index 0000000..b7fb0fc --- /dev/null +++ b/_sa_hanhua_out/_tmp/extract_3classes.py @@ -0,0 +1,25 @@ +import zipfile, os, subprocess + +jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +out = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\classes' + +targets = [ + 'com/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip.class', + 'com/ogaba/sa_survival/event/ExternalEquipmentStorageTooltipEvents.class', + 'com/ogaba/sa_combat/event/SACombatForgeEvents.class', +] + +javap = r'D:\我的世界\bin\javap.EXE' +for t in targets: + p = os.path.join(out, t.replace('/', os.sep)) + os.makedirs(os.path.dirname(p), exist_ok=True) + with zipfile.ZipFile(jar) as z: + with open(p, 'wb') as f: + f.write(z.read(t)) + cname = t[:-6].replace('/', '.') + r = subprocess.run([javap, '-c', '-p', '-classpath', out, cname], capture_output=True, text=True, encoding='utf-8', errors='replace') + text = r.stdout if r.returncode == 0 else r.stderr + fn = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\javap_%s.txt' % cname.rsplit('.',1)[-1] + with open(fn, 'w', encoding='utf-8') as f: + f.write(text) + print('==', cname, 'written:', fn) diff --git a/_sa_hanhua_out/_tmp/extract_classes.py b/_sa_hanhua_out/_tmp/extract_classes.py new file mode 100644 index 0000000..199e666 --- /dev/null +++ b/_sa_hanhua_out/_tmp/extract_classes.py @@ -0,0 +1,45 @@ +import zipfile, os, subprocess, shutil + +jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +out = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\classes' +os.makedirs(out, exist_ok=True) + +targets = [ + 'com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent.class', + 'com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent$1.class', + 'com/ogaba/sa_combat/item/BlueprintTooltipComponent.class', + 'com/ogaba/sa_combat/item/BlueprintItem.class', + 'com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition.class', + 'com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.class', +] + +with zipfile.ZipFile(jar) as z: + for t in targets: + data = z.read(t) + p = os.path.join(out, t.replace('/', os.sep)) + os.makedirs(os.path.dirname(p), exist_ok=True) + with open(p, 'wb') as f: + f.write(data) + print('extracted:', t) + +# javap 反编译查看渲染逻辑 +javap = shutil.which('javap') +if javap is None: + # 尝试常见 JDK 路径 + for cand in [r'C:\Program Files\Java\jdk-17\bin\javap.exe', + r'C:\Program Files\Java\jdk-21\bin\javap.exe', + r'C:\Program Files\Microsoft\jdk-17.0.11\bin\javap.exe', + r'C:\Program Files\Eclipse Adoptium\jdk-17.0.13.11-hotspot\bin\javap.exe']: + if os.path.exists(cand): + javap = cand + break +print('javap =', javap) + +if javap: + for t in targets: + cname = t[:-6].replace('/', '.') + r = subprocess.run([javap, '-c', '-p', '-classpath', out, cname], capture_output=True, text=True, encoding='utf-8', errors='replace') + print('\n' + '='*20, cname, '='*20) + print(r.stdout[:6000] if r.returncode == 0 else r.stderr[:3000]) +else: + print('javap NOT FOUND') diff --git a/_sa_hanhua_out/_tmp/extract_matchbox.py b/_sa_hanhua_out/_tmp/extract_matchbox.py new file mode 100644 index 0000000..cc828de --- /dev/null +++ b/_sa_hanhua_out/_tmp/extract_matchbox.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +import zipfile, os, subprocess + +jars = [ + r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_core-forge-1.20.1-1.0.1.jar", + r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_lib-forge-1.20.1-1.0.1.jar", + r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_decor-forge-1.20.1-1.0.3.jar", + r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar", +] + +TARGET = "com/ogaba/sacore/content/item/tool/MatchboxItem.class" +OUT = r"C:\Users\30272\AppData\Local\Temp\sa_check\javap_jar\out" + +found = None +for j in jars: + if os.path.exists(j): + try: + with zipfile.ZipFile(j) as z: + for n in z.namelist(): + if n.endswith("MatchboxItem.class") and "tool" in n: + found = (j, n) + print("FOUND in", j, "->", n) + break + except Exception as e: + print("ERR", j, e) + +if found: + jar, name = found + dstdir = os.path.join(OUT, "com", "ogaba", "sacore", "content", "item", "tool") + os.makedirs(dstdir, exist_ok=True) + dst = os.path.join(dstdir, "MatchboxItem.class") + with zipfile.ZipFile(jar) as z: + with z.open(name) as src, open(dst, "wb") as out_f: + out_f.write(src.read()) + print("EXTRACTED to", dst) + cfr = r"C:\Users\30272\AppData\Local\Temp\sa_check\javap_jar\cfr.jar" + r = subprocess.run(["java", "-jar", cfr, dst, "--outputdir", dstdir], + capture_output=True, text=True, timeout=120) + print("CFR stdout:", r.stdout[-2000:] if r.stdout else "") + print("CFR stderr:", r.stderr[-2000:] if r.stderr else "") diff --git a/_sa_hanhua_out/_tmp/final_scan.py b/_sa_hanhua_out/_tmp/final_scan.py new file mode 100644 index 0000000..8137f65 --- /dev/null +++ b/_sa_hanhua_out/_tmp/final_scan.py @@ -0,0 +1,34 @@ +import zipfile, re + +base = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out' +jars = { + 'essentials': base + r'\sa_essentials-forge-1.20.1-1.0.0.jar', + 'lib': base + r'\sa_lib-forge-1.20.1-1.0.1.jar', + 'decor': base + r'\sa_decor-forge-1.20.1-1.0.3.jar', +} + +pat = re.compile(r"Survivors?\s+Arsenal", re.IGNORECASE) +for name, jar in jars.items(): + hits = [] + with zipfile.ZipFile(jar) as z: + for n in z.namelist(): + if n.endswith('/') or n.endswith('.png'): + continue + if n.endswith('.class'): + try: + b = z.read(n) + # class 文件只查 ASCII 字符串 + s = ''.join(chr(c) for c in b if 32 <= c < 127 or c in (9, 10, 13)) + except Exception: + continue + else: + try: + s = z.read(n).decode('utf-8', errors='ignore') + except Exception: + continue + if pat.search(s): + hits.append(n) + print(f'[{name}] 英文 mod 名残留(除 lang 文件): {len(hits)} 个') + for h in hits: + if not ('/lang/' in h): + print(' ', h) diff --git a/_sa_hanhua_out/_tmp/find_food.py b/_sa_hanhua_out/_tmp/find_food.py new file mode 100644 index 0000000..4513c98 --- /dev/null +++ b/_sa_hanhua_out/_tmp/find_food.py @@ -0,0 +1,31 @@ +import zipfile, json, os + +base = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out" +tokens = ["pastel","coxinha","brigadeiro","pacoquita","wind","chips","cheese_bread", + "cereal","cracker","guarana","duff","burger","hot_dog","taco","donut","waffle", + "biscuit","toast","burrito","candy","jam","cheese","butter","peanut","granola", + "energy","vodka","whiskey","wine","beer","cola","pepsi","fanta","monster","coffee"] + +langs = { + "sa_decor-forge-1.20.1-1.0.3.jar": "assets/sa_decor/lang/", + "sa_essentials-forge-1.20.1-1.0.0.jar": "assets/sa_combat/lang/", + "sa_lib-forge-1.20.1-1.0.1.jar": "assets/sa_core/lang/", +} + +lines = [] +for jar, langdir in langs.items(): + p = os.path.join(base, jar) + with zipfile.ZipFile(p) as z: + names = set(z.namelist()) + en = json.loads(z.read(langdir + "en_us.json").decode('utf-8')) if langdir + "en_us.json" in names else {} + pt = json.loads(z.read(langdir + "pt_br.json").decode('utf-8')) if langdir + "pt_br.json" in names else {} + zh = json.loads(z.read(langdir + "zh_cn.json").decode('utf-8')) if langdir + "zh_cn.json" in names else {} + hits = [k for k in (set(en) | set(pt) | set(zh)) + if any(t in k.lower() or t in str(en.get(k,'')).lower() or t in str(pt.get(k,'')).lower() for t in tokens)] + lines.append("=" * 30 + " " + jar + f" hits={len(hits)}") + for k in sorted(hits): + lines.append(f"{k}\n EN: {en.get(k,'')}\n PT: {pt.get(k,'')}\n ZH: {zh.get(k,'')}") + +with open(os.path.join(base, "_tmp", "food_all.txt"), "w", encoding="utf-8") as f: + f.write("\n".join(lines)) +print("done") diff --git a/_sa_hanhua_out/_tmp/fix_case.py b/_sa_hanhua_out/_tmp/fix_case.py new file mode 100644 index 0000000..a4166ad --- /dev/null +++ b/_sa_hanhua_out/_tmp/fix_case.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +import os, glob, shutil +d = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\resource_pack_t7eJjrxY\textures\items" +# listdir 返回磁盘上的真实文件名(保留大小写) +names = os.listdir(d) +print("all *ianbing* in dir:", [n for n in names if "ianbing" in n.lower() and n.lower().endswith(".png")]) +target = os.path.join(d, "jianbing.png") +for n in names: + if n.lower() == "jianbing.png" and n != "jianbing.png": + src = os.path.join(d, n) + # 复制到小写目标(覆盖),再删除大小写不同的旧名 + shutil.copyfile(src, target) + os.remove(src) + print("normalized", n, "->", "jianbing.png") +print("final files:", [os.path.basename(x) for x in glob.glob(d + r"\*ianbing*.png")]) +print("lowercase exists:", os.path.exists(target)) \ No newline at end of file diff --git a/_sa_hanhua_out/_tmp/fix_drink_effects.py b/_sa_hanhua_out/_tmp/fix_drink_effects.py new file mode 100644 index 0000000..01fd3d2 --- /dev/null +++ b/_sa_hanhua_out/_tmp/fix_drink_effects.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +"""对齐 Java 版饮用效果:3 个有毒饮品加中毒+反胃;发胶/发酵糊移除饮用功能""" +import os, json + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +TOXIC = ['alcohol', 'rubbing_alcohol', 'cleaning_liquid'] +PLAIN = ['hair_gel', 'fermented_mash'] + +# 1) 3 个有毒饮品:food 加 effects(中毒 II 10s + 反胃 15s) +for m in TOXIC: + p = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_%s.json' % m) + d = json.load(open(p, encoding='utf-8')) + c = d['minecraft:item']['components'] + c['minecraft:food']['effects'] = [ + {'name': 'poison', 'chance': 1.0, 'duration': 10, 'amplifier': 1}, + {'name': 'nausea', 'chance': 1.0, 'duration': 15, 'amplifier': 0} + ] + json.dump(d, open(p, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + print('加效果:', m) + +# 2) 发胶/发酵糊:移除饮用功能(恢复普通物品) +for m in PLAIN: + p = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_%s.json' % m) + d = json.load(open(p, encoding='utf-8')) + c = d['minecraft:item']['components'] + c.pop('minecraft:food', None) + c.pop('minecraft:use_duration', None) + json.dump(d, open(p, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + rp = os.path.join(BASE, 'resource_pack_t7eJjrxY/netease_items_res/dn_sa_%s.json' % m) + r = json.load(open(rp, encoding='utf-8')) + r['minecraft:item']['components'].pop('minecraft:use_animation', None) + json.dump(r, open(rp, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + print('移除饮用:', m) + +# 验证 +p = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_alcohol.json') +print(json.dumps(json.load(open(p, encoding='utf-8'))['minecraft:item']['components'], ensure_ascii=False)) diff --git a/_sa_hanhua_out/_tmp/fix_lib_desc.py b/_sa_hanhua_out/_tmp/fix_lib_desc.py new file mode 100644 index 0000000..c81c52b --- /dev/null +++ b/_sa_hanhua_out/_tmp/fix_lib_desc.py @@ -0,0 +1,34 @@ +import zipfile, os, re, shutil + +jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_lib-forge-1.20.1-1.0.1.jar' + +with zipfile.ZipFile(jar) as z: + infos = z.infolist() + data = {i.filename: z.read(i) for i in infos} + meta = 'META-INF/mods.toml' + text = data[meta].decode('utf-8') + +new_text = re.sub( + r"description\s*=\s*'''[\s\S]*?'''", + "description='''\n我们所有幸存者军火库模组的公共库。\n'''", + text, + count=1, +) +print('changed:', new_text != text) +print(new_text[:400]) +if new_text != text: + data[meta] = new_text.encode('utf-8') + tmp = jar + '.tmp' + with zipfile.ZipFile(tmp, 'w', zipfile.ZIP_DEFLATED) as z: + for i in infos: + z.writestr(i, data[i.filename]) + shutil.move(tmp, jar) + print('jar updated.') + +# verify +with zipfile.ZipFile(jar) as z: + t = z.read(meta).decode('utf-8') + for line in t.splitlines(): + if 'displayName' in line or 'description' in line: + print('VERIFY:', line.strip()) + print('entries=', len(z.namelist()), 'testzip=', z.testzip()) diff --git a/_sa_hanhua_out/_tmp/fix_modstoml.py b/_sa_hanhua_out/_tmp/fix_modstoml.py new file mode 100644 index 0000000..7281918 --- /dev/null +++ b/_sa_hanhua_out/_tmp/fix_modstoml.py @@ -0,0 +1,68 @@ +import zipfile, os, re, shutil + +base = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out' +jars = { + 'essentials': base + r'\sa_essentials-forge-1.20.1-1.0.0.jar', + 'lib': base + r'\sa_lib-forge-1.20.1-1.0.1.jar', + 'decor': base + r'\sa_decor-forge-1.20.1-1.0.3.jar', +} + +# 每个 jar 的 mods.toml 替换规则:(旧字符串, 新字符串) 或 (正则, 新, is_regex) +repls = { + 'essentials': [ + ('displayName = "Survivors Arsenal: Essentials"', + 'displayName = "幸存者军火库:基础包"'), + ('description = "Combat, survival and essential gameplay content for Survivors Arsenal."', + 'description = "幸存者军火库的战斗、生存与核心玩法内容。"'), + ], + 'lib': [ + ('displayName="Survivor\'s Arsenal: Lib"', + 'displayName="幸存者军火库:核心"'), + (r"description\s*=\s*'''[\s\S]*?'''", + "description='''\n我们所有幸存者军火库模组的公共库。\n'''"), + ], + 'decor': [ + ('displayName="Survivor\'s Arsenal: Loot & Decor"', + 'displayName="幸存者军火库:战利品与装饰"'), + ('description="Decoration module for Survivor\'s Arsenal."', + 'description="幸存者军火库的装饰模块。"'), + ], +} + +for name, jar in jars.items(): + with zipfile.ZipFile(jar) as z: + infos = z.infolist() + data = {i.filename: z.read(i) for i in infos} + meta = 'META-INF/mods.toml' + text = data[meta].decode('utf-8') + orig = text + for old, new in repls[name]: + if text.find(old) != -1: + text = text.replace(old, new) + print(f'[{name}] replaced: {old[:60]!r}') + else: + print(f'[{name}] WARN not found: {old[:60]!r}') + if text == orig: + print(f'[{name}] NO CHANGES!') + continue + data[meta] = text.encode('utf-8') + + # 重建 jar + tmp = jar + '.tmp' + with zipfile.ZipFile(tmp, 'w', zipfile.ZIP_DEFLATED) as z: + for i in infos: + z.writestr(i, data[i.filename]) + shutil.move(tmp, jar) + print(f'[{name}] jar updated.') + +# 验证 +print('\n===== VERIFY =====') +for name, jar in jars.items(): + with zipfile.ZipFile(jar) as z: + t = z.read('META-INF/mods.toml').decode('utf-8') + for line in t.splitlines(): + if 'displayName' in line or 'description' in line: + print(f'[{name}] {line.strip()}') + # 检查 jar 完好 + bad = z.testzip() + print(f'[{name}] entries={len(z.namelist())} testzip={bad}') diff --git a/_sa_hanhua_out/_tmp/fix_reloading.py b/_sa_hanhua_out/_tmp/fix_reloading.py new file mode 100644 index 0000000..f222283 --- /dev/null +++ b/_sa_hanhua_out/_tmp/fix_reloading.py @@ -0,0 +1,42 @@ +import zipfile, os, shutil + +base = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out' +jar = base + r'\sa_essentials-forge-1.20.1-1.0.0.jar' +target = 'com/ogaba/sa_combat/client/event/SACombatClientForgeEvents.class' + +old_ascii = b'Reloading...' # 11 字节 +old_pat = b'\x01\x00\x0b' + old_ascii # CONSTANT_Utf8 tag + u2 length(11) + bytes +new_utf8 = '换弹中...'.encode('utf-8') # 12 字节 (E6 8D A2 E5 BC B9 E4 B8 AD 2E 2E 2E) +new_pat = b'\x01\x00\x0c' + new_utf8 +print('new bytes:', new_utf8.hex()) + +with zipfile.ZipFile(jar) as z: + infos = z.infolist() + data = {i.filename: z.read(i) for i in infos} + +b = data[target] +cnt = b.count(old_pat) +print('occurrences of utf8-const pattern:', cnt) +if cnt != 1: + raise SystemExit('ABORT: expected exactly 1 occurrence') + +nb = b.replace(old_pat, new_pat) +print('class size: %d -> %d' % (len(b), len(nb))) + +# 验证替换后不再含旧 ASCII(单独出现可能在其他字段;此处仅验证常量池模式消失) +print('old const gone:', nb.count(old_pat) == 0) + +data[target] = nb +tmp = jar + '.tmp' +with zipfile.ZipFile(tmp, 'w', zipfile.ZIP_DEFLATED) as z: + for i in infos: + z.writestr(i, data[i.filename]) +shutil.move(tmp, jar) +print('jar updated.') + +# verify +with zipfile.ZipFile(jar) as z: + nb = z.read(target) + print('new const present:', nb.count(new_pat) == 1) + print('old ascii anywhere in class:', nb.count(old_ascii)) + print('entries=', len(z.namelist()), 'testzip=', z.testzip()) diff --git a/_sa_hanhua_out/_tmp/fix_reloading2.py b/_sa_hanhua_out/_tmp/fix_reloading2.py new file mode 100644 index 0000000..fcd7c15 --- /dev/null +++ b/_sa_hanhua_out/_tmp/fix_reloading2.py @@ -0,0 +1,38 @@ +import zipfile, shutil + +base = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out' +jar = base + r'\sa_essentials-forge-1.20.1-1.0.0.jar' +target = 'com/ogaba/sa_combat/client/event/SACombatClientForgeEvents.class' + +old_ascii = b'Reloading...' # 12 字节 +old_pat = b'\x01\x00\x0c' + old_ascii +new_utf8 = '换弹中...'.encode('utf-8') # 12 字节,与旧串等长 +assert len(new_utf8) == len(old_ascii), (len(new_utf8), len(old_ascii)) +new_pat = b'\x01\x00\x0c' + new_utf8 +print('new bytes:', new_utf8.hex(), 'len', len(new_utf8)) + +with zipfile.ZipFile(jar) as z: + infos = z.infolist() + data = {i.filename: z.read(i) for i in infos} + +b = data[target] +cnt = b.count(old_pat) +print('occurrences:', cnt) +assert cnt == 1, 'ABORT' + +nb = b.replace(old_pat, new_pat) +assert len(nb) == len(b) +data[target] = nb + +tmp = jar + '.tmp' +with zipfile.ZipFile(tmp, 'w', zipfile.ZIP_DEFLATED) as z: + for i in infos: + z.writestr(i, data[i.filename]) +shutil.move(tmp, jar) +print('jar updated.') + +with zipfile.ZipFile(jar) as z: + nb = z.read(target) + print('new const present:', nb.count(new_pat) == 1) + print('old ascii remains:', nb.count(old_ascii)) + print('entries=', len(z.namelist()), 'testzip=', z.testzip()) diff --git a/_sa_hanhua_out/_tmp/fix_xlsx.py b/_sa_hanhua_out/_tmp/fix_xlsx.py new file mode 100644 index 0000000..b6d4d87 --- /dev/null +++ b/_sa_hanhua_out/_tmp/fix_xlsx.py @@ -0,0 +1,31 @@ +import openpyxl, os + +base = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a" +p = os.path.join(base, "幸存者军火库食物表.xlsx") + +fixes = { + "taco": "玉米卷", + "taco_rotten": "腐烂的玉米卷", + "coxinha": "巴西炸鸡肉饺", + "rotten_coxinha": "腐烂的炸鸡肉饺", + "coxinha_dough": "炸鸡肉饺生面团", + "raw_coxinha": "生炸鸡肉饺", + "pastel_dough": "炸饺面团", + "raw_cheese_pastel": "生芝士炸饺", + "raw_meat_pastel": "生肉馅炸饺", + "raw_wind_pastel": "生空心炸饺", + "meat_pastel": "肉馅炸饺", + "wind_pastel": "空心炸饺", + "pacoquita": "巴西花生糖", +} + +wb = openpyxl.load_workbook(p) +ws = wb["全食物数据表"] +changed = 0 +for r in range(3, ws.max_row + 1): + item = ws.cell(row=r, column=2).value + if item in fixes: + ws.cell(row=r, column=3).value = fixes[item] + changed += 1 +wb.save(p) +print("changed", changed) diff --git a/_sa_hanhua_out/_tmp/food_all.txt b/_sa_hanhua_out/_tmp/food_all.txt new file mode 100644 index 0000000..555867b --- /dev/null +++ b/_sa_hanhua_out/_tmp/food_all.txt @@ -0,0 +1,347 @@ +============================== sa_decor-forge-1.20.1-1.0.3.jar hits=4 +message.sa_decor.cable.endpoint_detected + EN: Nearby energy consumer detected at %s %s %s + PT: Consumidor de energia detectado em %s %s %s + ZH: 在 %s %s %s 检测到附近的用电设备 +message.sa_decor.cable.invalid_pair + EN: Connect an energy source to an energy consumer + PT: Conecte uma fonte de energia a um consumidor + ZH: 请将电源连接到用电设备 +message.sa_decor.fuse_box.energy + EN: Fuse Box: %s / %s FE + PT: Caixa de Fusíveis: %s / %s FE + ZH: 保险丝盒:%s / %s FE +tooltip.sa_decor.requires_energy + EN: Requires FE energy to operate + PT: Requer energia FE para funcionar + ZH: 运行时需要 FE 能量 +============================== sa_essentials-forge-1.20.1-1.0.0.jar hits=77 +attachment.sa_combat.machetes_head.desc + EN: Adds paired blades to the bat head + PT: Adiciona lâminas duplas na cabeça do taco + ZH: 在球棒头装上双砍刀 +item.sa_combat.aluminum_baseball_bat + EN: Aluminum Baseball Bat + PT: Taco de Baseball de Alumínio + ZH: 铝制棒球棒 +item.sa_combat.barbecue_chips_bag + EN: Barbecue Chips Bag + PT: Saco de Chips Barbecue + ZH: 烧烤味薯片袋 +item.sa_combat.baseball_bat + EN: Baseball Bat + PT: Taco de Baseball + ZH: 棒球棒 +item.sa_combat.beer + EN: Beer + PT: Cerveja + ZH: 啤酒 +item.sa_combat.big_burger + EN: Big Burger + PT: Big Burger + ZH: 大汉堡 +item.sa_combat.big_burger_rotten + EN: Rotten Big Burger + PT: Big Burger Estragado + ZH: 腐烂的大汉堡 +item.sa_combat.biscuit + EN: Biscuit + PT: Biscoito + ZH: 饼干 +item.sa_combat.biscuit_rotten + EN: Rotten Biscuit + PT: Biscoito Estragado + ZH: 腐烂的饼干 +item.sa_combat.brigadeiro + EN: Brigadeiro + PT: Brigadeiro + ZH: 巴西巧克力球 +item.sa_combat.burger + EN: Burger + PT: Burger + ZH: 汉堡 +item.sa_combat.burger_rotten + EN: Rotten Burger + PT: Burger Estragado + ZH: 腐烂的汉堡 +item.sa_combat.burrito + EN: Burrito + PT: Burrito + ZH: 卷饼 +item.sa_combat.burrito_rotten + EN: Rotten Burrito + PT: Burrito Estragado + ZH: 腐烂的卷饼 +item.sa_combat.butter + EN: Butter + PT: Manteiga + ZH: 黄油 +item.sa_combat.candy_package + EN: Candy Package + PT: Pacote de Doces + ZH: 糖果包 +item.sa_combat.candys + EN: Candys + PT: Doces + ZH: 糖果 +item.sa_combat.cereal + EN: Cereal Box + PT: Caixa de Cereal + ZH: 麦片盒 +item.sa_combat.cereal_fruit_loops + EN: Fruit Loops Cereal Box + PT: Caixa de Cereal Fruit Loops + ZH: 水果圈麦片盒 +item.sa_combat.cereal_fruit_loops_flakes + EN: Fruit Loops Cereal + PT: Cereal Fruit Loops + ZH: 水果圈麦片 +item.sa_combat.cereal_kelloggys + EN: Kelloggys Cereal Box + PT: Caixa de Cereal Kelloggys + ZH: 家乐氏麦片盒 +item.sa_combat.cereal_kelloggys_flakes + EN: Kelloggys Cereal + PT: Cereal Kelloggys + ZH: 家乐氏麦片 +item.sa_combat.cheese + EN: Cheese + PT: Queijo + ZH: 奶酪 +item.sa_combat.cheese_bread + EN: Cheese Bread + PT: Pão de Queijo + ZH: 奶酪面包 +item.sa_combat.cheese_burger + EN: Cheese Burger + PT: Cheeseburger + ZH: 芝士汉堡 +item.sa_combat.cheese_burger_rotten + EN: Rotten Cheese Burger + PT: Cheeseburger Estragado + ZH: 腐烂的芝士汉堡 +item.sa_combat.chips + EN: Chips + PT: Chips + ZH: 薯片 +item.sa_combat.chocolate_bar + EN: Chocolate Bar + PT: Barra de Chocolate + ZH: 巧克力棒 +item.sa_combat.coffee + EN: Coffee + PT: Café + ZH: 咖啡 +item.sa_combat.cola + EN: Cola + PT: Cola + ZH: 可乐 +item.sa_combat.coxinha + EN: Coxinha + PT: Coxinha + ZH: 巴西炸鸡肉饺 +item.sa_combat.coxinha_dough + EN: Coxinha Dough + PT: Massa de Coxinha + ZH: 炸鸡肉饺面团 +item.sa_combat.donut + EN: Donut + PT: Donut + ZH: 甜甜圈 +item.sa_combat.donut_rotten + EN: Rotten Donut + PT: Donut Estragado + ZH: 腐烂的甜甜圈 +item.sa_combat.duff_beer + EN: Duff Beer + PT: Duff Beer + ZH: 达夫啤酒 +item.sa_combat.duffel_bag_black + EN: Black Duffel Bag + PT: Bolsa Duffel Preta + ZH: 黑色旅行袋 +item.sa_combat.duffel_bag_blue + EN: Blue Duffel Bag + PT: Bolsa Duffel Azul + ZH: 蓝色旅行袋 +item.sa_combat.duffel_bag_red + EN: Red Duffel Bag + PT: Bolsa Duffel Vermelha + ZH: 红色旅行袋 +item.sa_combat.duffel_bag_yellow + EN: Yellow Duffel Bag + PT: Bolsa Duffel Amarela + ZH: 黄色旅行袋 +item.sa_combat.energy_bar + EN: Energy Bar + PT: Barra Energética + ZH: 能量棒 +item.sa_combat.energy_drink + EN: Energy Drink + PT: Energético + ZH: 能量饮料 +item.sa_combat.energy_drink.opened + EN: Opened Energy Drink + PT: Energético Aberto + ZH: 已开封的能量饮料 +item.sa_combat.fanta_grape_soda + EN: Fanta Grape Soda + PT: Fanta Uva + ZH: 芬达葡萄汽水 +item.sa_combat.fanta_orange_soda + EN: Fanta Orange Soda + PT: Fanta Laranja + ZH: 芬达橙味汽水 +item.sa_combat.fruit_jam + EN: Fruit Jam + PT: Geleia de Frutas + ZH: 水果酱 +item.sa_combat.golf_stick + EN: Golf Club + PT: Taco de Golfe + ZH: 高尔夫球杆 +item.sa_combat.granola_bar + EN: Granola Bar + PT: Barra de Granola + ZH: 燕麦棒 +item.sa_combat.guarana_soda + EN: Guarana Soda + PT: Guaraná + ZH: 瓜拉纳汽水 +item.sa_combat.hot_dog + EN: Hot Dog + PT: Cachorro-Quente + ZH: 热狗 +item.sa_combat.hot_dog_rotten + EN: Rotten Hot Dog + PT: Cachorro-Quente Estragado + ZH: 腐烂的热狗 +item.sa_combat.meat_pastel + EN: Meat Pastel + PT: Pastel de Carne + ZH: 肉馅炸饺 +item.sa_combat.monster + EN: Monster + PT: Monster + ZH: 怪物能量饮料 +item.sa_combat.monster.opened + EN: Opened Monster + PT: Monster Aberto + ZH: 已开封的怪物能量饮料 +item.sa_combat.pacoquita + EN: Pacoquita + PT: Paçoquita + ZH: 帕科基塔 +item.sa_combat.pastel_dough + EN: Pastel Dough + PT: Massa de Pastel + ZH: 炸饺面团 +item.sa_combat.peanut_butter + EN: Peanut Butter + PT: Pasta de Amendoim + ZH: 花生酱 +item.sa_combat.pepsi + EN: Pepsi + PT: Pepsi + ZH: 百事可乐 +item.sa_combat.plain_chips_bag + EN: Plain Chips Bag + PT: Saco de Chips Natural + ZH: 原味薯片袋 +item.sa_combat.raw_cheese_pastel + EN: Raw Cheese Pastel + PT: Pastel de Queijo Cru + ZH: 生芝士炸饺 +item.sa_combat.raw_coxinha + EN: Raw Coxinha + PT: Coxinha Crua + ZH: 生炸鸡肉饺 +item.sa_combat.raw_meat_pastel + EN: Raw Meat Pastel + PT: Pastel de Carne Cru + ZH: 生肉馅炸饺 +item.sa_combat.raw_wind_pastel + EN: Raw Wind Pastel + PT: Pastel de Vento Cru + ZH: 生空心炸饺 +item.sa_combat.rotten_coxinha + EN: Rotten Coxinha + PT: Coxinha Estragada + ZH: 腐烂的炸鸡肉饺 +item.sa_combat.salt_vinegar_chips_bag + EN: Salt & Vinegar Chips Bag + PT: Saco de Chips Sal e Vinagre + ZH: 盐醋味薯片袋 +item.sa_combat.saltine_cracker + EN: Saltine Cracker + PT: Bolacha Água e Sal + ZH: 苏打饼干 +item.sa_combat.sour_cream_onion_chips_bag + EN: Sour Cream & Onion Chips Bag + PT: Saco de Chips Sour Cream e Cebola + ZH: 酸奶油洋葱味薯片袋 +item.sa_combat.taco + EN: Taco + PT: Taco + ZH: 玉米卷 +item.sa_combat.taco_rotten + EN: Rotten Taco + PT: Taco Estragado + ZH: 腐烂的玉米卷 +item.sa_combat.toast + EN: Toast + PT: Torrada + ZH: 吐司 +item.sa_combat.toast_rotten + EN: Rotten Toast + PT: Torrada Estragada + ZH: 腐烂的吐司 +item.sa_combat.vodka + EN: Vodka + PT: Vodka + ZH: 伏特加 +item.sa_combat.waffles + EN: Waffles + PT: Waffles + ZH: 华夫饼 +item.sa_combat.waffles_rotten + EN: Rotten Waffles + PT: Waffles Estragados + ZH: 腐烂的华夫饼 +item.sa_combat.whiskey + EN: Whiskey + PT: Whiskey + ZH: 威士忌 +item.sa_combat.wind_pastel + EN: Wind Pastel + PT: Pastel de Vento + ZH: 空心炸饺 +item.sa_combat.wine + EN: Wine + PT: Vinho + ZH: 葡萄酒 +modifier.sa_combat.machetes_head.desc + EN: Adds paired machetes to the bat head: Bleeding II, +1 damage, +100 durability. + PT: Adiciona facões duplos na cabeça do taco: Sangramento II, +1 de dano e +100 de durabilidade. + ZH: 在球棒头加装双砍刀:流血 II、+1 伤害、+100 耐久。 +============================== sa_lib-forge-1.20.1-1.0.1.jar hits=5 +item.sa_core.glue + EN: Glue + PT: Cola + ZH: 胶水 +item.sa_core.plastic_bag + EN: Plastic Bag + PT: Sacola Plástica + ZH: 塑料袋 +screen.sa_core.generator.energy + EN: Energy: %s / %s + PT: Energia: %s / %s + ZH: 能量:%s / %s +screen.sa_core.recycler.energy + EN: Energy: %s / %s FE + PT: Energia: %s / %s FE + ZH: 能量:%s / %s FE +tooltip.sa_core.recycler.energy + EN: Requires FE while processing (40 FE/t) + PT: Requer FE durante o processamento (40 FE/t) + ZH: 处理时需要 FE 能量(40 FE/t) \ No newline at end of file diff --git a/_sa_hanhua_out/_tmp/javap_BackpackContentsTooltip.txt b/_sa_hanhua_out/_tmp/javap_BackpackContentsTooltip.txt new file mode 100644 index 0000000..e5e613a --- /dev/null +++ b/_sa_hanhua_out/_tmp/javap_BackpackContentsTooltip.txt @@ -0,0 +1,150 @@ +Compiled from "BackpackContentsTooltip.java" +public final class com.ogaba.sa_survival.item.tooltip.BackpackContentsTooltip extends java.lang.Record implements net.minecraft.world.inventory.tooltip.TooltipComponent { + private final net.minecraft.world.item.ItemStack sourceStack; + + private final java.util.List items; + + private final int slotCount; + + private static final java.lang.String BACKPACK_ITEMS_TAG; + + private static final java.lang.String CLOTHING_ITEMS_TAG; + + public com.ogaba.sa_survival.item.tooltip.BackpackContentsTooltip(net.minecraft.world.item.ItemStack, java.util.List, int); + Code: + 0: aload_0 + 1: invokespecial #32 // Method java/lang/Record."":()V + 4: aload_0 + 5: aload_1 + 6: putfield #34 // Field sourceStack:Lnet/minecraft/world/item/ItemStack; + 9: aload_0 + 10: aload_2 + 11: putfield #36 // Field items:Ljava/util/List; + 14: aload_0 + 15: iload_3 + 16: putfield #38 // Field slotCount:I + 19: return + + public static com.ogaba.sa_survival.item.tooltip.BackpackContentsTooltip from(net.minecraft.world.item.ItemStack, int); + Code: + 0: aload_0 + 1: iload_1 + 2: ldc #23 // String Items + 4: invokestatic #46 // Method fromTag:(Lnet/minecraft/world/item/ItemStack;ILjava/lang/String;)Lcom/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip; + 7: areturn + + public static com.ogaba.sa_survival.item.tooltip.BackpackContentsTooltip fromClothing(net.minecraft.world.item.ItemStack, int); + Code: + 0: aload_0 + 1: iload_1 + 2: ldc #26 // String ClothingItems + 4: invokestatic #46 // Method fromTag:(Lnet/minecraft/world/item/ItemStack;ILjava/lang/String;)Lcom/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip; + 7: areturn + + private static com.ogaba.sa_survival.item.tooltip.BackpackContentsTooltip fromTag(net.minecraft.world.item.ItemStack, int, java.lang.String); + Code: + 0: iconst_0 + 1: iload_1 + 2: invokestatic #57 // Method java/lang/Math.max:(II)I + 5: istore_3 + 6: new #59 // class net/minecraftforge/items/ItemStackHandler + 9: dup + 10: invokespecial #60 // Method net/minecraftforge/items/ItemStackHandler."":()V + 13: astore 4 + 15: aload_0 + 16: invokevirtual #66 // Method net/minecraft/world/item/ItemStack.m_41782_:()Z + 19: ifeq 67 + 22: aload_0 + 23: invokevirtual #70 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 26: astore 5 + 28: aload 5 + 30: ifnull 67 + 33: aload 5 + 35: aload_2 + 36: invokevirtual #76 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z + 39: ifeq 67 + 42: aload 4 + 44: aload 5 + 46: aload_2 + 47: invokevirtual #80 // Method net/minecraft/nbt/CompoundTag.m_128469_:(Ljava/lang/String;)Lnet/minecraft/nbt/CompoundTag; + 50: invokevirtual #84 // Method net/minecraftforge/items/ItemStackHandler.deserializeNBT:(Lnet/minecraft/nbt/CompoundTag;)V + 53: goto 67 + 56: astore 6 + 58: new #59 // class net/minecraftforge/items/ItemStackHandler + 61: dup + 62: invokespecial #60 // Method net/minecraftforge/items/ItemStackHandler."":()V + 65: astore 4 + 67: new #88 // class java/util/ArrayList + 70: dup + 71: iload_3 + 72: invokespecial #91 // Method java/util/ArrayList."":(I)V + 75: astore 5 + 77: iconst_0 + 78: istore 6 + 80: iload 6 + 82: iload_3 + 83: if_icmpge 126 + 86: aload 5 + 88: iload 6 + 90: aload 4 + 92: invokevirtual #97 // Method net/minecraftforge/items/ItemStackHandler.getSlots:()I + 95: if_icmpge 111 + 98: aload 4 + 100: iload 6 + 102: invokevirtual #101 // Method net/minecraftforge/items/ItemStackHandler.getStackInSlot:(I)Lnet/minecraft/world/item/ItemStack; + 105: invokevirtual #105 // Method net/minecraft/world/item/ItemStack.m_41777_:()Lnet/minecraft/world/item/ItemStack; + 108: goto 114 + 111: getstatic #108 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 114: invokeinterface #112, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 119: pop + 120: iinc 6, 1 + 123: goto 80 + 126: new #2 // class com/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip + 129: dup + 130: aload_0 + 131: invokevirtual #105 // Method net/minecraft/world/item/ItemStack.m_41777_:()Lnet/minecraft/world/item/ItemStack; + 134: aload 5 + 136: iload_3 + 137: invokespecial #114 // Method "":(Lnet/minecraft/world/item/ItemStack;Ljava/util/List;I)V + 140: areturn + Exception table: + from to target type + 42 53 56 Class java/lang/Throwable + + public final java.lang.String toString(); + Code: + 0: aload_0 + 1: invokedynamic #141, 0 // InvokeDynamic #0:toString:(Lcom/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip;)Ljava/lang/String; + 6: areturn + + public final int hashCode(); + Code: + 0: aload_0 + 1: invokedynamic #145, 0 // InvokeDynamic #0:hashCode:(Lcom/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip;)I + 6: ireturn + + public final boolean equals(java.lang.Object); + Code: + 0: aload_0 + 1: aload_1 + 2: invokedynamic #149, 0 // InvokeDynamic #0:equals:(Lcom/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip;Ljava/lang/Object;)Z + 7: ireturn + + public net.minecraft.world.item.ItemStack sourceStack(); + Code: + 0: aload_0 + 1: getfield #34 // Field sourceStack:Lnet/minecraft/world/item/ItemStack; + 4: areturn + + public java.util.List items(); + Code: + 0: aload_0 + 1: getfield #36 // Field items:Ljava/util/List; + 4: areturn + + public int slotCount(); + Code: + 0: aload_0 + 1: getfield #38 // Field slotCount:I + 4: ireturn +} diff --git a/_sa_hanhua_out/_tmp/javap_ExternalEquipmentStorageTooltipEvents.txt b/_sa_hanhua_out/_tmp/javap_ExternalEquipmentStorageTooltipEvents.txt new file mode 100644 index 0000000..220275b --- /dev/null +++ b/_sa_hanhua_out/_tmp/javap_ExternalEquipmentStorageTooltipEvents.txt @@ -0,0 +1,174 @@ +Compiled from "ExternalEquipmentStorageTooltipEvents.java" +public final class com.ogaba.sa_survival.event.ExternalEquipmentStorageTooltipEvents { + private com.ogaba.sa_survival.event.ExternalEquipmentStorageTooltipEvents(); + Code: + 0: aload_0 + 1: invokespecial #41 // Method java/lang/Object."":()V + 4: return + + public static void onItemTooltip(net.minecraftforge.event.entity.player.ItemTooltipEvent); + Code: + 0: aload_0 + 1: invokevirtual #55 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getItemStack:()Lnet/minecraft/world/item/ItemStack; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #61 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 9: ifne 22 + 12: aload_1 + 13: invokevirtual #65 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 16: instanceof #67 // class com/ogaba/sa_survival/item/clothing/ClothingStorageItem + 19: ifeq 23 + 22: return + 23: aload_1 + 24: invokestatic #71 // Method com/ogaba/sa_survival/item/clothing/ExternalEquipmentStorage.resolve:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional; + 27: aconst_null + 28: invokevirtual #77 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object; + 31: checkcast #16 // class com/ogaba/sa_survival/item/clothing/ExternalEquipmentStorage$Entry + 34: astore_2 + 35: aload_2 + 36: ifnull 46 + 39: aload_2 + 40: invokevirtual #81 // Method com/ogaba/sa_survival/item/clothing/ExternalEquipmentStorage$Entry.slots:()I + 43: ifgt 47 + 46: return + 47: aload_0 + 48: invokevirtual #85 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 51: astore_3 + 52: aload_3 + 53: ldc #87 // String extra slots + 55: aload_2 + 56: invokevirtual #81 // Method com/ogaba/sa_survival/item/clothing/ExternalEquipmentStorage$Entry.slots:()I + 59: invokedynamic #99, 0 // InvokeDynamic #0:makeConcatWithConstants:(I)Ljava/lang/String; + 64: invokestatic #105 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 67: getstatic #111 // Field net/minecraft/ChatFormatting.GRAY:Lnet/minecraft/ChatFormatting; + 70: invokevirtual #117 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 73: iconst_1 + 74: invokestatic #121 // Method insertIfMissing:(Ljava/util/List;Ljava/lang/String;Lnet/minecraft/network/chat/Component;I)V + 77: aload_3 + 78: ldc #123 // String ��סShift��Ԥ������ + 80: ldc #123 // String ��סShift��Ԥ������ + 82: invokestatic #105 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 85: getstatic #126 // Field net/minecraft/ChatFormatting.DARK_GRAY:Lnet/minecraft/ChatFormatting; + 88: invokevirtual #117 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 91: iconst_2 + 92: invokestatic #121 // Method insertIfMissing:(Ljava/util/List;Ljava/lang/String;Lnet/minecraft/network/chat/Component;I)V + 95: return + + public static void onGatherTooltipComponents(net.minecraftforge.client.event.RenderTooltipEvent$GatherComponents); + Code: + 0: aload_0 + 1: invokevirtual #138 // Method net/minecraftforge/client/event/RenderTooltipEvent$GatherComponents.getItemStack:()Lnet/minecraft/world/item/ItemStack; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #61 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 9: ifne 22 + 12: aload_1 + 13: invokevirtual #65 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 16: instanceof #67 // class com/ogaba/sa_survival/item/clothing/ClothingStorageItem + 19: ifeq 23 + 22: return + 23: aload_1 + 24: invokestatic #71 // Method com/ogaba/sa_survival/item/clothing/ExternalEquipmentStorage.resolve:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional; + 27: aconst_null + 28: invokevirtual #77 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object; + 31: checkcast #16 // class com/ogaba/sa_survival/item/clothing/ExternalEquipmentStorage$Entry + 34: astore_2 + 35: aload_2 + 36: ifnull 56 + 39: aload_2 + 40: invokevirtual #81 // Method com/ogaba/sa_survival/item/clothing/ExternalEquipmentStorage$Entry.slots:()I + 43: ifle 56 + 46: aload_0 + 47: invokevirtual #141 // Method net/minecraftforge/client/event/RenderTooltipEvent$GatherComponents.getTooltipElements:()Ljava/util/List; + 50: invokestatic #145 // Method hasStoragePreview:(Ljava/util/List;)Z + 53: ifeq 57 + 56: return + 57: iconst_1 + 58: aload_0 + 59: invokevirtual #141 // Method net/minecraftforge/client/event/RenderTooltipEvent$GatherComponents.getTooltipElements:()Ljava/util/List; + 62: invokeinterface #150, 1 // InterfaceMethod java/util/List.size:()I + 67: invokestatic #156 // Method java/lang/Math.min:(II)I + 70: istore_3 + 71: aload_0 + 72: invokevirtual #141 // Method net/minecraftforge/client/event/RenderTooltipEvent$GatherComponents.getTooltipElements:()Ljava/util/List; + 75: iload_3 + 76: aload_1 + 77: aload_2 + 78: invokevirtual #81 // Method com/ogaba/sa_survival/item/clothing/ExternalEquipmentStorage$Entry.slots:()I + 81: invokestatic #162 // Method com/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip.fromClothing:(Lnet/minecraft/world/item/ItemStack;I)Lcom/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip; + 84: invokestatic #168 // Method com/mojang/datafixers/util/Either.right:(Ljava/lang/Object;)Lcom/mojang/datafixers/util/Either; + 87: invokeinterface #172, 3 // InterfaceMethod java/util/List.add:(ILjava/lang/Object;)V + 92: return + + private static void insertIfMissing(java.util.List, java.lang.String, net.minecraft.network.chat.Component, int); + Code: + 0: aload_0 + 1: invokeinterface #180, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 6: astore 4 + 8: aload 4 + 10: invokeinterface #185, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 15: ifeq 48 + 18: aload 4 + 20: invokeinterface #189, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 25: checkcast #101 // class net/minecraft/network/chat/Component + 28: astore 5 + 30: aload 5 + 32: invokeinterface #193, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 37: aload_1 + 38: invokevirtual #199 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 41: ifeq 45 + 44: return + 45: goto 8 + 48: aload_0 + 49: invokeinterface #202, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 54: ifeq 61 + 57: iconst_0 + 58: goto 75 + 61: iconst_1 + 62: iload_3 + 63: aload_0 + 64: invokeinterface #150, 1 // InterfaceMethod java/util/List.size:()I + 69: invokestatic #156 // Method java/lang/Math.min:(II)I + 72: invokestatic #205 // Method java/lang/Math.max:(II)I + 75: istore 4 + 77: aload_0 + 78: iload 4 + 80: aload_2 + 81: invokeinterface #172, 3 // InterfaceMethod java/util/List.add:(ILjava/lang/Object;)V + 86: return + + private static boolean hasStoragePreview(java.util.List>); + Code: + 0: aload_0 + 1: invokeinterface #180, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 6: astore_1 + 7: aload_1 + 8: invokeinterface #185, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 13: ifeq 59 + 16: aload_1 + 17: invokeinterface #189, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 22: checkcast #164 // class com/mojang/datafixers/util/Either + 25: astore_2 + 26: aload_2 + 27: invokevirtual #216 // Method com/mojang/datafixers/util/Either.right:()Ljava/util/Optional; + 30: invokedynamic #234, 0 // InvokeDynamic #1:apply:()Ljava/util/function/Function; + 35: invokevirtual #238 // Method java/util/Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional; + 38: iconst_0 + 39: invokestatic #244 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 42: invokevirtual #77 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object; + 45: checkcast #240 // class java/lang/Boolean + 48: invokevirtual #247 // Method java/lang/Boolean.booleanValue:()Z + 51: ifeq 56 + 54: iconst_1 + 55: ireturn + 56: goto 7 + 59: iconst_0 + 60: ireturn + + private static java.lang.Boolean lambda$hasStoragePreview$0(net.minecraft.world.inventory.tooltip.TooltipComponent); + Code: + 0: aload_0 + 1: instanceof #158 // class com/ogaba/sa_survival/item/tooltip/BackpackContentsTooltip + 4: invokestatic #244 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 7: areturn +} diff --git a/_sa_hanhua_out/_tmp/javap_SACombatForgeEvents.txt b/_sa_hanhua_out/_tmp/javap_SACombatForgeEvents.txt new file mode 100644 index 0000000..627a71b --- /dev/null +++ b/_sa_hanhua_out/_tmp/javap_SACombatForgeEvents.txt @@ -0,0 +1,1356 @@ +Compiled from "SACombatForgeEvents.java" +public final class com.ogaba.sa_combat.event.SACombatForgeEvents { + private static final java.util.UUID EXTERNAL_UPGRADE_DAMAGE_UUID; + + private static final java.util.UUID EXTERNAL_UPGRADE_SPEED_UUID; + + private static final java.util.UUID EXTERNAL_UPGRADE_KNOCKBACK_UUID; + + private static final java.util.UUID EXTERNAL_UPGRADE_REACH_UUID; + + private static final java.util.UUID TACZ_VEST_BULLET_RESISTANCE_UUID; + + private static final net.minecraft.resources.ResourceLocation TACZ_BULLET_RESISTANCE_ID; + + private static boolean proccingExternalAbility; + + private static boolean proccingShieldThorns; + + private static final int ICE_AXE_CLIMB_SOUND_INTERVAL_TICKS; + + private com.ogaba.sa_combat.event.SACombatForgeEvents(); + Code: + 0: aload_0 + 1: invokespecial #92 // Method java/lang/Object."":()V + 4: return + + public static void addTaczVestBulletResistance(net.minecraftforge.event.ItemAttributeModifierEvent); + Code: + 0: aload_0 + 1: invokevirtual #103 // Method net/minecraftforge/event/ItemAttributeModifierEvent.getSlotType:()Lnet/minecraft/world/entity/EquipmentSlot; + 4: getstatic #109 // Field net/minecraft/world/entity/EquipmentSlot.CHEST:Lnet/minecraft/world/entity/EquipmentSlot; + 7: if_acmpne 33 + 10: aload_0 + 11: invokevirtual #113 // Method net/minecraftforge/event/ItemAttributeModifierEvent.getItemStack:()Lnet/minecraft/world/item/ItemStack; + 14: invokevirtual #119 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 17: astore_2 + 18: aload_2 + 19: instanceof #121 // class com/ogaba/sa_combat/item/TacticalVestItem + 22: ifeq 33 + 25: aload_2 + 26: checkcast #121 // class com/ogaba/sa_combat/item/TacticalVestItem + 29: astore_1 + 30: goto 34 + 33: return + 34: getstatic #127 // Field net/minecraftforge/registries/ForgeRegistries.ATTRIBUTES:Lnet/minecraftforge/registries/IForgeRegistry; + 37: getstatic #129 // Field TACZ_BULLET_RESISTANCE_ID:Lnet/minecraft/resources/ResourceLocation; + 40: invokeinterface #135, 2 // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getValue:(Lnet/minecraft/resources/ResourceLocation;)Ljava/lang/Object; + 45: checkcast #137 // class net/minecraft/world/entity/ai/attributes/Attribute + 48: astore_2 + 49: aload_2 + 50: ifnull 62 + 53: aload_1 + 54: invokevirtual #141 // Method com/ogaba/sa_combat/item/TacticalVestItem.getTaczBulletResistance:()D + 57: dconst_0 + 58: dcmpg + 59: ifgt 63 + 62: return + 63: aload_0 + 64: aload_2 + 65: new #17 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 68: dup + 69: getstatic #143 // Field TACZ_VEST_BULLET_RESISTANCE_UUID:Ljava/util/UUID; + 72: ldc #145 // String SA Combat TACZ vest bullet resistance + 74: aload_1 + 75: invokevirtual #141 // Method com/ogaba/sa_combat/item/TacticalVestItem.getTaczBulletResistance:()D + 78: getstatic #149 // Field net/minecraft/world/entity/ai/attributes/AttributeModifier$Operation.ADDITION:Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation; + 81: invokespecial #152 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier."":(Ljava/util/UUID;Ljava/lang/String;DLnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation;)V + 84: invokevirtual #156 // Method net/minecraftforge/event/ItemAttributeModifierEvent.addModifier:(Lnet/minecraft/world/entity/ai/attributes/Attribute;Lnet/minecraft/world/entity/ai/attributes/AttributeModifier;)Z + 87: pop + 88: return + + public static void triggerC4ByNearbyExplosion(net.minecraftforge.event.level.ExplosionEvent$Detonate); + Code: + 0: aload_0 + 1: invokevirtual #168 // Method net/minecraftforge/event/level/ExplosionEvent$Detonate.getLevel:()Lnet/minecraft/world/level/Level; + 4: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 7: ifeq 11 + 10: return + 11: new #176 // class it/unimi/dsi/fastutil/longs/LongOpenHashSet + 14: dup + 15: invokespecial #177 // Method it/unimi/dsi/fastutil/longs/LongOpenHashSet."":()V + 18: astore_1 + 19: new #176 // class it/unimi/dsi/fastutil/longs/LongOpenHashSet + 22: dup + 23: invokespecial #177 // Method it/unimi/dsi/fastutil/longs/LongOpenHashSet."":()V + 26: astore_2 + 27: aload_0 + 28: invokevirtual #181 // Method net/minecraftforge/event/level/ExplosionEvent$Detonate.getAffectedBlocks:()Ljava/util/List; + 31: invokeinterface #187, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 36: astore_3 + 37: aload_3 + 38: invokeinterface #192, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 43: ifeq 199 + 46: aload_3 + 47: invokeinterface #196, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 52: checkcast #198 // class net/minecraft/core/BlockPos + 55: astore 4 + 57: aload 4 + 59: invokevirtual #202 // Method net/minecraft/core/BlockPos.m_123341_:()I + 62: istore 5 + 64: aload 4 + 66: invokevirtual #205 // Method net/minecraft/core/BlockPos.m_123342_:()I + 69: istore 6 + 71: aload 4 + 73: invokevirtual #208 // Method net/minecraft/core/BlockPos.m_123343_:()I + 76: istore 7 + 78: bipush -3 + 80: istore 8 + 82: iload 8 + 84: iconst_3 + 85: if_icmpgt 196 + 88: bipush -3 + 90: istore 9 + 92: iload 9 + 94: iconst_3 + 95: if_icmpgt 190 + 98: bipush -3 + 100: istore 10 + 102: iload 10 + 104: iconst_3 + 105: if_icmpgt 184 + 108: iload 5 + 110: iload 8 + 112: iadd + 113: iload 6 + 115: iload 9 + 117: iadd + 118: iload 7 + 120: iload 10 + 122: iadd + 123: invokestatic #212 // Method net/minecraft/core/BlockPos.m_121882_:(III)J + 126: lstore 11 + 128: aload_1 + 129: lload 11 + 131: invokevirtual #216 // Method it/unimi/dsi/fastutil/longs/LongOpenHashSet.add:(J)Z + 134: ifne 140 + 137: goto 178 + 140: lload 11 + 142: invokestatic #220 // Method net/minecraft/core/BlockPos.m_122022_:(J)Lnet/minecraft/core/BlockPos; + 145: astore 13 + 147: aload_0 + 148: invokevirtual #168 // Method net/minecraftforge/event/level/ExplosionEvent$Detonate.getLevel:()Lnet/minecraft/world/level/Level; + 151: aload 13 + 153: invokevirtual #224 // Method net/minecraft/world/level/Level.m_8055_:(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState; + 156: getstatic #230 // Field com/ogaba/sa_combat/registry/ModBlocks.C4:Lnet/minecraftforge/registries/RegistryObject; + 159: invokevirtual #235 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 162: checkcast #237 // class net/minecraft/world/level/block/Block + 165: invokevirtual #243 // Method net/minecraft/world/level/block/state/BlockState.m_60713_:(Lnet/minecraft/world/level/block/Block;)Z + 168: ifeq 178 + 171: aload_2 + 172: lload 11 + 174: invokevirtual #216 // Method it/unimi/dsi/fastutil/longs/LongOpenHashSet.add:(J)Z + 177: pop + 178: iinc 10, 1 + 181: goto 102 + 184: iinc 9, 1 + 187: goto 92 + 190: iinc 8, 1 + 193: goto 82 + 196: goto 37 + 199: aload_2 + 200: invokevirtual #246 // Method it/unimi/dsi/fastutil/longs/LongOpenHashSet.iterator:()Lit/unimi/dsi/fastutil/longs/LongIterator; + 203: astore_3 + 204: aload_3 + 205: invokeinterface #192, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 210: ifeq 243 + 213: aload_3 + 214: invokeinterface #196, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 219: checkcast #248 // class java/lang/Long + 222: invokevirtual #252 // Method java/lang/Long.longValue:()J + 225: lstore 4 + 227: aload_0 + 228: invokevirtual #168 // Method net/minecraftforge/event/level/ExplosionEvent$Detonate.getLevel:()Lnet/minecraft/world/level/Level; + 231: lload 4 + 233: invokestatic #220 // Method net/minecraft/core/BlockPos.m_122022_:(J)Lnet/minecraft/core/BlockPos; + 236: aconst_null + 237: invokestatic #258 // Method com/ogaba/sa_combat/block/C4Block.explode:(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/Entity;)V + 240: goto 204 + 243: return + + public static void addExternalWeaponUpgradeAttributes(net.minecraftforge.event.ItemAttributeModifierEvent); + Code: + 0: aload_0 + 1: invokevirtual #113 // Method net/minecraftforge/event/ItemAttributeModifierEvent.getItemStack:()Lnet/minecraft/world/item/ItemStack; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #277 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 9: ifne 22 + 12: aload_0 + 13: invokevirtual #103 // Method net/minecraftforge/event/ItemAttributeModifierEvent.getSlotType:()Lnet/minecraft/world/entity/EquipmentSlot; + 16: getstatic #280 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 19: if_acmpeq 23 + 22: return + 23: aload_1 + 24: invokevirtual #119 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 27: instanceof #282 // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon + 30: ifeq 34 + 33: return + 34: aload_1 + 35: invokestatic #286 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D + 38: aload_1 + 39: invokestatic #289 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D + 42: dadd + 43: dstore_2 + 44: dload_2 + 45: dconst_0 + 46: dcmpl + 47: ifeq 75 + 50: aload_0 + 51: getstatic #294 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22281_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 54: new #17 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 57: dup + 58: getstatic #296 // Field EXTERNAL_UPGRADE_DAMAGE_UUID:Ljava/util/UUID; + 61: ldc_w #298 // String SA Combat weapon upgrade damage + 64: dload_2 + 65: getstatic #149 // Field net/minecraft/world/entity/ai/attributes/AttributeModifier$Operation.ADDITION:Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation; + 68: invokespecial #152 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier."":(Ljava/util/UUID;Ljava/lang/String;DLnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation;)V + 71: invokevirtual #156 // Method net/minecraftforge/event/ItemAttributeModifierEvent.addModifier:(Lnet/minecraft/world/entity/ai/attributes/Attribute;Lnet/minecraft/world/entity/ai/attributes/AttributeModifier;)Z + 74: pop + 75: aload_1 + 76: invokestatic #301 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getSpeedBonus:(Lnet/minecraft/world/item/ItemStack;)D + 79: aload_1 + 80: invokestatic #302 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getSpeedBonus:(Lnet/minecraft/world/item/ItemStack;)D + 83: dadd + 84: dstore 4 + 86: dload 4 + 88: dconst_0 + 89: dcmpl + 90: ifeq 119 + 93: aload_0 + 94: getstatic #305 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22283_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 97: new #17 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 100: dup + 101: getstatic #307 // Field EXTERNAL_UPGRADE_SPEED_UUID:Ljava/util/UUID; + 104: ldc_w #309 // String SA Combat weapon upgrade speed + 107: dload 4 + 109: getstatic #149 // Field net/minecraft/world/entity/ai/attributes/AttributeModifier$Operation.ADDITION:Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation; + 112: invokespecial #152 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier."":(Ljava/util/UUID;Ljava/lang/String;DLnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation;)V + 115: invokevirtual #156 // Method net/minecraftforge/event/ItemAttributeModifierEvent.addModifier:(Lnet/minecraft/world/entity/ai/attributes/Attribute;Lnet/minecraft/world/entity/ai/attributes/AttributeModifier;)Z + 118: pop + 119: aload_1 + 120: invokestatic #312 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getKnockbackBonus:(Lnet/minecraft/world/item/ItemStack;)D + 123: aload_1 + 124: invokestatic #313 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getKnockbackBonus:(Lnet/minecraft/world/item/ItemStack;)D + 127: dadd + 128: dstore 6 + 130: dload 6 + 132: dconst_0 + 133: dcmpl + 134: ifeq 163 + 137: aload_0 + 138: getstatic #316 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22282_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 141: new #17 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 144: dup + 145: getstatic #318 // Field EXTERNAL_UPGRADE_KNOCKBACK_UUID:Ljava/util/UUID; + 148: ldc_w #320 // String SA Combat weapon upgrade knockback + 151: dload 6 + 153: getstatic #149 // Field net/minecraft/world/entity/ai/attributes/AttributeModifier$Operation.ADDITION:Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation; + 156: invokespecial #152 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier."":(Ljava/util/UUID;Ljava/lang/String;DLnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation;)V + 159: invokevirtual #156 // Method net/minecraftforge/event/ItemAttributeModifierEvent.addModifier:(Lnet/minecraft/world/entity/ai/attributes/Attribute;Lnet/minecraft/world/entity/ai/attributes/AttributeModifier;)Z + 162: pop + 163: aload_1 + 164: invokestatic #323 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getReachBonus:(Lnet/minecraft/world/item/ItemStack;)D + 167: aload_1 + 168: invokestatic #324 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getReachBonus:(Lnet/minecraft/world/item/ItemStack;)D + 171: dadd + 172: dstore 8 + 174: dload 8 + 176: dconst_0 + 177: dcmpl + 178: ifeq 213 + 181: aload_0 + 182: getstatic #329 // Field net/minecraftforge/common/ForgeMod.ENTITY_REACH:Lnet/minecraftforge/registries/RegistryObject; + 185: invokevirtual #235 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 188: checkcast #137 // class net/minecraft/world/entity/ai/attributes/Attribute + 191: new #17 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 194: dup + 195: getstatic #331 // Field EXTERNAL_UPGRADE_REACH_UUID:Ljava/util/UUID; + 198: ldc_w #333 // String SA Combat weapon upgrade reach + 201: dload 8 + 203: getstatic #149 // Field net/minecraft/world/entity/ai/attributes/AttributeModifier$Operation.ADDITION:Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation; + 206: invokespecial #152 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier."":(Ljava/util/UUID;Ljava/lang/String;DLnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation;)V + 209: invokevirtual #156 // Method net/minecraftforge/event/ItemAttributeModifierEvent.addModifier:(Lnet/minecraft/world/entity/ai/attributes/Attribute;Lnet/minecraft/world/entity/ai/attributes/AttributeModifier;)Z + 212: pop + 213: return + + public static void applyWeaponCriticalUpgrade(net.minecraftforge.event.entity.living.LivingHurtEvent); + Code: + 0: aload_0 + 1: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 4: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 7: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 10: ifeq 14 + 13: return + 14: aload_0 + 15: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 18: invokevirtual #363 // Method net/minecraft/world/damagesource/DamageSource.m_7639_:()Lnet/minecraft/world/entity/Entity; + 21: astore_2 + 22: aload_2 + 23: instanceof #350 // class net/minecraft/world/entity/LivingEntity + 26: ifeq 37 + 29: aload_2 + 30: checkcast #350 // class net/minecraft/world/entity/LivingEntity + 33: astore_1 + 34: goto 38 + 37: return + 38: aload_0 + 39: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 42: invokevirtual #366 // Method net/minecraft/world/damagesource/DamageSource.m_7640_:()Lnet/minecraft/world/entity/Entity; + 45: aload_1 + 46: if_acmpeq 50 + 49: return + 50: aload_1 + 51: invokevirtual #369 // Method net/minecraft/world/entity/LivingEntity.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 54: astore_2 + 55: aload_2 + 56: invokevirtual #277 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 59: ifne 69 + 62: aload_2 + 63: invokestatic #375 // Method com/ogaba/sa_combat/combat/weapon/WeaponSlotProfile.isUpgradeableWeapon:(Lnet/minecraft/world/item/ItemStack;)Z + 66: ifne 70 + 69: return + 70: dconst_0 + 71: aload_2 + 72: invokestatic #378 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getCriticalChanceBonus:(Lnet/minecraft/world/item/ItemStack;)D + 75: invokestatic #384 // Method java/lang/Math.max:(DD)D + 78: dstore_3 + 79: dload_3 + 80: dconst_0 + 81: dcmpg + 82: ifgt 86 + 85: return + 86: ldc2_w #385 // double 0.95d + 89: dload_3 + 90: invokestatic #389 // Method java/lang/Math.min:(DD)D + 93: dstore_3 + 94: aload_1 + 95: invokevirtual #393 // Method net/minecraft/world/entity/LivingEntity.m_217043_:()Lnet/minecraft/util/RandomSource; + 98: invokeinterface #398, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188500_:()D + 103: dload_3 + 104: dcmpl + 105: iflt 109 + 108: return + 109: dconst_0 + 110: aload_2 + 111: invokestatic #401 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getCriticalDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D + 114: invokestatic #384 // Method java/lang/Math.max:(DD)D + 117: dstore 5 + 119: dload 5 + 121: dconst_0 + 122: dcmpg + 123: ifgt 131 + 126: ldc2_w #402 // double 0.25d + 129: dstore 5 + 131: aload_0 + 132: aload_0 + 133: invokevirtual #407 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getAmount:()F + 136: f2d + 137: dconst_1 + 138: dload 5 + 140: dadd + 141: dmul + 142: d2f + 143: invokevirtual #411 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.setAmount:(F)V + 146: aload_1 + 147: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 150: aconst_null + 151: aload_1 + 152: invokevirtual #414 // Method net/minecraft/world/entity/LivingEntity.m_20185_:()D + 155: aload_1 + 156: invokevirtual #417 // Method net/minecraft/world/entity/LivingEntity.m_20186_:()D + 159: aload_1 + 160: invokevirtual #420 // Method net/minecraft/world/entity/LivingEntity.m_20189_:()D + 163: getstatic #426 // Field net/minecraft/sounds/SoundEvents.f_12313_:Lnet/minecraft/sounds/SoundEvent; + 166: getstatic #432 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 169: ldc_w #433 // float 0.75f + 172: ldc_w #434 // float 1.15f + 175: invokevirtual #438 // Method net/minecraft/world/level/Level.m_6263_:(Lnet/minecraft/world/entity/player/Player;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V + 178: return + + public static void procExternalWeaponAbilities(net.minecraftforge.event.entity.living.LivingHurtEvent); + Code: + 0: getstatic #446 // Field proccingExternalAbility:Z + 3: ifne 19 + 6: aload_0 + 7: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 10: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 13: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 16: ifeq 20 + 19: return + 20: aload_0 + 21: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 24: invokevirtual #363 // Method net/minecraft/world/damagesource/DamageSource.m_7639_:()Lnet/minecraft/world/entity/Entity; + 27: astore_2 + 28: aload_2 + 29: instanceof #350 // class net/minecraft/world/entity/LivingEntity + 32: ifeq 43 + 35: aload_2 + 36: checkcast #350 // class net/minecraft/world/entity/LivingEntity + 39: astore_1 + 40: goto 44 + 43: return + 44: aload_0 + 45: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 48: invokevirtual #366 // Method net/minecraft/world/damagesource/DamageSource.m_7640_:()Lnet/minecraft/world/entity/Entity; + 51: aload_1 + 52: if_acmpeq 56 + 55: return + 56: aload_1 + 57: invokevirtual #369 // Method net/minecraft/world/entity/LivingEntity.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 60: astore_2 + 61: aload_2 + 62: invokevirtual #277 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 65: ifne 85 + 68: aload_2 + 69: invokevirtual #119 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 72: instanceof #282 // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon + 75: ifne 85 + 78: aload_2 + 79: invokestatic #375 // Method com/ogaba/sa_combat/combat/weapon/WeaponSlotProfile.isUpgradeableWeapon:(Lnet/minecraft/world/item/ItemStack;)Z + 82: ifne 86 + 85: return + 86: new #448 // class java/util/ArrayList + 89: dup + 90: aload_2 + 91: invokestatic #452 // Method com/ogaba/sa_combat/combat/weapon/WeaponSlotProfile.baseAbilities:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 94: invokespecial #455 // Method java/util/ArrayList."":(Ljava/util/Collection;)V + 97: astore_3 + 98: aload_2 + 99: invokestatic #458 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getAbilityUpgrades:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 102: invokeinterface #187, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 107: astore 4 + 109: aload 4 + 111: invokeinterface #192, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 116: ifeq 179 + 119: aload 4 + 121: invokeinterface #196, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 126: checkcast #25 // class com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData$Entry + 129: astore 5 + 131: aload 5 + 133: invokevirtual #462 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData$Entry.upgrade:()Ljava/util/Optional; + 136: invokedynamic #481, 0 // InvokeDynamic #0:test:()Ljava/util/function/Predicate; + 141: invokevirtual #487 // Method java/util/Optional.filter:(Ljava/util/function/Predicate;)Ljava/util/Optional; + 144: aload 5 + 146: invokedynamic #500, 0 // InvokeDynamic #1:apply:(Lcom/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData$Entry;)Ljava/util/function/Function; + 151: invokevirtual #504 // Method java/util/Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional; + 154: invokedynamic #511, 0 // InvokeDynamic #2:test:()Ljava/util/function/Predicate; + 159: invokevirtual #487 // Method java/util/Optional.filter:(Ljava/util/function/Predicate;)Ljava/util/Optional; + 162: aload_3 + 163: dup + 164: invokestatic #516 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 167: pop + 168: invokedynamic #527, 0 // InvokeDynamic #3:accept:(Ljava/util/List;)Ljava/util/function/Consumer; + 173: invokevirtual #531 // Method java/util/Optional.ifPresent:(Ljava/util/function/Consumer;)V + 176: goto 109 + 179: aload_2 + 180: invokestatic #535 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.installedAttachments:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Map; + 183: astore 4 + 185: aload 4 + 187: invokeinterface #541, 1 // InterfaceMethod java/util/Map.values:()Ljava/util/Collection; + 192: aload_3 + 193: aload_0 + 194: aload_1 + 195: invokedynamic #551, 0 // InvokeDynamic #4:accept:(Ljava/util/List;Lnet/minecraftforge/event/entity/living/LivingHurtEvent;Lnet/minecraft/world/entity/LivingEntity;)Ljava/util/function/Consumer; + 200: invokeinterface #556, 2 // InterfaceMethod java/util/Collection.forEach:(Ljava/util/function/Consumer;)V + 205: aload 4 + 207: invokeinterface #559, 1 // InterfaceMethod java/util/Map.isEmpty:()Z + 212: ifeq 230 + 215: aload_2 + 216: invokestatic #563 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getModifier:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional; + 219: aload_3 + 220: aload_0 + 221: aload_1 + 222: invokedynamic #571, 0 // InvokeDynamic #5:accept:(Ljava/util/List;Lnet/minecraftforge/event/entity/living/LivingHurtEvent;Lnet/minecraft/world/entity/LivingEntity;)Ljava/util/function/Consumer; + 227: invokevirtual #531 // Method java/util/Optional.ifPresent:(Ljava/util/function/Consumer;)V + 230: aload_3 + 231: invokestatic #577 // Method com/ogaba/sa_combat/combat/system/AbilityInstance.mergeByType:(Ljava/util/List;)Ljava/util/List; + 234: invokeinterface #581, 1 // InterfaceMethod java/util/List.stream:()Ljava/util/stream/Stream; + 239: invokedynamic #591, 0 // InvokeDynamic #6:apply:()Ljava/util/function/Function; + 244: invokeinterface #596, 2 // InterfaceMethod java/util/stream/Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream; + 249: invokeinterface #599, 1 // InterfaceMethod java/util/stream/Stream.toList:()Ljava/util/List; + 254: astore 5 + 256: aload 5 + 258: invokeinterface #600, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 263: ifeq 267 + 266: return + 267: iconst_1 + 268: putstatic #446 // Field proccingExternalAbility:Z + 271: getstatic #604 // Field com/ogaba/sa_combat/event/SACombatForgeEvents$1.$SwitchMap$com$ogaba$sa_combat$combat$weapon$WeaponProcMode:[I + 274: aload_2 + 275: invokestatic #608 // Method com/ogaba/sa_combat/combat/weapon/WeaponSlotProfile.procMode:(Lnet/minecraft/world/item/ItemStack;)Lcom/ogaba/sa_combat/combat/weapon/WeaponProcMode; + 278: invokevirtual #613 // Method com/ogaba/sa_combat/combat/weapon/WeaponProcMode.ordinal:()I + 281: iaload + 282: tableswitch { // 1 to 3 + + 1: 308 + + 2: 356 + + 3: 394 + default: 444 + } + 308: aload 5 + 310: invokeinterface #187, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 315: astore 6 + 317: aload 6 + 319: invokeinterface #192, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 324: ifeq 353 + 327: aload 6 + 329: invokeinterface #196, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 334: checkcast #615 // class com/ogaba/sa_combat/combat/system/WeaponAbility + 337: astore 7 + 339: aload 7 + 341: aload_0 + 342: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 345: aload_1 + 346: invokevirtual #619 // Method com/ogaba/sa_combat/combat/system/WeaponAbility.tryProc:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)Z + 349: pop + 350: goto 317 + 353: goto 444 + 356: aload 5 + 358: aload_1 + 359: invokevirtual #393 // Method net/minecraft/world/entity/LivingEntity.m_217043_:()Lnet/minecraft/util/RandomSource; + 362: aload 5 + 364: invokeinterface #622, 1 // InterfaceMethod java/util/List.size:()I + 369: invokeinterface #626, 2 // InterfaceMethod net/minecraft/util/RandomSource.m_188503_:(I)I + 374: invokeinterface #629, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 379: checkcast #615 // class com/ogaba/sa_combat/combat/system/WeaponAbility + 382: aload_0 + 383: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 386: aload_1 + 387: invokevirtual #619 // Method com/ogaba/sa_combat/combat/system/WeaponAbility.tryProc:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)Z + 390: pop + 391: goto 444 + 394: aload 5 + 396: invokeinterface #187, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 401: astore 6 + 403: aload 6 + 405: invokeinterface #192, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 410: ifeq 444 + 413: aload 6 + 415: invokeinterface #196, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 420: checkcast #615 // class com/ogaba/sa_combat/combat/system/WeaponAbility + 423: astore 7 + 425: aload 7 + 427: aload_0 + 428: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 431: aload_1 + 432: invokevirtual #619 // Method com/ogaba/sa_combat/combat/system/WeaponAbility.tryProc:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)Z + 435: ifeq 441 + 438: goto 444 + 441: goto 403 + 444: iconst_0 + 445: putstatic #446 // Field proccingExternalAbility:Z + 448: goto 460 + 451: astore 8 + 453: iconst_0 + 454: putstatic #446 // Field proccingExternalAbility:Z + 457: aload 8 + 459: athrow + 460: return + Exception table: + from to target type + 271 444 451 any + 451 453 451 any + + public static void cancelShieldMeleeDamage(net.minecraftforge.event.entity.living.LivingHurtEvent); + Code: + 0: getstatic #645 // Field proccingShieldThorns:Z + 3: ifne 19 + 6: aload_0 + 7: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 10: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 13: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 16: ifeq 20 + 19: return + 20: aload_0 + 21: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 24: invokevirtual #363 // Method net/minecraft/world/damagesource/DamageSource.m_7639_:()Lnet/minecraft/world/entity/Entity; + 27: astore_2 + 28: aload_2 + 29: instanceof #350 // class net/minecraft/world/entity/LivingEntity + 32: ifeq 43 + 35: aload_2 + 36: checkcast #350 // class net/minecraft/world/entity/LivingEntity + 39: astore_1 + 40: goto 44 + 43: return + 44: aload_0 + 45: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 48: invokevirtual #366 // Method net/minecraft/world/damagesource/DamageSource.m_7640_:()Lnet/minecraft/world/entity/Entity; + 51: aload_1 + 52: if_acmpeq 56 + 55: return + 56: aload_1 + 57: invokevirtual #369 // Method net/minecraft/world/entity/LivingEntity.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 60: astore_2 + 61: aload_2 + 62: invokevirtual #119 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 65: instanceof #647 // class com/ogaba/sa_combat/combat/weapon/SAShieldItem + 68: ifeq 81 + 71: aload_0 + 72: iconst_1 + 73: invokevirtual #651 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.setCanceled:(Z)V + 76: aload_0 + 77: fconst_0 + 78: invokevirtual #411 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.setAmount:(F)V + 81: return + + public static void applySpikedShieldThorns(net.minecraftforge.event.entity.living.ShieldBlockEvent); + Code: + 0: aload_0 + 1: invokevirtual #657 // Method net/minecraftforge/event/entity/living/ShieldBlockEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 4: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 7: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 10: ifeq 14 + 13: return + 14: aload_0 + 15: invokevirtual #657 // Method net/minecraftforge/event/entity/living/ShieldBlockEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 18: astore_1 + 19: aload_0 + 20: invokevirtual #660 // Method net/minecraftforge/event/entity/living/ShieldBlockEvent.getDamageSource:()Lnet/minecraft/world/damagesource/DamageSource; + 23: invokevirtual #363 // Method net/minecraft/world/damagesource/DamageSource.m_7639_:()Lnet/minecraft/world/entity/Entity; + 26: astore_2 + 27: aload_2 + 28: instanceof #350 // class net/minecraft/world/entity/LivingEntity + 31: ifeq 51 + 34: aload_2 + 35: checkcast #350 // class net/minecraft/world/entity/LivingEntity + 38: astore_3 + 39: aload_3 + 40: aload_1 + 41: if_acmpeq 51 + 44: aload_3 + 45: invokevirtual #663 // Method net/minecraft/world/entity/LivingEntity.m_6084_:()Z + 48: ifne 52 + 51: return + 52: aload_1 + 53: invokevirtual #668 // Method net/minecraft/world/entity/LivingEntity.m_21211_:()Lnet/minecraft/world/item/ItemStack; + 56: astore 4 + 58: aload_1 + 59: aload_3 + 60: aload 4 + 62: aload_0 + 63: invokevirtual #671 // Method net/minecraftforge/event/entity/living/ShieldBlockEvent.getBlockedDamage:()F + 66: invokestatic #674 // Method applySpikedShieldThorns:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;F)Z + 69: ifne 86 + 72: aload_1 + 73: aload_3 + 74: aload_1 + 75: invokevirtual #677 // Method net/minecraft/world/entity/LivingEntity.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 78: aload_0 + 79: invokevirtual #671 // Method net/minecraftforge/event/entity/living/ShieldBlockEvent.getBlockedDamage:()F + 82: invokestatic #674 // Method applySpikedShieldThorns:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;F)Z + 85: pop + 86: return + + public static void applySpikedShieldThornsFallback(net.minecraftforge.event.entity.living.LivingHurtEvent); + Code: + 0: getstatic #645 // Field proccingShieldThorns:Z + 3: ifne 28 + 6: aload_0 + 7: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 10: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 13: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 16: ifne 28 + 19: aload_0 + 20: invokevirtual #407 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getAmount:()F + 23: fconst_0 + 24: fcmpg + 25: ifgt 29 + 28: return + 29: aload_0 + 30: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 33: astore_1 + 34: aload_1 + 35: invokevirtual #686 // Method net/minecraft/world/entity/LivingEntity.m_21254_:()Z + 38: ifne 42 + 41: return + 42: aload_0 + 43: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 46: invokevirtual #363 // Method net/minecraft/world/damagesource/DamageSource.m_7639_:()Lnet/minecraft/world/entity/Entity; + 49: astore_2 + 50: aload_2 + 51: instanceof #350 // class net/minecraft/world/entity/LivingEntity + 54: ifeq 74 + 57: aload_2 + 58: checkcast #350 // class net/minecraft/world/entity/LivingEntity + 61: astore_3 + 62: aload_3 + 63: aload_1 + 64: if_acmpeq 74 + 67: aload_3 + 68: invokevirtual #663 // Method net/minecraft/world/entity/LivingEntity.m_6084_:()Z + 71: ifne 75 + 74: return + 75: aload_1 + 76: invokevirtual #668 // Method net/minecraft/world/entity/LivingEntity.m_21211_:()Lnet/minecraft/world/item/ItemStack; + 79: astore 4 + 81: aload_1 + 82: aload_3 + 83: aload 4 + 85: aload_0 + 86: invokevirtual #407 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getAmount:()F + 89: invokestatic #674 // Method applySpikedShieldThorns:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;F)Z + 92: ifne 109 + 95: aload_1 + 96: aload_3 + 97: aload_1 + 98: invokevirtual #677 // Method net/minecraft/world/entity/LivingEntity.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 101: aload_0 + 102: invokevirtual #407 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getAmount:()F + 105: invokestatic #674 // Method applySpikedShieldThorns:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;F)Z + 108: pop + 109: return + + private static boolean applySpikedShieldThorns(net.minecraft.world.entity.LivingEntity, net.minecraft.world.entity.LivingEntity, net.minecraft.world.item.ItemStack, float); + Code: + 0: aload_2 + 1: invokevirtual #277 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifne 24 + 7: aload_2 + 8: invokevirtual #119 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 11: instanceof #647 // class com/ogaba/sa_combat/combat/weapon/SAShieldItem + 14: ifeq 24 + 17: aload_2 + 18: invokestatic #689 // Method hasSpikedShieldUpgrade:(Lnet/minecraft/world/item/ItemStack;)Z + 21: ifne 26 + 24: iconst_0 + 25: ireturn + 26: aload_0 + 27: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 30: invokevirtual #692 // Method net/minecraft/world/level/Level.m_46467_:()J + 33: lstore 4 + 35: aload_2 + 36: invokevirtual #696 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 39: ldc_w #698 // String SACombatLastShieldThornsTick + 42: invokevirtual #704 // Method net/minecraft/nbt/CompoundTag.m_128454_:(Ljava/lang/String;)J + 45: lload 4 + 47: lcmp + 48: ifne 53 + 51: iconst_1 + 52: ireturn + 53: aload_2 + 54: invokevirtual #696 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 57: ldc_w #698 // String SACombatLastShieldThornsTick + 60: lload 4 + 62: invokevirtual #708 // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V + 65: fconst_1 + 66: ldc_w #709 // float 4.0f + 69: fconst_1 + 70: fload_3 + 71: ldc_w #710 // float 0.35f + 74: fmul + 75: fadd + 76: invokestatic #713 // Method java/lang/Math.min:(FF)F + 79: invokestatic #715 // Method java/lang/Math.max:(FF)F + 82: fstore 6 + 84: iconst_1 + 85: putstatic #645 // Field proccingShieldThorns:Z + 88: aload_1 + 89: aload_0 + 90: invokevirtual #719 // Method net/minecraft/world/entity/LivingEntity.m_269291_:()Lnet/minecraft/world/damagesource/DamageSources; + 93: aload_0 + 94: invokevirtual #725 // Method net/minecraft/world/damagesource/DamageSources.m_269374_:(Lnet/minecraft/world/entity/Entity;)Lnet/minecraft/world/damagesource/DamageSource; + 97: fload 6 + 99: invokevirtual #729 // Method net/minecraft/world/entity/LivingEntity.m_6469_:(Lnet/minecraft/world/damagesource/DamageSource;F)Z + 102: pop + 103: iconst_0 + 104: putstatic #645 // Field proccingShieldThorns:Z + 107: goto 119 + 110: astore 7 + 112: iconst_0 + 113: putstatic #645 // Field proccingShieldThorns:Z + 116: aload 7 + 118: athrow + 119: aload_0 + 120: invokevirtual #393 // Method net/minecraft/world/entity/LivingEntity.m_217043_:()Lnet/minecraft/util/RandomSource; + 123: invokeinterface #732, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F + 128: ldc_w #710 // float 0.35f + 131: fcmpg + 132: ifge 159 + 135: aload_1 + 136: new #734 // class net/minecraft/world/effect/MobEffectInstance + 139: dup + 140: getstatic #739 // Field com/ogaba/sacore/registry/ModEffects.BLEEDING:Lnet/minecraftforge/registries/RegistryObject; + 143: invokevirtual #235 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 146: checkcast #741 // class net/minecraft/world/effect/MobEffect + 149: bipush 100 + 151: iconst_0 + 152: invokespecial #744 // Method net/minecraft/world/effect/MobEffectInstance."":(Lnet/minecraft/world/effect/MobEffect;II)V + 155: invokevirtual #748 // Method net/minecraft/world/entity/LivingEntity.m_7292_:(Lnet/minecraft/world/effect/MobEffectInstance;)Z + 158: pop + 159: aload_0 + 160: instanceof #750 // class net/minecraft/world/entity/player/Player + 163: ifeq 183 + 166: aload_0 + 167: checkcast #750 // class net/minecraft/world/entity/player/Player + 170: astore 7 + 172: aload 7 + 174: invokevirtual #754 // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities; + 177: getfield #759 // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z + 180: ifne 194 + 183: aload_2 + 184: iconst_1 + 185: aload_0 + 186: invokedynamic #770, 0 // InvokeDynamic #7:accept:()Ljava/util/function/Consumer; + 191: invokevirtual #774 // Method net/minecraft/world/item/ItemStack.m_41622_:(ILnet/minecraft/world/entity/LivingEntity;Ljava/util/function/Consumer;)V + 194: aload_0 + 195: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 198: aconst_null + 199: aload_0 + 200: invokevirtual #414 // Method net/minecraft/world/entity/LivingEntity.m_20185_:()D + 203: aload_0 + 204: invokevirtual #417 // Method net/minecraft/world/entity/LivingEntity.m_20186_:()D + 207: aload_0 + 208: invokevirtual #420 // Method net/minecraft/world/entity/LivingEntity.m_20189_:()D + 211: getstatic #777 // Field net/minecraft/sounds/SoundEvents.f_12274_:Lnet/minecraft/sounds/SoundEvent; + 214: getstatic #432 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 217: ldc_w #778 // float 0.7f + 220: ldc_w #779 // float 1.1f + 223: invokevirtual #438 // Method net/minecraft/world/level/Level.m_6263_:(Lnet/minecraft/world/entity/player/Player;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V + 226: iconst_1 + 227: ireturn + Exception table: + from to target type + 88 103 110 any + 110 112 110 any + + private static boolean hasSpikedShieldUpgrade(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: ldc_w #787 // String spiked + 4: invokestatic #791 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAttachmentPath:(Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;)Z + 7: ireturn + + public static void tickBallisticProtection(net.minecraftforge.event.TickEvent$PlayerTickEvent); + Code: + 0: aload_0 + 1: getfield #797 // Field net/minecraftforge/event/TickEvent$PlayerTickEvent.phase:Lnet/minecraftforge/event/TickEvent$Phase; + 4: getstatic #800 // Field net/minecraftforge/event/TickEvent$Phase.END:Lnet/minecraftforge/event/TickEvent$Phase; + 7: if_acmpne 23 + 10: aload_0 + 11: getfield #802 // Field net/minecraftforge/event/TickEvent$PlayerTickEvent.player:Lnet/minecraft/world/entity/player/Player; + 14: invokevirtual #803 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 17: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 20: ifeq 24 + 23: return + 24: aload_0 + 25: getfield #802 // Field net/minecraftforge/event/TickEvent$PlayerTickEvent.player:Lnet/minecraft/world/entity/player/Player; + 28: getfield #806 // Field net/minecraft/world/entity/player/Player.f_19797_:I + 31: bipush 20 + 33: irem + 34: ifeq 38 + 37: return + 38: aload_0 + 39: getfield #802 // Field net/minecraftforge/event/TickEvent$PlayerTickEvent.player:Lnet/minecraft/world/entity/player/Player; + 42: invokestatic #811 // Method com/ogaba/sa_combat/combat/armor/BallisticProtection.tickEquippedVests:(Lnet/minecraft/world/entity/LivingEntity;)V + 45: aload_0 + 46: getfield #802 // Field net/minecraftforge/event/TickEvent$PlayerTickEvent.player:Lnet/minecraft/world/entity/player/Player; + 49: astore_2 + 50: aload_2 + 51: instanceof #813 // class net/minecraft/server/level/ServerPlayer + 54: ifeq 66 + 57: aload_2 + 58: checkcast #813 // class net/minecraft/server/level/ServerPlayer + 61: astore_1 + 62: aload_1 + 63: invokestatic #817 // Method com/ogaba/sa_combat/combat/armor/BallisticProtection.syncHud:(Lnet/minecraft/server/level/ServerPlayer;)V + 66: return + + public static void consumeBallisticProtectionOnDamage(net.minecraftforge.event.entity.living.LivingHurtEvent); + Code: + 0: aload_0 + 1: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 4: invokevirtual #353 // Method net/minecraft/world/entity/LivingEntity.m_9236_:()Lnet/minecraft/world/level/Level; + 7: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 10: ifne 22 + 13: aload_0 + 14: invokevirtual #407 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getAmount:()F + 17: fconst_0 + 18: fcmpg + 19: ifgt 23 + 22: return + 23: aload_0 + 24: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 27: astore_2 + 28: aload_2 + 29: instanceof #813 // class net/minecraft/server/level/ServerPlayer + 32: ifeq 47 + 35: aload_2 + 36: checkcast #813 // class net/minecraft/server/level/ServerPlayer + 39: astore_1 + 40: aload_0 + 41: invokestatic #824 // Method isBallisticProjectileDamage:(Lnet/minecraftforge/event/entity/living/LivingHurtEvent;)Z + 44: ifne 48 + 47: return + 48: aload_1 + 49: invokestatic #828 // Method com/ogaba/sa_combat/combat/armor/BallisticProtection.findBestEquippedVest:(Lnet/minecraft/world/entity/LivingEntity;)Ljava/util/Optional; + 52: aload_0 + 53: aload_1 + 54: invokedynamic #838, 0 // InvokeDynamic #8:accept:(Lnet/minecraftforge/event/entity/living/LivingHurtEvent;Lnet/minecraft/server/level/ServerPlayer;)Ljava/util/function/Consumer; + 59: invokevirtual #531 // Method java/util/Optional.ifPresent:(Ljava/util/function/Consumer;)V + 62: return + + private static boolean isBallisticProjectileDamage(net.minecraftforge.event.entity.living.LivingHurtEvent); + Code: + 0: aload_0 + 1: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 4: ifnonnull 9 + 7: iconst_0 + 8: ireturn + 9: aload_0 + 10: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 13: getstatic #844 // Field net/minecraft/tags/DamageTypeTags.f_268524_:Lnet/minecraft/tags/TagKey; + 16: invokevirtual #848 // Method net/minecraft/world/damagesource/DamageSource.m_269533_:(Lnet/minecraft/tags/TagKey;)Z + 19: ifeq 24 + 22: iconst_1 + 23: ireturn + 24: aload_0 + 25: invokevirtual #357 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getSource:()Lnet/minecraft/world/damagesource/DamageSource; + 28: invokevirtual #366 // Method net/minecraft/world/damagesource/DamageSource.m_7640_:()Lnet/minecraft/world/entity/Entity; + 31: astore_1 + 32: aload_1 + 33: instanceof #850 // class net/minecraft/world/entity/projectile/Projectile + 36: ifeq 47 + 39: aload_1 + 40: checkcast #850 // class net/minecraft/world/entity/projectile/Projectile + 43: astore_2 + 44: goto 49 + 47: iconst_0 + 48: ireturn + 49: iconst_1 + 50: ireturn + + public static void climbWithDualIceAxes(net.minecraftforge.event.TickEvent$PlayerTickEvent); + Code: + 0: aload_0 + 1: getfield #797 // Field net/minecraftforge/event/TickEvent$PlayerTickEvent.phase:Lnet/minecraftforge/event/TickEvent$Phase; + 4: getstatic #800 // Field net/minecraftforge/event/TickEvent$Phase.END:Lnet/minecraftforge/event/TickEvent$Phase; + 7: if_acmpeq 11 + 10: return + 11: aload_0 + 12: getfield #802 // Field net/minecraftforge/event/TickEvent$PlayerTickEvent.player:Lnet/minecraft/world/entity/player/Player; + 15: astore_1 + 16: aload_1 + 17: invokevirtual #857 // Method net/minecraft/world/entity/player/Player.m_5833_:()Z + 20: ifne 44 + 23: aload_1 + 24: invokevirtual #860 // Method net/minecraft/world/entity/player/Player.m_21255_:()Z + 27: ifne 44 + 30: aload_1 + 31: invokevirtual #863 // Method net/minecraft/world/entity/player/Player.m_20072_:()Z + 34: ifne 44 + 37: aload_1 + 38: invokevirtual #866 // Method net/minecraft/world/entity/player/Player.m_20096_:()Z + 41: ifeq 45 + 44: return + 45: aload_1 + 46: invokestatic #870 // Method hasDualIceAxes:(Lnet/minecraft/world/entity/player/Player;)Z + 49: ifeq 59 + 52: aload_1 + 53: getfield #873 // Field net/minecraft/world/entity/player/Player.f_19862_:Z + 56: ifne 60 + 59: return + 60: aload_1 + 61: invokevirtual #877 // Method net/minecraft/world/entity/player/Player.m_20184_:()Lnet/minecraft/world/phys/Vec3; + 64: astore_2 + 65: aload_1 + 66: invokevirtual #880 // Method net/minecraft/world/entity/player/Player.m_6144_:()Z + 69: istore_3 + 70: iload_3 + 71: ifeq 80 + 74: ldc2_w #881 // double -0.055d + 77: goto 83 + 80: ldc2_w #885 // double 0.125d + 83: dstore 4 + 85: aload_2 + 86: getfield #889 // Field net/minecraft/world/phys/Vec3.f_82480_:D + 89: dload 4 + 91: dcmpg + 92: ifge 122 + 95: aload_1 + 96: aload_2 + 97: getfield #892 // Field net/minecraft/world/phys/Vec3.f_82479_:D + 100: ldc2_w #893 // double 0.72d + 103: dmul + 104: dload 4 + 106: aload_2 + 107: getfield #897 // Field net/minecraft/world/phys/Vec3.f_82481_:D + 110: ldc2_w #893 // double 0.72d + 113: dmul + 114: invokevirtual #901 // Method net/minecraft/world/entity/player/Player.m_20334_:(DDD)V + 117: aload_1 + 118: iconst_1 + 119: putfield #904 // Field net/minecraft/world/entity/player/Player.f_19812_:Z + 122: aload_1 + 123: fconst_0 + 124: putfield #907 // Field net/minecraft/world/entity/player/Player.f_19789_:F + 127: aload_1 + 128: getfield #806 // Field net/minecraft/world/entity/player/Player.f_19797_:I + 131: bipush 10 + 133: irem + 134: ifne 142 + 137: aload_1 + 138: iload_3 + 139: invokestatic #911 // Method playIceAxeClimbSound:(Lnet/minecraft/world/entity/player/Player;Z)V + 142: aload_1 + 143: invokevirtual #803 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 146: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 149: ifne 188 + 152: aload_1 + 153: invokevirtual #754 // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities; + 156: getfield #759 // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z + 159: ifne 188 + 162: aload_1 + 163: getfield #806 // Field net/minecraft/world/entity/player/Player.f_19797_:I + 166: bipush 20 + 168: irem + 169: ifne 188 + 172: aload_1 + 173: invokevirtual #912 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 176: aload_1 + 177: invokestatic #916 // Method damageIceAxe:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/player/Player;)V + 180: aload_1 + 181: invokevirtual #917 // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 184: aload_1 + 185: invokestatic #916 // Method damageIceAxe:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/player/Player;)V + 188: return + + private static void playIceAxeClimbSound(net.minecraft.world.entity.player.Player, boolean); + Code: + 0: iload_1 + 1: ifeq 10 + 4: ldc_w #922 // float 0.95f + 7: goto 13 + 10: ldc_w #923 // float 1.05f + 13: fstore_2 + 14: iload_1 + 15: ifeq 24 + 18: ldc_w #924 // float 0.72f + 21: goto 27 + 24: ldc_w #925 // float 1.22f + 27: fstore_3 + 28: aload_0 + 29: invokevirtual #803 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 32: invokevirtual #174 // Method net/minecraft/world/level/Level.m_5776_:()Z + 35: ifeq 81 + 38: aload_0 + 39: invokevirtual #803 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 42: aload_0 + 43: invokevirtual #926 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 46: aload_0 + 47: invokevirtual #927 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 50: aload_0 + 51: invokevirtual #928 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 54: getstatic #931 // Field net/minecraft/sounds/SoundEvents.f_144108_:Lnet/minecraft/sounds/SoundEvent; + 57: getstatic #432 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 60: fload_2 + 61: fload_3 + 62: aload_0 + 63: invokevirtual #932 // Method net/minecraft/world/entity/player/Player.m_217043_:()Lnet/minecraft/util/RandomSource; + 66: invokeinterface #732, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F + 71: ldc_w #933 // float 0.1f + 74: fmul + 75: fadd + 76: iconst_0 + 77: invokevirtual #937 // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V + 80: return + 81: aload_0 + 82: invokevirtual #803 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 85: aload_0 + 86: aload_0 + 87: invokevirtual #926 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 90: aload_0 + 91: invokevirtual #927 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 94: aload_0 + 95: invokevirtual #928 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 98: getstatic #931 // Field net/minecraft/sounds/SoundEvents.f_144108_:Lnet/minecraft/sounds/SoundEvent; + 101: getstatic #432 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 104: fload_2 + 105: ldc_w #938 // float 0.55f + 108: fmul + 109: fload_3 + 110: aload_0 + 111: invokevirtual #932 // Method net/minecraft/world/entity/player/Player.m_217043_:()Lnet/minecraft/util/RandomSource; + 114: invokeinterface #732, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F + 119: ldc_w #933 // float 0.1f + 122: fmul + 123: fadd + 124: invokevirtual #438 // Method net/minecraft/world/level/Level.m_6263_:(Lnet/minecraft/world/entity/player/Player;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V + 127: return + + private static boolean hasDualIceAxes(net.minecraft.world.entity.player.Player); + Code: + 0: aload_0 + 1: invokevirtual #912 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 4: invokestatic #943 // Method isIceAxe:(Lnet/minecraft/world/item/ItemStack;)Z + 7: ifeq 24 + 10: aload_0 + 11: invokevirtual #917 // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 14: invokestatic #943 // Method isIceAxe:(Lnet/minecraft/world/item/ItemStack;)Z + 17: ifeq 24 + 20: iconst_1 + 21: goto 25 + 24: iconst_0 + 25: ireturn + + private static boolean isIceAxe(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #277 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifne 27 + 7: aload_0 + 8: getstatic #948 // Field com/ogaba/sa_combat/registry/ModItems.ICE_AXE:Lnet/minecraftforge/registries/RegistryObject; + 11: invokevirtual #235 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 14: checkcast #950 // class net/minecraft/world/item/Item + 17: invokevirtual #954 // Method net/minecraft/world/item/ItemStack.m_150930_:(Lnet/minecraft/world/item/Item;)Z + 20: ifeq 27 + 23: iconst_1 + 24: goto 28 + 27: iconst_0 + 28: ireturn + + private static void damageIceAxe(net.minecraft.world.item.ItemStack, net.minecraft.world.entity.player.Player); + Code: + 0: aload_0 + 1: invokestatic #943 // Method isIceAxe:(Lnet/minecraft/world/item/ItemStack;)Z + 4: ifne 8 + 7: return + 8: aload_0 + 9: iconst_1 + 10: aload_1 + 11: invokedynamic #957, 0 // InvokeDynamic #9:accept:()Ljava/util/function/Consumer; + 16: invokevirtual #774 // Method net/minecraft/world/item/ItemStack.m_41622_:(ILnet/minecraft/world/entity/LivingEntity;Ljava/util/function/Consumer;)V + 19: return + + public static void onServerTick(net.minecraftforge.event.TickEvent$ServerTickEvent); + Code: + 0: aload_0 + 1: getfield #960 // Field net/minecraftforge/event/TickEvent$ServerTickEvent.phase:Lnet/minecraftforge/event/TickEvent$Phase; + 4: getstatic #800 // Field net/minecraftforge/event/TickEvent$Phase.END:Lnet/minecraftforge/event/TickEvent$Phase; + 7: if_acmpne 17 + 10: aload_0 + 11: invokevirtual #964 // Method net/minecraftforge/event/TickEvent$ServerTickEvent.getServer:()Lnet/minecraft/server/MinecraftServer; + 14: invokestatic #970 // Method com/ogaba/sa_combat/combat/weapon/ChainsawItem.tickActiveTreeFelling:(Lnet/minecraft/server/MinecraftServer;)V + 17: return + + public static void onPlayerLoggedIn(net.minecraftforge.event.entity.player.PlayerEvent$PlayerLoggedInEvent); + Code: + 0: aload_0 + 1: invokevirtual #976 // Method net/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedInEvent.getEntity:()Lnet/minecraft/world/entity/player/Player; + 4: astore_2 + 5: aload_2 + 6: instanceof #813 // class net/minecraft/server/level/ServerPlayer + 9: ifeq 22 + 12: aload_2 + 13: checkcast #813 // class net/minecraft/server/level/ServerPlayer + 16: astore_1 + 17: aload_1 + 18: iconst_1 + 19: invokestatic #979 // Method com/ogaba/sa_combat/combat/armor/BallisticProtection.syncHud:(Lnet/minecraft/server/level/ServerPlayer;Z)V + 22: return + + public static void onPlayerLoggedOut(net.minecraftforge.event.entity.player.PlayerEvent$PlayerLoggedOutEvent); + Code: + 0: aload_0 + 1: invokevirtual #983 // Method net/minecraftforge/event/entity/player/PlayerEvent$PlayerLoggedOutEvent.getEntity:()Lnet/minecraft/world/entity/player/Player; + 4: invokevirtual #987 // Method net/minecraft/world/entity/player/Player.m_20148_:()Ljava/util/UUID; + 7: invokestatic #991 // Method com/ogaba/sa_combat/combat/armor/BallisticProtection.clearHudCache:(Ljava/util/UUID;)V + 10: return + + public static void onPlayerClone(net.minecraftforge.event.entity.player.PlayerEvent$Clone); + Code: + 0: return + + private static boolean shouldBlockOffhandUse(net.minecraft.world.entity.player.Player, net.minecraft.world.InteractionHand); + Code: + 0: aload_0 + 1: ifnull 11 + 4: aload_1 + 5: getstatic #1003 // Field net/minecraft/world/InteractionHand.OFF_HAND:Lnet/minecraft/world/InteractionHand; + 8: if_acmpeq 13 + 11: iconst_0 + 12: ireturn + 13: aload_0 + 14: invokevirtual #912 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 17: invokevirtual #119 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 20: instanceof #1005 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 23: ifne 39 + 26: aload_0 + 27: invokevirtual #917 // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 30: invokevirtual #119 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 33: instanceof #1005 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 36: ifeq 43 + 39: iconst_1 + 40: goto 44 + 43: iconst_0 + 44: ireturn + + public static void onNailGunBlockOffhandItem(net.minecraftforge.event.entity.player.PlayerInteractEvent$RightClickItem); + Code: + 0: aload_0 + 1: invokevirtual #1009 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$RightClickItem.getEntity:()Lnet/minecraft/world/entity/player/Player; + 4: aload_0 + 5: invokevirtual #1013 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$RightClickItem.getHand:()Lnet/minecraft/world/InteractionHand; + 8: invokestatic #1015 // Method shouldBlockOffhandUse:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;)Z + 11: ifeq 19 + 14: aload_0 + 15: iconst_1 + 16: invokevirtual #1016 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$RightClickItem.setCanceled:(Z)V + 19: return + + public static void onNailGunBlockOffhandBlock(net.minecraftforge.event.entity.player.PlayerInteractEvent$RightClickBlock); + Code: + 0: aload_0 + 1: invokevirtual #1020 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$RightClickBlock.getEntity:()Lnet/minecraft/world/entity/player/Player; + 4: aload_0 + 5: invokevirtual #1021 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$RightClickBlock.getHand:()Lnet/minecraft/world/InteractionHand; + 8: invokestatic #1015 // Method shouldBlockOffhandUse:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;)Z + 11: ifeq 26 + 14: aload_0 + 15: iconst_1 + 16: invokevirtual #1022 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$RightClickBlock.setCanceled:(Z)V + 19: aload_0 + 20: getstatic #1028 // Field net/minecraft/world/InteractionResult.FAIL:Lnet/minecraft/world/InteractionResult; + 23: invokevirtual #1032 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$RightClickBlock.setCancellationResult:(Lnet/minecraft/world/InteractionResult;)V + 26: return + + public static void onNailGunBlockOffhandEntity(net.minecraftforge.event.entity.player.PlayerInteractEvent$EntityInteract); + Code: + 0: aload_0 + 1: invokevirtual #1036 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$EntityInteract.getEntity:()Lnet/minecraft/world/entity/player/Player; + 4: aload_0 + 5: invokevirtual #1037 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$EntityInteract.getHand:()Lnet/minecraft/world/InteractionHand; + 8: invokestatic #1015 // Method shouldBlockOffhandUse:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;)Z + 11: ifeq 26 + 14: aload_0 + 15: iconst_1 + 16: invokevirtual #1038 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$EntityInteract.setCanceled:(Z)V + 19: aload_0 + 20: getstatic #1028 // Field net/minecraft/world/InteractionResult.FAIL:Lnet/minecraft/world/InteractionResult; + 23: invokevirtual #1039 // Method net/minecraftforge/event/entity/player/PlayerInteractEvent$EntityInteract.setCancellationResult:(Lnet/minecraft/world/InteractionResult;)V + 26: return + + private static void lambda$consumeBallisticProtectionOnDamage$5(net.minecraftforge.event.entity.living.LivingHurtEvent, net.minecraft.server.level.ServerPlayer, net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #407 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getAmount:()F + 4: fstore_3 + 5: aload_0 + 6: aload_2 + 7: fload_3 + 8: invokestatic #1044 // Method com/ogaba/sa_combat/combat/armor/BallisticProtection.reduceProjectileDamage:(Lnet/minecraft/world/item/ItemStack;F)F + 11: invokevirtual #411 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.setAmount:(F)V + 14: aload_2 + 15: fload_3 + 16: invokestatic #1048 // Method com/ogaba/sa_combat/combat/armor/BallisticProtection.consumeProtection:(Lnet/minecraft/world/item/ItemStack;F)I + 19: ifle 26 + 22: aload_1 + 23: invokestatic #817 // Method com/ogaba/sa_combat/combat/armor/BallisticProtection.syncHud:(Lnet/minecraft/server/level/ServerPlayer;)V + 26: return + + private static void lambda$procExternalWeaponAbilities$4(java.util.List, net.minecraftforge.event.entity.living.LivingHurtEvent, net.minecraft.world.entity.LivingEntity, com.ogaba.sa_combat.combat.modifier.WeaponModifier); + Code: + 0: aload_3 + 1: invokevirtual #1055 // Method com/ogaba/sa_combat/combat/modifier/WeaponModifier.createGrantedAbility:()Lcom/ogaba/sa_combat/combat/system/AbilityInstance; + 4: astore 4 + 6: aload 4 + 8: ifnull 20 + 11: aload_0 + 12: aload 4 + 14: invokeinterface #520, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 19: pop + 20: aload_3 + 21: aload_1 + 22: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 25: aload_2 + 26: invokevirtual #1059 // Method com/ogaba/sa_combat/combat/modifier/WeaponModifier.applyOnHitEffects:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)V + 29: return + + private static void lambda$procExternalWeaponAbilities$3(java.util.List, net.minecraftforge.event.entity.living.LivingHurtEvent, net.minecraft.world.entity.LivingEntity, com.ogaba.sa_combat.combat.attachment.WeaponAttachment); + Code: + 0: aload_3 + 1: invokevirtual #1066 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.createGrantedAbility:()Lcom/ogaba/sa_combat/combat/system/AbilityInstance; + 4: astore 4 + 6: aload 4 + 8: ifnull 20 + 11: aload_0 + 12: aload 4 + 14: invokeinterface #520, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 19: pop + 20: aload_3 + 21: aload_1 + 22: invokevirtual #348 // Method net/minecraftforge/event/entity/living/LivingHurtEvent.getEntity:()Lnet/minecraft/world/entity/LivingEntity; + 25: aload_2 + 26: invokevirtual #1067 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.applyOnHitEffects:(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)V + 29: return + + private static boolean lambda$procExternalWeaponAbilities$2(com.ogaba.sa_combat.combat.system.AbilityInstance); + Code: + 0: aload_0 + 1: ifnull 8 + 4: iconst_1 + 5: goto 9 + 8: iconst_0 + 9: ireturn + + private static com.ogaba.sa_combat.combat.system.AbilityInstance lambda$procExternalWeaponAbilities$1(com.ogaba.sa_combat.combat.upgrade.WeaponUpgradeData$Entry, com.ogaba.sa_combat.combat.upgrade.WeaponUpgrade); + Code: + 0: aload_1 + 1: aload_0 + 2: invokevirtual #1072 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData$Entry.level:()I + 5: invokevirtual #1078 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgrade.createAbility:(I)Lcom/ogaba/sa_combat/combat/system/AbilityInstance; + 8: areturn + + private static boolean lambda$procExternalWeaponAbilities$0(com.ogaba.sa_combat.combat.upgrade.WeaponUpgrade); + Code: + 0: aload_0 + 1: invokevirtual #1083 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgrade.category:()Lcom/ogaba/sa_combat/combat/upgrade/WeaponUpgradeCategory; + 4: getstatic #1089 // Field com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeCategory.ABILITY:Lcom/ogaba/sa_combat/combat/upgrade/WeaponUpgradeCategory; + 7: if_acmpne 14 + 10: iconst_1 + 11: goto 15 + 14: iconst_0 + 15: ireturn + + static {}; + Code: + 0: ldc_w #1092 // String 13a24b02-d971-4ee7-879c-1c7068a6bb71 + 3: invokestatic #1098 // Method java/util/UUID.fromString:(Ljava/lang/String;)Ljava/util/UUID; + 6: putstatic #296 // Field EXTERNAL_UPGRADE_DAMAGE_UUID:Ljava/util/UUID; + 9: ldc_w #1100 // String 457d3b0c-c7b7-43a4-8395-01f82ec1bdb2 + 12: invokestatic #1098 // Method java/util/UUID.fromString:(Ljava/lang/String;)Ljava/util/UUID; + 15: putstatic #307 // Field EXTERNAL_UPGRADE_SPEED_UUID:Ljava/util/UUID; + 18: ldc_w #1102 // String df109f67-5b6d-4de4-9a1b-c75443c0f1b2 + 21: invokestatic #1098 // Method java/util/UUID.fromString:(Ljava/lang/String;)Ljava/util/UUID; + 24: putstatic #318 // Field EXTERNAL_UPGRADE_KNOCKBACK_UUID:Ljava/util/UUID; + 27: ldc_w #1104 // String 9d46b9e9-46cb-4ab3-b2a0-c0e331cce312 + 30: invokestatic #1098 // Method java/util/UUID.fromString:(Ljava/lang/String;)Ljava/util/UUID; + 33: putstatic #331 // Field EXTERNAL_UPGRADE_REACH_UUID:Ljava/util/UUID; + 36: ldc_w #1106 // String 11d92754-4e96-4c9e-9b25-d8945bc43b24 + 39: invokestatic #1098 // Method java/util/UUID.fromString:(Ljava/lang/String;)Ljava/util/UUID; + 42: putstatic #143 // Field TACZ_VEST_BULLET_RESISTANCE_UUID:Ljava/util/UUID; + 45: new #1108 // class net/minecraft/resources/ResourceLocation + 48: dup + 49: ldc_w #1110 // String tacz + 52: ldc_w #1112 // String tacz.bullet_resistance + 55: invokespecial #1115 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 58: putstatic #129 // Field TACZ_BULLET_RESISTANCE_ID:Lnet/minecraft/resources/ResourceLocation; + 61: iconst_0 + 62: putstatic #446 // Field proccingExternalAbility:Z + 65: iconst_0 + 66: putstatic #645 // Field proccingShieldThorns:Z + 69: return +} diff --git a/_sa_hanhua_out/_tmp/javap_blueprint.txt b/_sa_hanhua_out/_tmp/javap_blueprint.txt new file mode 100644 index 0000000..0bc0b8f --- /dev/null +++ b/_sa_hanhua_out/_tmp/javap_blueprint.txt @@ -0,0 +1,1465 @@ +==================== com.ogaba.sa_combat.client.tooltip.BlueprintClientTooltipComponent ==================== +Compiled from "BlueprintClientTooltipComponent.java" +public class com.ogaba.sa_combat.client.tooltip.BlueprintClientTooltipComponent implements net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent { + private static final net.minecraft.resources.ResourceLocation BLUEPRINT_BG; + + private static final int WIDTH; + + private static final int HEIGHT; + + private static final int PADDING; + + private static final int BG_TEXTURE_W; + + private static final int BG_TEXTURE_H; + + private static final int BG_RENDER_W; + + private static final int BG_RENDER_H; + + private final com.ogaba.sa_combat.item.BlueprintTooltipComponent data; + + private net.minecraft.world.item.ItemStack cachedResult; + + private boolean resolved; + + public com.ogaba.sa_combat.client.tooltip.BlueprintClientTooltipComponent(com.ogaba.sa_combat.item.BlueprintTooltipComponent); + Code: + 0: aload_0 + 1: invokespecial #47 // Method java/lang/Object."":()V + 4: aload_0 + 5: getstatic #52 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 8: putfield #54 // Field cachedResult:Lnet/minecraft/world/item/ItemStack; + 11: aload_0 + 12: aload_1 + 13: putfield #56 // Field data:Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent; + 16: return + + public int m_142103_(); + Code: + 0: bipush 88 + 2: ireturn + + public int m_142069_(net.minecraft.client.gui.Font); + Code: + 0: sipush 250 + 3: ireturn + + public void m_183452_(net.minecraft.client.gui.Font, int, int, net.minecraft.client.gui.GuiGraphics); + Code: + 0: aload_0 + 1: invokevirtual #70 // Method resolveResultStack:()Lnet/minecraft/world/item/ItemStack; + 4: astore 5 + 6: iload_2 + 7: iconst_4 + 8: iadd + 9: istore 6 + 11: iload_3 + 12: bipush 8 + 14: iadd + 15: istore 7 + 17: aload_0 + 18: aload 4 + 20: iload 6 + 22: iload 7 + 24: invokevirtual #74 // Method renderBlueprintBackground:(Lnet/minecraft/client/gui/GuiGraphics;II)V + 27: aload_0 + 28: aload 4 + 30: aload 5 + 32: iload 6 + 34: iload 7 + 36: invokevirtual #78 // Method renderResultItem:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/item/ItemStack;II)V + 39: iload 6 + 41: bipush 82 + 43: iadd + 44: bipush 9 + 46: iadd + 47: istore 8 + 49: iload_3 + 50: bipush 10 + 52: iadd + 53: istore 9 + 55: sipush 250 + 58: iload 8 + 60: iload_2 + 61: isub + 62: isub + 63: iconst_4 + 64: isub + 65: iconst_2 + 66: isub + 67: istore 10 + 69: aload 5 + 71: invokevirtual #82 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 74: ifeq 125 + 77: aload 4 + 79: aload_1 + 80: aload_0 + 81: ldc #84 // String tooltip.sa_combat.blueprint.unknown + 83: ldc #86 // String Unknown Unlock + 85: invokevirtual #90 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component; + 88: iload 8 + 90: iload 9 + 92: ldc #91 // int 15724527 + 94: iconst_0 + 95: invokevirtual #97 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I + 98: pop + 99: aload 4 + 101: aload_1 + 102: aload_0 + 103: ldc #99 // String tooltip.sa_combat.blueprint.check_data + 105: ldc #101 // String Check blueprint data + 107: invokevirtual #90 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component; + 110: iload 8 + 112: iload 9 + 114: bipush 12 + 116: iadd + 117: ldc #102 // int 9211020 + 119: iconst_0 + 120: invokevirtual #97 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I + 123: pop + 124: return + 125: aload_0 + 126: getfield #56 // Field data:Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent; + 129: invokevirtual #110 // Method com/ogaba/sa_combat/item/BlueprintTooltipComponent.rarity:()Ljava/lang/String; + 132: invokestatic #114 // Method prettyRarity:(Ljava/lang/String;)Ljava/lang/String; + 135: astore 11 + 137: aload 11 + 139: invokevirtual #119 // Method java/lang/String.isBlank:()Z + 142: ifeq 149 + 145: iconst_0 + 146: goto 157 + 149: aload_1 + 150: aload 11 + 152: invokevirtual #123 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 155: iconst_4 + 156: iadd + 157: istore 12 + 159: aload_1 + 160: aload 5 + 162: invokevirtual #127 // Method net/minecraft/world/item/ItemStack.m_41786_:()Lnet/minecraft/network/chat/Component; + 165: invokeinterface #132, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 170: bipush 32 + 172: iload 10 + 174: iload 12 + 176: isub + 177: invokestatic #138 // Method java/lang/Math.max:(II)I + 180: invokestatic #142 // Method trimToWidth:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;I)Ljava/lang/String; + 183: astore 13 + 185: aload 4 + 187: aload_1 + 188: aload 13 + 190: iload 8 + 192: iload 9 + 194: ldc #143 // int 16777215 + 196: iconst_0 + 197: invokevirtual #147 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 200: pop + 201: aload 11 + 203: invokevirtual #119 // Method java/lang/String.isBlank:()Z + 206: ifne 243 + 209: aload 4 + 211: aload_1 + 212: aload 11 + 214: iload 8 + 216: iload 10 + 218: iadd + 219: aload_1 + 220: aload 11 + 222: invokevirtual #123 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 225: isub + 226: iload 9 + 228: aload_0 + 229: getfield #56 // Field data:Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent; + 232: invokevirtual #110 // Method com/ogaba/sa_combat/item/BlueprintTooltipComponent.rarity:()Ljava/lang/String; + 235: invokestatic #150 // Method rarityColor:(Ljava/lang/String;)I + 238: iconst_0 + 239: invokevirtual #147 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 242: pop + 243: iinc 9, 12 + 246: aload 4 + 248: aload_1 + 249: aload_0 + 250: ldc #152 // String tooltip.sa_combat.blueprint.unlock + 252: ldc #154 // String Unlock + 254: invokevirtual #90 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component; + 257: iload 8 + 259: iload 9 + 261: ldc #155 // int 7788287 + 263: iconst_0 + 264: invokevirtual #97 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I + 267: pop + 268: iinc 9, 12 + 271: aload 5 + 273: invokevirtual #159 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 276: instanceof #161 // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon + 279: ifeq 318 + 282: aload_0 + 283: aload_1 + 284: aload 4 + 286: aload 5 + 288: iload 8 + 290: iload 9 + 292: iload 10 + 294: invokevirtual #165 // Method drawCompactWeaponStats:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/item/ItemStack;III)V + 297: iinc 9, 13 + 300: aload_0 + 301: aload_1 + 302: aload 4 + 304: aload 5 + 306: iload 8 + 308: iload 9 + 310: iload 10 + 312: invokevirtual #168 // Method drawCompactAbilitySummary:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/item/ItemStack;III)V + 315: goto 340 + 318: aload 4 + 320: aload_1 + 321: aload_0 + 322: ldc #170 // String tooltip.sa_combat.blueprint.recipe_unlock + 324: ldc #172 // String Recipe Unlock + 326: invokevirtual #90 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component; + 329: iload 8 + 331: iload 9 + 333: ldc #173 // int 12115967 + 335: iconst_0 + 336: invokevirtual #97 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I + 339: pop + 340: return + + private net.minecraft.world.item.ItemStack resolveResultStack(); + Code: + 0: aload_0 + 1: getfield #188 // Field resolved:Z + 4: ifeq 12 + 7: aload_0 + 8: getfield #54 // Field cachedResult:Lnet/minecraft/world/item/ItemStack; + 11: areturn + 12: aload_0 + 13: iconst_1 + 14: putfield #188 // Field resolved:Z + 17: aload_0 + 18: aload_0 + 19: getfield #56 // Field data:Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent; + 22: invokestatic #194 // Method com/ogaba/sa_combat/client/tooltip/BlueprintPreviewResolverFromData.resolve:(Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;)Lnet/minecraft/world/item/ItemStack; + 25: putfield #54 // Field cachedResult:Lnet/minecraft/world/item/ItemStack; + 28: aload_0 + 29: getfield #54 // Field cachedResult:Lnet/minecraft/world/item/ItemStack; + 32: areturn + + private void renderBlueprintBackground(net.minecraft.client.gui.GuiGraphics, int, int); + Code: + 0: ldc #195 // float 1.28125f + 2: fstore 4 + 4: ldc #196 // float 1.2745098f + 6: fstore 5 + 8: aload_1 + 9: invokevirtual #200 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 12: invokevirtual #205 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 15: aload_1 + 16: invokevirtual #200 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 19: iload_2 + 20: i2f + 21: iload_3 + 22: i2f + 23: fconst_0 + 24: invokevirtual #209 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 27: aload_1 + 28: invokevirtual #200 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 31: fload 4 + 33: fload 5 + 35: fconst_1 + 36: invokevirtual #212 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 39: aload_1 + 40: getstatic #214 // Field BLUEPRINT_BG:Lnet/minecraft/resources/ResourceLocation; + 43: iconst_0 + 44: iconst_0 + 45: fconst_0 + 46: fconst_0 + 47: bipush 64 + 49: bipush 51 + 51: bipush 64 + 53: bipush 51 + 55: invokevirtual #218 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 58: aload_1 + 59: invokevirtual #200 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 62: invokevirtual #221 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 65: return + + private void renderResultItem(net.minecraft.client.gui.GuiGraphics, net.minecraft.world.item.ItemStack, int, int); + Code: + 0: aload_2 + 1: invokevirtual #82 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifeq 8 + 7: return + 8: ldc #225 // float 2.85f + 10: fstore 5 + 12: iload_3 + 13: i2f + 14: ldc #226 // float 41.0f + 16: fadd + 17: ldc #227 // float 22.8f + 19: fsub + 20: invokestatic #231 // Method java/lang/Math.round:(F)I + 23: iconst_2 + 24: iadd + 25: istore 6 + 27: iload 4 + 29: i2f + 30: ldc #232 // float 32.5f + 32: fadd + 33: ldc #227 // float 22.8f + 35: fsub + 36: invokestatic #231 // Method java/lang/Math.round:(F)I + 39: iconst_2 + 40: iadd + 41: istore 7 + 43: aload_1 + 44: invokevirtual #200 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 47: invokevirtual #205 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 50: aload_1 + 51: invokevirtual #200 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 54: iload 6 + 56: i2f + 57: iload 7 + 59: i2f + 60: ldc #233 // float 120.0f + 62: invokevirtual #209 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 65: aload_1 + 66: invokevirtual #200 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 69: ldc #225 // float 2.85f + 71: ldc #225 // float 2.85f + 73: fconst_1 + 74: invokevirtual #212 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 77: aload_1 + 78: aload_2 + 79: iconst_0 + 80: iconst_0 + 81: invokevirtual #237 // Method net/minecraft/client/gui/GuiGraphics.m_280480_:(Lnet/minecraft/world/item/ItemStack;II)V + 84: aload_1 + 85: invokevirtual #200 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 88: invokevirtual #221 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 91: return + + private void drawCompactWeaponStats(net.minecraft.client.gui.Font, net.minecraft.client.gui.GuiGraphics, net.minecraft.world.item.ItemStack, int, int, int); + Code: + 0: aload_0 + 1: aload_3 + 2: getstatic #246 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22281_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 5: invokevirtual #250 // Method sumAttribute:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/ai/attributes/Attribute;)D + 8: dstore 7 + 10: ldc2_w #251 // double 4.0d + 13: aload_0 + 14: aload_3 + 15: getstatic #255 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22283_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 18: invokevirtual #250 // Method sumAttribute:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/ai/attributes/Attribute;)D + 21: dadd + 22: dstore 9 + 24: ldc2_w #256 // double 2.5d + 27: aload_0 + 28: aload_3 + 29: invokevirtual #261 // Method sumCombatRangeAttribute:(Lnet/minecraft/world/item/ItemStack;)D + 32: dadd + 33: dstore 11 + 35: iload 4 + 37: istore 13 + 39: aload_0 + 40: aload_1 + 41: aload_2 + 42: ldc_w #263 // String �˺� + 45: dload 7 + 47: invokestatic #267 // Method formatNumber:(D)Ljava/lang/String; + 50: iload 13 + 52: iload 5 + 54: ldc_w #268 // int -2598310 + 57: invokevirtual #272 // Method drawCompactStat:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Ljava/lang/String;Ljava/lang/String;III)I + 60: istore 13 + 62: aload_0 + 63: aload_1 + 64: aload_2 + 65: ldc_w #274 // String ���� + 68: dload 9 + 70: invokestatic #267 // Method formatNumber:(D)Ljava/lang/String; + 73: iload 13 + 75: bipush 8 + 77: iadd + 78: iload 5 + 80: sipush -14249 + 83: invokevirtual #272 // Method drawCompactStat:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Ljava/lang/String;Ljava/lang/String;III)I + 86: istore 13 + 88: aload_0 + 89: aload_1 + 90: aload_2 + 91: ldc_w #276 // String ��� + 94: dload 11 + 96: invokestatic #267 // Method formatNumber:(D)Ljava/lang/String; + 99: iload 13 + 101: bipush 8 + 103: iadd + 104: iload 5 + 106: ldc_w #277 // int -10106881 + 109: invokevirtual #272 // Method drawCompactStat:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Ljava/lang/String;Ljava/lang/String;III)I + 112: pop + 113: return + + private int drawCompactStat(net.minecraft.client.gui.Font, net.minecraft.client.gui.GuiGraphics, java.lang.String, java.lang.String, int, int, int); + Code: + 0: aload_2 + 1: aload_1 + 2: aload_3 + 3: iload 5 + 5: iload 6 + 7: ldc_w #285 // int 11513775 + 10: iconst_0 + 11: invokevirtual #147 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 14: pop + 15: iload 5 + 17: aload_1 + 18: aload_3 + 19: invokevirtual #123 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 22: iadd + 23: iconst_3 + 24: iadd + 25: istore 8 + 27: aload_2 + 28: aload_1 + 29: aload 4 + 31: iload 8 + 33: iload 6 + 35: ldc #143 // int 16777215 + 37: iconst_0 + 38: invokevirtual #147 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 41: pop + 42: iload 8 + 44: aload_1 + 45: aload 4 + 47: invokevirtual #123 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 50: iadd + 51: istore 9 + 53: aload_2 + 54: iload 5 + 56: iload 6 + 58: bipush 9 + 60: iadd + 61: iload 9 + 63: iload 6 + 65: bipush 10 + 67: iadd + 68: iload 7 + 70: invokevirtual #289 // Method net/minecraft/client/gui/GuiGraphics.m_280509_:(IIIII)V + 73: iload 9 + 75: ireturn + + private void drawCompactAbilitySummary(net.minecraft.client.gui.Font, net.minecraft.client.gui.GuiGraphics, net.minecraft.world.item.ItemStack, int, int, int); + Code: + 0: aload_3 + 1: invokevirtual #159 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 4: astore 8 + 6: aload 8 + 8: instanceof #161 // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon + 11: ifeq 29 + 14: aload 8 + 16: checkcast #161 // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon + 19: astore 7 + 21: aload 7 + 23: invokevirtual #298 // Method com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon.getDefinition:()Lcom/ogaba/sa_combat/combat/weapon/WeaponDefinition; + 26: ifnonnull 30 + 29: return + 30: aload 7 + 32: invokevirtual #298 // Method com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon.getDefinition:()Lcom/ogaba/sa_combat/combat/weapon/WeaponDefinition; + 35: invokevirtual #304 // Method com/ogaba/sa_combat/combat/weapon/WeaponDefinition.abilities:()Ljava/util/List; + 38: astore 8 + 40: aload 8 + 42: invokeinterface #309, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 47: ifeq 75 + 50: aload_2 + 51: aload_1 + 52: aload_0 + 53: ldc_w #311 // String tooltip.sa_combat.blueprint.no_abilities + 56: ldc_w #313 // String No abilities + 59: invokevirtual #90 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component; + 62: iload 4 + 64: iload 5 + 66: ldc_w #314 // int 7303023 + 69: iconst_0 + 70: invokevirtual #97 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I + 73: pop + 74: return + 75: aload_2 + 76: aload_1 + 77: aload_0 + 78: ldc_w #316 // String tooltip.sa_combat.blueprint.on_hit + 81: ldc_w #318 // String On Hit + 84: invokevirtual #90 // Method tr:(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/network/chat/Component; + 87: iload 4 + 89: iload 5 + 91: ldc_w #319 // int 14271867 + 94: iconst_0 + 95: invokevirtual #97 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I + 98: pop + 99: iload 5 + 101: bipush 11 + 103: iadd + 104: istore 9 + 106: iconst_2 + 107: aload 8 + 109: invokeinterface #322, 1 // InterfaceMethod java/util/List.size:()I + 114: invokestatic #325 // Method java/lang/Math.min:(II)I + 117: istore 10 + 119: iconst_0 + 120: istore 11 + 122: iload 11 + 124: iload 10 + 126: if_icmpge 165 + 129: aload_0 + 130: aload_1 + 131: aload_2 + 132: aload 8 + 134: iload 11 + 136: invokeinterface #329, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 141: checkcast #331 // class com/ogaba/sa_combat/combat/system/AbilityInstance + 144: iload 4 + 146: iload 9 + 148: iload 11 + 150: bipush 10 + 152: imul + 153: iadd + 154: iload 6 + 156: invokevirtual #335 // Method drawAbilityLine:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/client/gui/GuiGraphics;Lcom/ogaba/sa_combat/combat/system/AbilityInstance;III)V + 159: iinc 11, 1 + 162: goto 122 + 165: aload 8 + 167: invokeinterface #322, 1 // InterfaceMethod java/util/List.size:()I + 172: iload 10 + 174: if_icmple 228 + 177: aload 8 + 179: invokeinterface #322, 1 // InterfaceMethod java/util/List.size:()I + 184: iload 10 + 186: isub + 187: invokedynamic #347, 0 // InvokeDynamic #0:makeConcatWithConstants:(I)Ljava/lang/String; + 192: astore 11 + 194: aload_2 + 195: aload_1 + 196: aload 11 + 198: iload 4 + 200: iload 6 + 202: iadd + 203: aload_1 + 204: aload 11 + 206: invokevirtual #123 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 209: isub + 210: iload 9 + 212: iload 10 + 214: iconst_1 + 215: isub + 216: bipush 10 + 218: imul + 219: iadd + 220: ldc_w #348 // int 7829367 + 223: iconst_0 + 224: invokevirtual #147 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 227: pop + 228: return + + private void drawAbilityLine(net.minecraft.client.gui.Font, net.minecraft.client.gui.GuiGraphics, com.ogaba.sa_combat.combat.system.AbilityInstance, int, int, int); + Code: + 0: aload_3 + 1: invokevirtual #359 // Method com/ogaba/sa_combat/combat/system/AbilityInstance.type:()Lcom/ogaba/sa_combat/combat/system/AbilityType; + 4: invokestatic #365 // Method com/ogaba/sa_combat/combat/system/SACombatTextIcons.abilityIcon:(Lcom/ogaba/sa_combat/combat/system/AbilityType;)Lnet/minecraft/network/chat/MutableComponent; + 7: astore 7 + 9: aload_0 + 10: aload_3 + 11: invokevirtual #369 // Method abilityDisplayName:(Lcom/ogaba/sa_combat/combat/system/AbilityInstance;)Ljava/lang/String; + 14: aload_3 + 15: invokevirtual #372 // Method com/ogaba/sa_combat/combat/system/AbilityInstance.tier:()I + 18: invokestatic #377 // Method com/ogaba/sa_combat/util/TextFormatUtil.tierRoman:(I)Ljava/lang/String; + 21: invokedynamic #382, 0 // InvokeDynamic #1:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 26: astore 8 + 28: aload_1 + 29: aload 8 + 31: bipush 20 + 33: iload 6 + 35: bipush 14 + 37: isub + 38: invokestatic #138 // Method java/lang/Math.max:(II)I + 41: invokestatic #142 // Method trimToWidth:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;I)Ljava/lang/String; + 44: astore 9 + 46: aload_2 + 47: aload_1 + 48: aload 7 + 50: iload 4 + 52: iload 5 + 54: iconst_m1 + 55: iconst_0 + 56: invokevirtual #97 // Method net/minecraft/client/gui/GuiGraphics.m_280614_:(Lnet/minecraft/client/gui/Font;Lnet/minecraft/network/chat/Component;IIIZ)I + 59: pop + 60: aload_2 + 61: aload_1 + 62: aload 9 + 64: iload 4 + 66: bipush 13 + 68: iadd + 69: iload 5 + 71: aload_0 + 72: aload_3 + 73: invokevirtual #386 // Method abilityColor:(Lcom/ogaba/sa_combat/combat/system/AbilityInstance;)I + 76: iconst_0 + 77: invokevirtual #147 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 80: pop + 81: return + + private net.minecraft.network.chat.Component tr(java.lang.String, java.lang.String); + Code: + 0: aload_1 + 1: invokestatic #396 // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 4: astore_3 + 5: aload_3 + 6: invokeinterface #132, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 11: aload_1 + 12: invokevirtual #400 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 15: ifeq 25 + 18: aload_2 + 19: invokestatic #403 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 22: goto 26 + 25: aload_3 + 26: areturn + + private java.lang.String abilityDisplayName(com.ogaba.sa_combat.combat.system.AbilityInstance); + Code: + 0: getstatic #410 // Field com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent$1.$SwitchMap$com$ogaba$sa_combat$combat$system$AbilityType:[I + 3: aload_1 + 4: invokevirtual #359 // Method com/ogaba/sa_combat/combat/system/AbilityInstance.type:()Lcom/ogaba/sa_combat/combat/system/AbilityType; + 7: invokevirtual #415 // Method com/ogaba/sa_combat/combat/system/AbilityType.ordinal:()I + 10: iaload + 11: tableswitch { // 1 to 4 + + 1: 48 + + 2: 54 + + 3: 60 + + 4: 66 + default: 40 + } + 40: new #417 // class java/lang/IncompatibleClassChangeError + 43: dup + 44: invokespecial #418 // Method java/lang/IncompatibleClassChangeError."":()V + 47: athrow + 48: ldc_w #420 // String ��Ѫ + 51: goto 69 + 54: ldc_w #422 // String ��� + 57: goto 69 + 60: ldc_w #424 // String ��� + 63: goto 69 + 66: ldc_w #426 // String ���� + 69: areturn + + private int abilityColor(com.ogaba.sa_combat.combat.system.AbilityInstance); + Code: + 0: getstatic #410 // Field com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent$1.$SwitchMap$com$ogaba$sa_combat$combat$system$AbilityType:[I + 3: aload_1 + 4: invokevirtual #359 // Method com/ogaba/sa_combat/combat/system/AbilityInstance.type:()Lcom/ogaba/sa_combat/combat/system/AbilityType; + 7: invokevirtual #415 // Method com/ogaba/sa_combat/combat/system/AbilityType.ordinal:()I + 10: iaload + 11: tableswitch { // 1 to 4 + + 1: 48 + + 2: 54 + + 3: 60 + + 4: 66 + default: 40 + } + 40: new #417 // class java/lang/IncompatibleClassChangeError + 43: dup + 44: invokespecial #418 // Method java/lang/IncompatibleClassChangeError."":()V + 47: athrow + 48: ldc_w #428 // int -42406 + 51: goto 69 + 54: ldc_w #429 // int -11147009 + 57: goto 69 + 60: sipush -10934 + 63: goto 69 + 66: ldc_w #430 // int -5011201 + 69: ireturn + + private double sumCombatRangeAttribute(net.minecraft.world.item.ItemStack); + Code: + 0: getstatic #436 // Field net/minecraftforge/registries/ForgeRegistries.ATTRIBUTES:Lnet/minecraftforge/registries/IForgeRegistry; + 3: new #438 // class net/minecraft/resources/ResourceLocation + 6: dup + 7: ldc_w #440 // String bettercombat + 10: ldc_w #442 // String attack_range + 13: invokespecial #445 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 16: invokeinterface #451, 2 // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getValue:(Lnet/minecraft/resources/ResourceLocation;)Ljava/lang/Object; + 21: checkcast #453 // class net/minecraft/world/entity/ai/attributes/Attribute + 24: astore_2 + 25: aload_2 + 26: ifnull 36 + 29: aload_0 + 30: aload_1 + 31: aload_2 + 32: invokevirtual #250 // Method sumAttribute:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/ai/attributes/Attribute;)D + 35: dreturn + 36: aload_0 + 37: aload_1 + 38: getstatic #459 // Field net/minecraftforge/common/ForgeMod.ENTITY_REACH:Lnet/minecraftforge/registries/RegistryObject; + 41: invokevirtual #464 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 44: checkcast #453 // class net/minecraft/world/entity/ai/attributes/Attribute + 47: invokevirtual #250 // Method sumAttribute:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/ai/attributes/Attribute;)D + 50: dreturn + + private double sumAttribute(net.minecraft.world.item.ItemStack, net.minecraft.world.entity.ai.attributes.Attribute); + Code: + 0: aload_1 + 1: getstatic #471 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 4: invokevirtual #475 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 7: aload_2 + 8: invokeinterface #480, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 13: invokeinterface #486, 1 // InterfaceMethod java/util/Collection.stream:()Ljava/util/stream/Stream; + 18: invokedynamic #504, 0 // InvokeDynamic #2:test:()Ljava/util/function/Predicate; + 23: invokeinterface #510, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 28: invokedynamic #523, 0 // InvokeDynamic #3:applyAsDouble:()Ljava/util/function/ToDoubleFunction; + 33: invokeinterface #527, 2 // InterfaceMethod java/util/stream/Stream.mapToDouble:(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/DoubleStream; + 38: invokeinterface #532, 1 // InterfaceMethod java/util/stream/DoubleStream.sum:()D + 43: dreturn + + private static java.lang.String prettyRarity(java.lang.String); + Code: + 0: aload_0 + 1: ifnull 11 + 4: aload_0 + 5: invokevirtual #119 // Method java/lang/String.isBlank:()Z + 8: ifeq 15 + 11: ldc_w #535 // String + 14: areturn + 15: aload_0 + 16: bipush 95 + 18: bipush 32 + 20: invokevirtual #539 // Method java/lang/String.replace:(CC)Ljava/lang/String; + 23: invokevirtual #542 // Method java/lang/String.trim:()Ljava/lang/String; + 26: getstatic #548 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 29: invokevirtual #552 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 32: astore_1 + 33: new #554 // class java/lang/StringBuilder + 36: dup + 37: invokespecial #555 // Method java/lang/StringBuilder."":()V + 40: astore_2 + 41: aload_1 + 42: ldc_w #557 // String + 45: invokevirtual #561 // Method java/lang/String.split:(Ljava/lang/String;)[Ljava/lang/String; + 48: astore_3 + 49: aload_3 + 50: arraylength + 51: istore 4 + 53: iconst_0 + 54: istore 5 + 56: iload 5 + 58: iload 4 + 60: if_icmpge 123 + 63: aload_3 + 64: iload 5 + 66: aaload + 67: astore 6 + 69: aload 6 + 71: invokevirtual #119 // Method java/lang/String.isBlank:()Z + 74: ifeq 80 + 77: goto 117 + 80: aload_2 + 81: invokevirtual #566 // Method java/lang/StringBuilder.length:()I + 84: ifle 94 + 87: aload_2 + 88: bipush 32 + 90: invokevirtual #570 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder; + 93: pop + 94: aload_2 + 95: aload 6 + 97: iconst_0 + 98: invokevirtual #574 // Method java/lang/String.charAt:(I)C + 101: invokestatic #580 // Method java/lang/Character.toUpperCase:(C)C + 104: invokevirtual #570 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder; + 107: aload 6 + 109: iconst_1 + 110: invokevirtual #583 // Method java/lang/String.substring:(I)Ljava/lang/String; + 113: invokevirtual #586 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 116: pop + 117: iinc 5, 1 + 120: goto 56 + 123: aload_2 + 124: invokevirtual #589 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; + 127: areturn + + private static int rarityColor(java.lang.String); + Code: + 0: aload_0 + 1: ifnonnull 8 + 4: ldc_w #594 // int 12434877 + 7: ireturn + 8: aload_0 + 9: getstatic #548 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 12: invokevirtual #552 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 15: astore_1 + 16: iconst_m1 + 17: istore_2 + 18: aload_1 + 19: invokevirtual #597 // Method java/lang/String.hashCode:()I + 22: lookupswitch { // 6 + + -2081562821: 140 + + -1354814997: 80 + + -840528943: 155 + + -468311612: 95 + + 3119877: 125 + + 3493026: 110 + default: 167 + } + 80: aload_1 + 81: ldc_w #599 // String ��ͨ + 84: invokevirtual #400 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 87: ifeq 167 + 90: iconst_0 + 91: istore_2 + 92: goto 167 + 95: aload_1 + 96: ldc_w #601 // String ���� + 99: invokevirtual #400 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 102: ifeq 167 + 105: iconst_1 + 106: istore_2 + 107: goto 167 + 110: aload_1 + 111: ldc_w #603 // String ϡ�� + 114: invokevirtual #400 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 117: ifeq 167 + 120: iconst_2 + 121: istore_2 + 122: goto 167 + 125: aload_1 + 126: ldc_w #605 // String ʷʫ + 129: invokevirtual #400 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 132: ifeq 167 + 135: iconst_3 + 136: istore_2 + 137: goto 167 + 140: aload_1 + 141: ldc_w #607 // String ��˵ + 144: invokevirtual #400 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 147: ifeq 167 + 150: iconst_4 + 151: istore_2 + 152: goto 167 + 155: aload_1 + 156: ldc_w #609 // String ���� + 159: invokevirtual #400 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 162: ifeq 167 + 165: iconst_5 + 166: istore_2 + 167: iload_2 + 168: tableswitch { // 0 to 5 + + 0: 208 + + 1: 214 + + 2: 220 + + 3: 226 + + 4: 232 + + 5: 238 + default: 244 + } + 208: ldc_w #594 // int 12434877 + 211: goto 247 + 214: ldc_w #610 // int 7591543 + 217: goto 247 + 220: ldc_w #611 // int 5941247 + 223: goto 247 + 226: ldc_w #612 // int 11766015 + 229: goto 247 + 232: ldc_w #613 // int 16757051 + 235: goto 247 + 238: ldc_w #614 // int 16734962 + 241: goto 247 + 244: ldc_w #594 // int 12434877 + 247: ireturn + + private static java.lang.String formatNumber(double); + Code: + 0: dload_0 + 1: dload_0 + 2: invokestatic #618 // Method java/lang/Math.rint:(D)D + 5: dsub + 6: invokestatic #621 // Method java/lang/Math.abs:(D)D + 9: ldc2_w #622 // double 0.001d + 12: dcmpg + 13: ifge 25 + 16: dload_0 + 17: invokestatic #618 // Method java/lang/Math.rint:(D)D + 20: d2i + 21: invokestatic #626 // Method java/lang/String.valueOf:(I)Ljava/lang/String; + 24: areturn + 25: getstatic #548 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 28: ldc_w #628 // String %.1f + 31: iconst_1 + 32: anewarray #4 // class java/lang/Object + 35: dup + 36: iconst_0 + 37: dload_0 + 38: invokestatic #633 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double; + 41: aastore + 42: invokestatic #637 // Method java/lang/String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; + 45: areturn + + private static java.lang.String trimToWidth(net.minecraft.client.gui.Font, java.lang.String, int); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #123 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 5: iload_2 + 6: if_icmpgt 11 + 9: aload_1 + 10: areturn + 11: ldc_w #639 // String ... + 14: astore_3 + 15: aload_1 + 16: invokevirtual #640 // Method java/lang/String.length:()I + 19: istore 4 + 21: iload 4 + 23: ifle 53 + 26: aload_0 + 27: aload_1 + 28: iconst_0 + 29: iload 4 + 31: invokevirtual #643 // Method java/lang/String.substring:(II)Ljava/lang/String; + 34: aload_3 + 35: invokedynamic #646, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 40: invokevirtual #123 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 43: iload_2 + 44: if_icmple 53 + 47: iinc 4, -1 + 50: goto 21 + 53: aload_1 + 54: iconst_0 + 55: iconst_0 + 56: iload 4 + 58: invokestatic #138 // Method java/lang/Math.max:(II)I + 61: invokevirtual #643 // Method java/lang/String.substring:(II)Ljava/lang/String; + 64: aload_3 + 65: invokedynamic #646, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 70: areturn + + private static boolean lambda$sumAttribute$0(net.minecraft.world.entity.ai.attributes.AttributeModifier); + Code: + 0: aload_0 + 1: invokevirtual #653 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22217_:()Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation; + 4: getstatic #657 // Field net/minecraft/world/entity/ai/attributes/AttributeModifier$Operation.ADDITION:Lnet/minecraft/world/entity/ai/attributes/AttributeModifier$Operation; + 7: if_acmpne 14 + 10: iconst_1 + 11: goto 15 + 14: iconst_0 + 15: ireturn + + static {}; + Code: + 0: new #438 // class net/minecraft/resources/ResourceLocation + 3: dup + 4: ldc_w #662 // String sa_combat + 7: ldc_w #664 // String textures/gui/arsenal_table/blueprint_bg.png + 10: invokespecial #445 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 13: putstatic #214 // Field BLUEPRINT_BG:Lnet/minecraft/resources/ResourceLocation; + 16: return +} + + +==================== com.ogaba.sa_combat.item.BlueprintTooltipComponent ==================== +Compiled from "BlueprintTooltipComponent.java" +public final class com.ogaba.sa_combat.item.BlueprintTooltipComponent extends java.lang.Record implements net.minecraft.world.inventory.tooltip.TooltipComponent { + private final net.minecraft.resources.ResourceLocation blueprintId; + + private final net.minecraft.resources.ResourceLocation unlocks; + + private final java.lang.String rarity; + + public com.ogaba.sa_combat.item.BlueprintTooltipComponent(net.minecraft.resources.ResourceLocation, net.minecraft.resources.ResourceLocation, java.lang.String); + Code: + 0: aload_0 + 1: invokespecial #23 // Method java/lang/Record."":()V + 4: aload_0 + 5: aload_1 + 6: putfield #25 // Field blueprintId:Lnet/minecraft/resources/ResourceLocation; + 9: aload_0 + 10: aload_2 + 11: putfield #27 // Field unlocks:Lnet/minecraft/resources/ResourceLocation; + 14: aload_0 + 15: aload_3 + 16: putfield #29 // Field rarity:Ljava/lang/String; + 19: return + + public final java.lang.String toString(); + Code: + 0: aload_0 + 1: invokedynamic #48, 0 // InvokeDynamic #0:toString:(Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;)Ljava/lang/String; + 6: areturn + + public final int hashCode(); + Code: + 0: aload_0 + 1: invokedynamic #53, 0 // InvokeDynamic #0:hashCode:(Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;)I + 6: ireturn + + public final boolean equals(java.lang.Object); + Code: + 0: aload_0 + 1: aload_1 + 2: invokedynamic #58, 0 // InvokeDynamic #0:equals:(Lcom/ogaba/sa_combat/item/BlueprintTooltipComponent;Ljava/lang/Object;)Z + 7: ireturn + + public net.minecraft.resources.ResourceLocation blueprintId(); + Code: + 0: aload_0 + 1: getfield #25 // Field blueprintId:Lnet/minecraft/resources/ResourceLocation; + 4: areturn + + public net.minecraft.resources.ResourceLocation unlocks(); + Code: + 0: aload_0 + 1: getfield #27 // Field unlocks:Lnet/minecraft/resources/ResourceLocation; + 4: areturn + + public java.lang.String rarity(); + Code: + 0: aload_0 + 1: getfield #29 // Field rarity:Ljava/lang/String; + 4: areturn +} + + +==================== com.ogaba.sa_combat.item.BlueprintItem ==================== +Compiled from "BlueprintItem.java" +public class com.ogaba.sa_combat.item.BlueprintItem extends net.minecraft.world.item.Item { + public static final java.lang.String ROOT; + + public static final java.lang.String ID; + + public static final java.lang.String NAME; + + public static final java.lang.String UNLOCKS; + + public static final java.lang.String RARITY; + + private final net.minecraft.resources.ResourceLocation fixedId; + + private final net.minecraft.resources.ResourceLocation fixedUnlocks; + + private final java.lang.String fixedRarity; + + public com.ogaba.sa_combat.item.BlueprintItem(net.minecraft.world.item.Item$Properties); + Code: + 0: aload_0 + 1: aload_1 + 2: aconst_null + 3: aconst_null + 4: aconst_null + 5: invokespecial #44 // Method "":(Lnet/minecraft/world/item/Item$Properties;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Ljava/lang/String;)V + 8: return + + public com.ogaba.sa_combat.item.BlueprintItem(net.minecraft.world.item.Item$Properties, net.minecraft.resources.ResourceLocation, net.minecraft.resources.ResourceLocation, java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: invokespecial #50 // Method net/minecraft/world/item/Item."":(Lnet/minecraft/world/item/Item$Properties;)V + 5: aload_0 + 6: aload_2 + 7: putfield #52 // Field fixedId:Lnet/minecraft/resources/ResourceLocation; + 10: aload_0 + 11: aload_3 + 12: putfield #54 // Field fixedUnlocks:Lnet/minecraft/resources/ResourceLocation; + 15: aload_0 + 16: aload 4 + 18: putfield #56 // Field fixedRarity:Ljava/lang/String; + 21: return + + public net.minecraft.network.chat.Component m_7626_(net.minecraft.world.item.ItemStack); + Code: + 0: aload_1 + 1: invokestatic #62 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag; + 4: astore_2 + 5: aload_2 + 6: ifnull 28 + 9: aload_2 + 10: ldc #28 // String Name + 12: invokevirtual #68 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z + 15: ifeq 28 + 18: aload_2 + 19: ldc #28 // String Name + 21: invokevirtual #72 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String; + 24: invokestatic #78 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 27: areturn + 28: aload_1 + 29: invokestatic #82 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.byItem:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional; + 32: aconst_null + 33: invokevirtual #88 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object; + 36: checkcast #10 // class com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition + 39: astore_3 + 40: aload_3 + 41: ifnull 62 + 44: aload_3 + 45: invokevirtual #92 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition.name:()Ljava/lang/String; + 48: invokevirtual #98 // Method java/lang/String.isBlank:()Z + 51: ifne 62 + 54: aload_3 + 55: invokevirtual #92 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry$Definition.name:()Ljava/lang/String; + 58: invokestatic #78 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 61: areturn + 62: aload_1 + 63: invokestatic #102 // Method getBlueprintId:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation; + 66: astore 4 + 68: aload 4 + 70: ifnull 143 + 73: aload 4 + 75: invokevirtual #107 // Method net/minecraft/resources/ResourceLocation.m_135827_:()Ljava/lang/String; + 78: aload 4 + 80: invokevirtual #110 // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String; + 83: bipush 47 + 85: bipush 46 + 87: invokevirtual #114 // Method java/lang/String.replace:(CC)Ljava/lang/String; + 90: invokedynamic #126, 0 // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + 95: invokestatic #129 // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 98: astore 5 + 100: aload 5 + 102: invokeinterface #132, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 107: ldc #134 // String blueprint. + 109: invokevirtual #137 // Method java/lang/String.startsWith:(Ljava/lang/String;)Z + 112: ifeq 128 + 115: aload 4 + 117: invokevirtual #110 // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String; + 120: invokestatic #140 // Method prettyName:(Ljava/lang/String;)Ljava/lang/String; + 123: invokestatic #78 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 126: astore 5 + 128: ldc #142 // String item.sa_combat.blueprint.named + 130: iconst_1 + 131: anewarray #144 // class java/lang/Object + 134: dup + 135: iconst_0 + 136: aload 5 + 138: aastore + 139: invokestatic #148 // InterfaceMethod net/minecraft/network/chat/Component.m_237110_:(Ljava/lang/String;[Ljava/lang/Object;)Lnet/minecraft/network/chat/MutableComponent; + 142: areturn + 143: aload_0 + 144: aload_1 + 145: invokespecial #150 // Method net/minecraft/world/item/Item.m_7626_:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/network/chat/Component; + 148: areturn + + public java.util.Optional m_142422_(net.minecraft.world.item.ItemStack); + Code: + 0: aload_1 + 1: invokestatic #102 // Method getBlueprintId:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation; + 4: astore_2 + 5: aload_1 + 6: invokestatic #164 // Method getBlueprintUnlocks:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation; + 9: astore_3 + 10: aload_1 + 11: invokestatic #168 // Method getBlueprintRarity:(Lnet/minecraft/world/item/ItemStack;)Ljava/lang/String; + 14: astore 4 + 16: aload_2 + 17: ifnonnull 41 + 20: aload_3 + 21: ifnonnull 41 + 24: aload 4 + 26: ifnull 37 + 29: aload 4 + 31: invokevirtual #98 // Method java/lang/String.isBlank:()Z + 34: ifeq 41 + 37: invokestatic #172 // Method java/util/Optional.empty:()Ljava/util/Optional; + 40: areturn + 41: new #174 // class com/ogaba/sa_combat/item/BlueprintTooltipComponent + 44: dup + 45: aload_2 + 46: aload_3 + 47: aload 4 + 49: invokespecial #177 // Method com/ogaba/sa_combat/item/BlueprintTooltipComponent."":(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Ljava/lang/String;)V + 52: invokestatic #181 // Method java/util/Optional.of:(Ljava/lang/Object;)Ljava/util/Optional; + 55: areturn + + public void m_7373_(net.minecraft.world.item.ItemStack, net.minecraft.world.level.Level, java.util.List, net.minecraft.world.item.TooltipFlag); + Code: + 0: aload_1 + 1: invokestatic #62 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag; + 4: astore 5 + 6: aload_1 + 7: invokestatic #102 // Method getBlueprintId:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation; + 10: astore 6 + 12: aload_1 + 13: invokestatic #164 // Method getBlueprintUnlocks:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/resources/ResourceLocation; + 16: astore 7 + 18: aload_1 + 19: invokestatic #168 // Method getBlueprintRarity:(Lnet/minecraft/world/item/ItemStack;)Ljava/lang/String; + 22: astore 8 + 24: aload 5 + 26: ifnonnull 63 + 29: aload 6 + 31: ifnonnull 63 + 34: aload 7 + 36: ifnonnull 63 + 39: aload 8 + 41: ifnonnull 63 + 44: aload_3 + 45: ldc #188 // String tooltip.sa_combat.blueprint.empty + 47: invokestatic #129 // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 50: getstatic #194 // Field net/minecraft/ChatFormatting.DARK_GRAY:Lnet/minecraft/ChatFormatting; + 53: invokevirtual #200 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 56: invokeinterface #206, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 61: pop + 62: return + 63: return + + public net.minecraft.resources.ResourceLocation getFixedId(); + Code: + 0: aload_0 + 1: getfield #52 // Field fixedId:Lnet/minecraft/resources/ResourceLocation; + 4: areturn + + public net.minecraft.resources.ResourceLocation getFixedUnlocks(); + Code: + 0: aload_0 + 1: getfield #54 // Field fixedUnlocks:Lnet/minecraft/resources/ResourceLocation; + 4: areturn + + public java.lang.String getFixedRarity(); + Code: + 0: aload_0 + 1: getfield #56 // Field fixedRarity:Ljava/lang/String; + 4: areturn + + private static java.lang.String prettyName(java.lang.String); + Code: + 0: aload_0 + 1: ifnonnull 9 + 4: ldc #225 // String Blueprint + 6: goto 27 + 9: aload_0 + 10: bipush 47 + 12: bipush 32 + 14: invokevirtual #114 // Method java/lang/String.replace:(CC)Ljava/lang/String; + 17: bipush 95 + 19: bipush 32 + 21: invokevirtual #114 // Method java/lang/String.replace:(CC)Ljava/lang/String; + 24: invokevirtual #228 // Method java/lang/String.trim:()Ljava/lang/String; + 27: astore_1 + 28: aload_1 + 29: invokevirtual #231 // Method java/lang/String.isEmpty:()Z + 32: ifeq 38 + 35: ldc #225 // String Blueprint + 37: areturn + 38: new #233 // class java/lang/StringBuilder + 41: dup + 42: invokespecial #236 // Method java/lang/StringBuilder."":()V + 45: astore_2 + 46: aload_1 + 47: ldc #238 // String + 49: invokevirtual #242 // Method java/lang/String.split:(Ljava/lang/String;)[Ljava/lang/String; + 52: astore_3 + 53: aload_3 + 54: arraylength + 55: istore 4 + 57: iconst_0 + 58: istore 5 + 60: iload 5 + 62: iload 4 + 64: if_icmpge 127 + 67: aload_3 + 68: iload 5 + 70: aaload + 71: astore 6 + 73: aload 6 + 75: invokevirtual #98 // Method java/lang/String.isBlank:()Z + 78: ifeq 84 + 81: goto 121 + 84: aload_2 + 85: invokevirtual #248 // Method java/lang/StringBuilder.length:()I + 88: ifle 98 + 91: aload_2 + 92: bipush 32 + 94: invokevirtual #252 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder; + 97: pop + 98: aload_2 + 99: aload 6 + 101: iconst_0 + 102: invokevirtual #256 // Method java/lang/String.charAt:(I)C + 105: invokestatic #262 // Method java/lang/Character.toUpperCase:(C)C + 108: invokevirtual #252 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder; + 111: aload 6 + 113: iconst_1 + 114: invokevirtual #266 // Method java/lang/String.substring:(I)Ljava/lang/String; + 117: invokevirtual #269 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; + 120: pop + 121: iinc 5, 1 + 124: goto 60 + 127: aload_2 + 128: invokevirtual #272 // Method java/lang/StringBuilder.toString:()Ljava/lang/String; + 131: areturn + + public static net.minecraft.resources.ResourceLocation getBlueprintId(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokestatic #62 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag; + 4: astore_1 + 5: aload_1 + 6: ifnull 34 + 9: aload_1 + 10: ldc #25 // String Id + 12: invokevirtual #68 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z + 15: ifeq 34 + 18: aload_1 + 19: ldc #25 // String Id + 21: invokevirtual #72 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String; + 24: invokestatic #281 // Method net/minecraft/resources/ResourceLocation.m_135820_:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 27: astore_2 + 28: aload_2 + 29: ifnull 34 + 32: aload_2 + 33: areturn + 34: aload_0 + 35: invokestatic #82 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.byItem:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional; + 38: invokedynamic #299, 0 // InvokeDynamic #1:apply:()Ljava/util/function/Function; + 43: invokevirtual #303 // Method java/util/Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional; + 46: aconst_null + 47: invokevirtual #88 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object; + 50: checkcast #104 // class net/minecraft/resources/ResourceLocation + 53: astore_2 + 54: aload_2 + 55: ifnull 60 + 58: aload_2 + 59: areturn + 60: aload_0 + 61: invokevirtual #307 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 64: astore 4 + 66: aload 4 + 68: instanceof #2 // class com/ogaba/sa_combat/item/BlueprintItem + 71: ifeq 85 + 74: aload 4 + 76: checkcast #2 // class com/ogaba/sa_combat/item/BlueprintItem + 79: astore_3 + 80: aload_3 + 81: invokevirtual #309 // Method getFixedId:()Lnet/minecraft/resources/ResourceLocation; + 84: areturn + 85: aconst_null + 86: areturn + + public static net.minecraft.resources.ResourceLocation getBlueprintUnlocks(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokestatic #62 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag; + 4: astore_1 + 5: aload_1 + 6: ifnull 34 + 9: aload_1 + 10: ldc #31 // String Unlocks + 12: invokevirtual #68 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z + 15: ifeq 34 + 18: aload_1 + 19: ldc #31 // String Unlocks + 21: invokevirtual #72 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String; + 24: invokestatic #281 // Method net/minecraft/resources/ResourceLocation.m_135820_:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 27: astore_2 + 28: aload_2 + 29: ifnull 34 + 32: aload_2 + 33: areturn + 34: aload_0 + 35: invokestatic #82 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.byItem:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional; + 38: invokedynamic #315, 0 // InvokeDynamic #2:apply:()Ljava/util/function/Function; + 43: invokevirtual #303 // Method java/util/Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional; + 46: aconst_null + 47: invokevirtual #88 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object; + 50: checkcast #104 // class net/minecraft/resources/ResourceLocation + 53: astore_2 + 54: aload_2 + 55: ifnull 60 + 58: aload_2 + 59: areturn + 60: aload_0 + 61: invokevirtual #307 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 64: astore 4 + 66: aload 4 + 68: instanceof #2 // class com/ogaba/sa_combat/item/BlueprintItem + 71: ifeq 85 + 74: aload 4 + 76: checkcast #2 // class com/ogaba/sa_combat/item/BlueprintItem + 79: astore_3 + 80: aload_3 + 81: invokevirtual #317 // Method getFixedUnlocks:()Lnet/minecraft/resources/ResourceLocation; + 84: areturn + 85: aconst_null + 86: areturn + + public static java.lang.String getBlueprintRarity(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokestatic #62 // Method getBlueprintData:(Lnet/minecraft/world/item/ItemStack;)Lnet/minecraft/nbt/CompoundTag; + 4: astore_1 + 5: aload_1 + 6: ifnull 25 + 9: aload_1 + 10: ldc #34 // String Rarity + 12: invokevirtual #68 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z + 15: ifeq 25 + 18: aload_1 + 19: ldc #34 // String Rarity + 21: invokevirtual #72 // Method net/minecraft/nbt/CompoundTag.m_128461_:(Ljava/lang/String;)Ljava/lang/String; + 24: areturn + 25: aload_0 + 26: invokestatic #82 // Method com/ogaba/sa_combat/blueprint/BlueprintDefinitionRegistry.byItem:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/Optional; + 29: invokedynamic #323, 0 // InvokeDynamic #3:apply:()Ljava/util/function/Function; + 34: invokevirtual #303 // Method java/util/Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional; + 37: ldc_w #325 // String + 40: invokevirtual #88 // Method java/util/Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object; + 43: checkcast #94 // class java/lang/String + 46: astore_2 + 47: aload_2 + 48: invokevirtual #98 // Method java/lang/String.isBlank:()Z + 51: ifne 56 + 54: aload_2 + 55: areturn + 56: aload_0 + 57: invokevirtual #307 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 60: astore 4 + 62: aload 4 + 64: instanceof #2 // class com/ogaba/sa_combat/item/BlueprintItem + 67: ifeq 81 + 70: aload 4 + 72: checkcast #2 // class com/ogaba/sa_combat/item/BlueprintItem + 75: astore_3 + 76: aload_3 + 77: invokevirtual #327 // Method getFixedRarity:()Ljava/lang/String; + 80: areturn + 81: aconst_null + 82: areturn + + public static net.minecraft.nbt.CompoundTag getBlueprintData(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #331 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 4: astore_1 + 5: aload_1 + 6: ifnull 18 + 9: aload_1 + 10: ldc #22 // String SACombatBlueprint + 12: invokevirtual #68 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z + 15: ifne 20 + 18: aconst_null + 19: areturn + 20: aload_1 + 21: ldc #22 // String SACombatBlueprint + 23: invokevirtual #335 // Method net/minecraft/nbt/CompoundTag.m_128469_:(Ljava/lang/String;)Lnet/minecraft/nbt/CompoundTag; + 26: areturn +} diff --git a/_sa_hanhua_out/_tmp/javap_events.txt b/_sa_hanhua_out/_tmp/javap_events.txt new file mode 100644 index 0000000..759839e --- /dev/null +++ b/_sa_hanhua_out/_tmp/javap_events.txt @@ -0,0 +1,2454 @@ +Compiled from "SACombatClientForgeEvents.java" +public final class com.ogaba.sa_combat.client.event.SACombatClientForgeEvents { + private static final net.minecraft.resources.ResourceLocation BALLISTIC_VEST_BG; + + private static final net.minecraft.resources.ResourceLocation BALLISTIC_VEST_FILL; + + private static final net.minecraft.resources.ResourceLocation GRENADE_FUSE_FRAME; + + private static final net.minecraft.resources.ResourceLocation GRENADE_FUSE_FILL; + + private static final int GRENADE_FUSE_FRAME_WIDTH; + + private static final int GRENADE_FUSE_FRAME_HEIGHT; + + private static final int GRENADE_FUSE_FILL_OFFSET_X; + + private static final int GRENADE_FUSE_FILL_OFFSET_Y; + + private static final int GRENADE_FUSE_FILL_WIDTH; + + private static final int GRENADE_FUSE_FILL_HEIGHT; + + private static final int GRENADE_FUSE_CROSSHAIR_OFFSET_Y; + + private static final net.minecraft.resources.ResourceLocation VANILLA_SPYGLASS_SCOPE; + + private static float tacticalScopeProgress; + + private static java.lang.reflect.Method renderSpyglassOverlayMethod; + + private static final float SCOPE_OPEN_SMOOTH; + + private static final float SCOPE_CLOSE_SMOOTH; + + private static final int BALLISTIC_ICON_W; + + private static final int BALLISTIC_ICON_H; + + private static final int BALLISTIC_RENDER_W; + + private static final int BALLISTIC_RENDER_H; + + private static final int BALLISTIC_MARGIN_LEFT; + + private static final int BALLISTIC_MARGIN_BOTTOM; + + private static final net.minecraft.resources.ResourceLocation NAIL_ITEM_ID; + + private static final int AMMO_ICON_SIZE; + + private static final int AMMO_MARGIN_RIGHT; + + private static final int AMMO_MARGIN_BOTTOM; + + private static final int AMMO_ICON_GAP; + + private static boolean nailGunTriggerWasDown; + + private static float nailGunAutoFireAccumulator; + + private static long thirdPersonNailGunStackId; + + private static boolean thirdPersonNailGunReloadWasActive; + + private static int cachedInventoryPlayerId; + + private static int cachedInventoryTick; + + private static int cachedNailReserve; + + private static int cachedTacticalBoltReserve; + + private static int cachedImprovisedBoltReserve; + + private static boolean nailIconResolved; + + private static net.minecraft.world.item.ItemStack cachedNailIcon; + + private static net.minecraft.world.item.ItemStack cachedTacticalBoltIcon; + + private static net.minecraft.world.item.ItemStack cachedImprovisedBoltIcon; + + private static boolean crossbowCycleWasDown; + + private com.ogaba.sa_combat.client.event.SACombatClientForgeEvents(); + Code: + 0: aload_0 + 1: invokespecial #133 // Method java/lang/Object."":()V + 4: return + + public static void onRenderHand(net.minecraftforge.client.event.RenderHandEvent); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_1 + 4: aload_1 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_2 + 9: aload_2 + 10: ifnonnull 14 + 13: return + 14: aload_2 + 15: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 18: astore_3 + 19: aload_2 + 20: invokevirtual #157 // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 23: astore 4 + 25: aload_3 + 26: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 29: instanceof #165 // class com/ogaba/sa_combat/item/SpecialGrenadeItem + 32: istore 5 + 34: aload 4 + 36: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 39: instanceof #165 // class com/ogaba/sa_combat/item/SpecialGrenadeItem + 42: istore 6 + 44: aload_3 + 45: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 48: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 51: istore 7 + 53: aload 4 + 55: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 58: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 61: istore 8 + 63: iload 5 + 65: ifne 84 + 68: iload 6 + 70: ifne 84 + 73: iload 7 + 75: ifne 84 + 78: iload 8 + 80: ifne 84 + 83: return + 84: aload_0 + 85: invokevirtual #173 // Method net/minecraftforge/client/event/RenderHandEvent.getHand:()Lnet/minecraft/world/InteractionHand; + 88: getstatic #179 // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand; + 91: if_acmpne 128 + 94: iload 5 + 96: ifeq 109 + 99: aload_0 + 100: aload_2 + 101: ldc #180 // float 0.35f + 103: invokestatic #184 // Method applyRetainedVanillaViewBob:(Lnet/minecraftforge/client/event/RenderHandEvent;Lnet/minecraft/world/entity/player/Player;F)V + 106: goto 128 + 109: iload 7 + 111: ifeq 128 + 114: fconst_1 + 115: invokestatic #190 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F + 118: fsub + 119: fstore 9 + 121: aload_0 + 122: aload_2 + 123: fload 9 + 125: invokestatic #184 // Method applyRetainedVanillaViewBob:(Lnet/minecraftforge/client/event/RenderHandEvent;Lnet/minecraft/world/entity/player/Player;F)V + 128: aload_0 + 129: invokevirtual #173 // Method net/minecraftforge/client/event/RenderHandEvent.getHand:()Lnet/minecraft/world/InteractionHand; + 132: getstatic #193 // Field net/minecraft/world/InteractionHand.OFF_HAND:Lnet/minecraft/world/InteractionHand; + 135: if_acmpne 143 + 138: aload_0 + 139: iconst_1 + 140: invokevirtual #197 // Method net/minecraftforge/client/event/RenderHandEvent.setCanceled:(Z)V + 143: return + + private static void applyRetainedVanillaViewBob(net.minecraftforge.client.event.RenderHandEvent, net.minecraft.world.entity.player.Player, float); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_3 + 4: aload_3 + 5: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 8: invokevirtual #220 // Method net/minecraft/client/Options.m_231830_:()Lnet/minecraft/client/OptionInstance; + 11: invokevirtual #226 // Method net/minecraft/client/OptionInstance.m_231551_:()Ljava/lang/Object; + 14: checkcast #228 // class java/lang/Boolean + 17: invokevirtual #232 // Method java/lang/Boolean.booleanValue:()Z + 20: ifne 24 + 23: return + 24: fload_2 + 25: fconst_0 + 26: fconst_1 + 27: invokestatic #238 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 30: fstore_2 + 31: aload_0 + 32: invokevirtual #241 // Method net/minecraftforge/client/event/RenderHandEvent.getPartialTick:()F + 35: fstore 4 + 37: aload_1 + 38: getfield #244 // Field net/minecraft/world/entity/player/Player.f_19787_:F + 41: aload_1 + 42: getfield #247 // Field net/minecraft/world/entity/player/Player.f_19867_:F + 45: fsub + 46: fstore 5 + 48: aload_1 + 49: getfield #244 // Field net/minecraft/world/entity/player/Player.f_19787_:F + 52: fload 5 + 54: fload 4 + 56: fmul + 57: fadd + 58: fneg + 59: fstore 6 + 61: fload 4 + 63: aload_1 + 64: getfield #250 // Field net/minecraft/world/entity/player/Player.f_36099_:F + 67: aload_1 + 68: getfield #253 // Field net/minecraft/world/entity/player/Player.f_36100_:F + 71: invokestatic #256 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 74: fstore 7 + 76: fload 6 + 78: ldc_w #257 // float 3.1415927f + 81: fmul + 82: invokestatic #261 // Method net/minecraft/util/Mth.m_14031_:(F)F + 85: fload 7 + 87: fmul + 88: ldc_w #262 // float 0.5f + 91: fmul + 92: fstore 8 + 94: fload 6 + 96: ldc_w #257 // float 3.1415927f + 99: fmul + 100: invokestatic #265 // Method net/minecraft/util/Mth.m_14089_:(F)F + 103: fload 7 + 105: fmul + 106: invokestatic #270 // Method java/lang/Math.abs:(F)F + 109: fneg + 110: fstore 9 + 112: fload 6 + 114: ldc_w #257 // float 3.1415927f + 117: fmul + 118: invokestatic #261 // Method net/minecraft/util/Mth.m_14031_:(F)F + 121: fload 7 + 123: fmul + 124: ldc_w #271 // float 3.0f + 127: fmul + 128: fstore 10 + 130: fload 6 + 132: ldc_w #257 // float 3.1415927f + 135: fmul + 136: ldc_w #272 // float 0.2f + 139: fsub + 140: invokestatic #265 // Method net/minecraft/util/Mth.m_14089_:(F)F + 143: fload 7 + 145: fmul + 146: invokestatic #270 // Method java/lang/Math.abs:(F)F + 149: ldc_w #273 // float 5.0f + 152: fmul + 153: fstore 11 + 155: aload_0 + 156: invokevirtual #277 // Method net/minecraftforge/client/event/RenderHandEvent.getPoseStack:()Lcom/mojang/blaze3d/vertex/PoseStack; + 159: astore 12 + 161: aload 12 + 163: getstatic #283 // Field com/mojang/math/Axis.f_252529_:Lcom/mojang/math/Axis; + 166: fload 11 + 168: fneg + 169: invokeinterface #287, 2 // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf; + 174: invokevirtual #293 // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V + 177: aload 12 + 179: getstatic #296 // Field com/mojang/math/Axis.f_252403_:Lcom/mojang/math/Axis; + 182: fload 10 + 184: fneg + 185: invokeinterface #287, 2 // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf; + 190: invokevirtual #293 // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V + 193: aload 12 + 195: fload 8 + 197: fneg + 198: f2d + 199: fload 9 + 201: fneg + 202: f2d + 203: dconst_0 + 204: invokevirtual #300 // Method com/mojang/blaze3d/vertex/PoseStack.m_85837_:(DDD)V + 207: aload 12 + 209: fload 8 + 211: fload_2 + 212: fmul + 213: f2d + 214: fload 9 + 216: fload_2 + 217: fmul + 218: f2d + 219: dconst_0 + 220: invokevirtual #300 // Method com/mojang/blaze3d/vertex/PoseStack.m_85837_:(DDD)V + 223: aload 12 + 225: getstatic #296 // Field com/mojang/math/Axis.f_252403_:Lcom/mojang/math/Axis; + 228: fload 10 + 230: fload_2 + 231: fmul + 232: invokeinterface #287, 2 // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf; + 237: invokevirtual #293 // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V + 240: aload 12 + 242: getstatic #283 // Field com/mojang/math/Axis.f_252529_:Lcom/mojang/math/Axis; + 245: fload 11 + 247: fload_2 + 248: fmul + 249: invokeinterface #287, 2 // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf; + 254: invokevirtual #293 // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V + 257: return + + public static void onClientTick(net.minecraftforge.event.TickEvent$ClientTickEvent); + Code: + 0: aload_0 + 1: getfield #317 // Field net/minecraftforge/event/TickEvent$ClientTickEvent.phase:Lnet/minecraftforge/event/TickEvent$Phase; + 4: getstatic #320 // Field net/minecraftforge/event/TickEvent$Phase.END:Lnet/minecraftforge/event/TickEvent$Phase; + 7: if_acmpne 28 + 10: invokestatic #325 // Method com/ogaba/sa_combat/client/sound/ChainsawSoundManager.tick:()V + 13: invokestatic #326 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.tick:()V + 16: invokestatic #329 // Method tickNailGunThirdPersonSounds:()V + 19: invokestatic #332 // Method tickNailGunTrigger:()V + 22: invokestatic #335 // Method tickNailGunReloadKey:()V + 25: invokestatic #338 // Method tickCrossbowAmmoCycle:()V + 28: return + + public static void onRenderPlayerPre(net.minecraftforge.client.event.RenderPlayerEvent$Pre); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 6: astore_1 + 7: aload_1 + 8: ifnull 19 + 11: aload_0 + 12: invokevirtual #345 // Method net/minecraftforge/client/event/RenderPlayerEvent$Pre.getEntity:()Lnet/minecraft/world/entity/player/Player; + 15: aload_1 + 16: if_acmpeq 20 + 19: return + 20: aload_1 + 21: invokevirtual #348 // Method net/minecraft/client/player/AbstractClientPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 24: astore_2 + 25: aload_2 + 26: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 29: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 32: ifne 36 + 35: return + 36: invokestatic #190 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F + 39: ldc_w #349 // float 0.01f + 42: fcmpl + 43: ifgt 53 + 46: aload_1 + 47: invokevirtual #352 // Method net/minecraft/client/player/AbstractClientPlayer.m_6117_:()Z + 50: ifeq 57 + 53: iconst_1 + 54: goto 58 + 57: iconst_0 + 58: istore_3 + 59: iload_3 + 60: ifne 64 + 63: return + 64: aload_0 + 65: invokevirtual #356 // Method net/minecraftforge/client/event/RenderPlayerEvent$Pre.getRenderer:()Lnet/minecraft/client/renderer/entity/player/PlayerRenderer; + 68: invokevirtual #362 // Method net/minecraft/client/renderer/entity/player/PlayerRenderer.m_7200_:()Lnet/minecraft/client/model/EntityModel; + 71: checkcast #364 // class net/minecraft/client/model/PlayerModel + 74: astore 4 + 76: aload_1 + 77: invokevirtual #368 // Method net/minecraft/client/player/AbstractClientPlayer.m_5737_:()Lnet/minecraft/world/entity/HumanoidArm; + 80: astore 5 + 82: aload 5 + 84: getstatic #374 // Field net/minecraft/world/entity/HumanoidArm.RIGHT:Lnet/minecraft/world/entity/HumanoidArm; + 87: if_acmpne 109 + 90: aload 4 + 92: getstatic #380 // Field com/ogaba/sa_combat/client/SACombatArmPoses.NAIL_GUN_AIM:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 95: putfield #383 // Field net/minecraft/client/model/PlayerModel.f_102816_:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 98: aload 4 + 100: getstatic #386 // Field net/minecraft/client/model/HumanoidModel$ArmPose.ITEM:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 103: putfield #389 // Field net/minecraft/client/model/PlayerModel.f_102815_:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 106: goto 125 + 109: aload 4 + 111: getstatic #380 // Field com/ogaba/sa_combat/client/SACombatArmPoses.NAIL_GUN_AIM:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 114: putfield #389 // Field net/minecraft/client/model/PlayerModel.f_102815_:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 117: aload 4 + 119: getstatic #386 // Field net/minecraft/client/model/HumanoidModel$ArmPose.ITEM:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 122: putfield #383 // Field net/minecraft/client/model/PlayerModel.f_102816_:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 125: return + + public static void onNailGunAimMovement(net.minecraftforge.client.event.MovementInputUpdateEvent); + Code: + 0: aload_0 + 1: invokevirtual #403 // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getEntity:()Lnet/minecraft/world/entity/player/Player; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 9: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 12: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 15: ifne 19 + 18: return + 19: invokestatic #190 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F + 22: fstore_2 + 23: fload_2 + 24: ldc_w #349 // float 0.01f + 27: fcmpg + 28: ifgt 32 + 31: return + 32: invokestatic #406 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getMovementMultiplier:()F + 35: fstore_3 + 36: aload_0 + 37: invokevirtual #410 // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getInput:()Lnet/minecraft/client/player/Input; + 40: dup + 41: getfield #415 // Field net/minecraft/client/player/Input.f_108566_:F + 44: fload_3 + 45: fmul + 46: putfield #415 // Field net/minecraft/client/player/Input.f_108566_:F + 49: aload_0 + 50: invokevirtual #410 // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getInput:()Lnet/minecraft/client/player/Input; + 53: dup + 54: getfield #418 // Field net/minecraft/client/player/Input.f_108567_:F + 57: fload_3 + 58: fmul + 59: putfield #418 // Field net/minecraft/client/player/Input.f_108567_:F + 62: fload_2 + 63: ldc_w #419 // float 0.05f + 66: fcmpl + 67: ifle 82 + 70: aload_1 + 71: invokevirtual #422 // Method net/minecraft/world/entity/player/Player.m_20142_:()Z + 74: ifeq 82 + 77: aload_1 + 78: iconst_0 + 79: invokevirtual #425 // Method net/minecraft/world/entity/player/Player.m_6858_:(Z)V + 82: return + + private static void tickCrossbowAmmoCycle(); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: aload_0 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_1 + 9: aload_1 + 10: ifnull 20 + 13: aload_0 + 14: getfield #432 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 17: ifnull 25 + 20: iconst_0 + 21: putstatic #434 // Field crossbowCycleWasDown:Z + 24: return + 25: aload_1 + 26: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 29: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 32: instanceof #46 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 35: ifne 51 + 38: aload_1 + 39: invokevirtual #157 // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 42: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 45: instanceof #46 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 48: ifeq 55 + 51: iconst_1 + 52: goto 56 + 55: iconst_0 + 56: istore_2 + 57: iload_2 + 58: ifne 66 + 61: iconst_0 + 62: putstatic #434 // Field crossbowCycleWasDown:Z + 65: return + 66: aload_0 + 67: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 70: getfield #438 // Field net/minecraft/client/Options.f_92096_:Lnet/minecraft/client/KeyMapping; + 73: invokevirtual #443 // Method net/minecraft/client/KeyMapping.m_90857_:()Z + 76: ifeq 90 + 79: aload_1 + 80: invokevirtual #446 // Method net/minecraft/world/entity/player/Player.m_6144_:()Z + 83: ifeq 90 + 86: iconst_1 + 87: goto 91 + 90: iconst_0 + 91: istore_3 + 92: getstatic #434 // Field crossbowCycleWasDown:Z + 95: istore 4 + 97: iload_3 + 98: putstatic #434 // Field crossbowCycleWasDown:Z + 101: iload_3 + 102: ifeq 123 + 105: iload 4 + 107: ifne 123 + 110: getstatic #452 // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel; + 113: new #454 // class com/ogaba/sa_combat/network/packet/CycleBoltTypeC2SPacket + 116: dup + 117: invokespecial #455 // Method com/ogaba/sa_combat/network/packet/CycleBoltTypeC2SPacket."":()V + 120: invokevirtual #461 // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V + 123: return + + public static void onNailGunInteractionKey(net.minecraftforge.client.event.InputEvent$InteractionKeyMappingTriggered); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_1 + 4: aload_1 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_2 + 9: aload_2 + 10: ifnull 33 + 13: aload_1 + 14: getfield #432 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 17: ifnonnull 33 + 20: aload_2 + 21: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 24: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 27: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 30: ifne 34 + 33: return + 34: aload_0 + 35: invokevirtual #472 // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.isAttack:()Z + 38: ifne 48 + 41: aload_0 + 42: invokevirtual #475 // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.isUseItem:()Z + 45: ifeq 58 + 48: aload_0 + 49: iconst_0 + 50: invokevirtual #478 // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.setSwingHand:(Z)V + 53: aload_0 + 54: iconst_1 + 55: invokevirtual #479 // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.setCanceled:(Z)V + 58: return + + private static void tickNailGunThirdPersonSounds(); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: aload_0 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_1 + 9: aload_1 + 10: ifnull 33 + 13: aload_0 + 14: getfield #432 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 17: ifnonnull 33 + 20: aload_0 + 21: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 24: invokevirtual #484 // Method net/minecraft/client/Options.m_92176_:()Lnet/minecraft/client/CameraType; + 27: invokevirtual #489 // Method net/minecraft/client/CameraType.m_90612_:()Z + 30: ifeq 44 + 33: ldc2_w #490 // long -9223372036854775808l + 36: putstatic #493 // Field thirdPersonNailGunStackId:J + 39: iconst_0 + 40: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 43: return + 44: aload_1 + 45: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 48: astore_2 + 49: aload_2 + 50: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 53: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 56: ifne 70 + 59: ldc2_w #490 // long -9223372036854775808l + 62: putstatic #493 // Field thirdPersonNailGunStackId:J + 65: iconst_0 + 66: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 69: return + 70: aload_2 + 71: invokestatic #501 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 74: lstore_3 + 75: getstatic #493 // Field thirdPersonNailGunStackId:J + 78: lload_3 + 79: lcmp + 80: ifeq 125 + 83: lload_3 + 84: putstatic #493 // Field thirdPersonNailGunStackId:J + 87: iconst_0 + 88: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 91: aload_1 + 92: invokevirtual #505 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 95: aload_1 + 96: invokevirtual #509 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 99: aload_1 + 100: invokevirtual #512 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 103: aload_1 + 104: invokevirtual #515 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 107: getstatic #521 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_DRAW:Lnet/minecraftforge/registries/RegistryObject; + 110: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 113: checkcast #528 // class net/minecraft/sounds/SoundEvent + 116: getstatic #534 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 119: fconst_1 + 120: fconst_1 + 121: iconst_0 + 122: invokevirtual #540 // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V + 125: aload_2 + 126: invokestatic #544 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 129: ifne 139 + 132: aload_2 + 133: invokestatic #547 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 136: ifeq 143 + 139: iconst_1 + 140: goto 144 + 143: iconst_0 + 144: istore 5 + 146: iload 5 + 148: ifeq 191 + 151: getstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 154: ifne 191 + 157: aload_1 + 158: invokevirtual #505 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 161: aload_1 + 162: invokevirtual #509 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 165: aload_1 + 166: invokevirtual #512 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 169: aload_1 + 170: invokevirtual #515 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 173: getstatic #550 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD:Lnet/minecraftforge/registries/RegistryObject; + 176: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 179: checkcast #528 // class net/minecraft/sounds/SoundEvent + 182: getstatic #534 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 185: fconst_1 + 186: fconst_1 + 187: iconst_0 + 188: invokevirtual #540 // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V + 191: iload 5 + 193: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 196: return + + private static void tickNailGunTrigger(); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: aload_0 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_1 + 9: aload_1 + 10: ifnull 20 + 13: aload_0 + 14: getfield #432 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 17: ifnull 29 + 20: iconst_0 + 21: putstatic #555 // Field nailGunTriggerWasDown:Z + 24: fconst_0 + 25: putstatic #557 // Field nailGunAutoFireAccumulator:F + 28: return + 29: aload_1 + 30: invokestatic #561 // Method resolveNailGunHand:(Lnet/minecraft/world/entity/player/Player;)Lnet/minecraft/world/InteractionHand; + 33: astore_2 + 34: aload_2 + 35: ifnonnull 47 + 38: iconst_0 + 39: putstatic #555 // Field nailGunTriggerWasDown:Z + 42: fconst_0 + 43: putstatic #557 // Field nailGunAutoFireAccumulator:F + 46: return + 47: aload_1 + 48: aload_2 + 49: invokevirtual #565 // Method net/minecraft/world/entity/player/Player.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack; + 52: astore_3 + 53: aload_0 + 54: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 57: getfield #438 // Field net/minecraft/client/Options.f_92096_:Lnet/minecraft/client/KeyMapping; + 60: invokevirtual #443 // Method net/minecraft/client/KeyMapping.m_90857_:()Z + 63: istore 4 + 65: getstatic #555 // Field nailGunTriggerWasDown:Z + 68: istore 5 + 70: iload 4 + 72: putstatic #555 // Field nailGunTriggerWasDown:Z + 75: iload 4 + 77: ifeq 101 + 80: aload_3 + 81: invokestatic #544 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 84: ifne 101 + 87: aload_3 + 88: invokestatic #547 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 91: ifne 101 + 94: aload_1 + 95: invokevirtual #422 // Method net/minecraft/world/entity/player/Player.m_20142_:()Z + 98: ifeq 106 + 101: fconst_0 + 102: putstatic #557 // Field nailGunAutoFireAccumulator:F + 105: return + 106: iload 5 + 108: ifne 121 + 111: iconst_1 + 112: istore 6 + 114: fconst_0 + 115: putstatic #557 // Field nailGunAutoFireAccumulator:F + 118: goto 159 + 121: getstatic #557 // Field nailGunAutoFireAccumulator:F + 124: ldc_w #566 // float 0.6f + 127: fadd + 128: putstatic #557 // Field nailGunAutoFireAccumulator:F + 131: getstatic #557 // Field nailGunAutoFireAccumulator:F + 134: fconst_1 + 135: fcmpl + 136: iflt 143 + 139: iconst_1 + 140: goto 144 + 143: iconst_0 + 144: istore 6 + 146: iload 6 + 148: ifeq 159 + 151: getstatic #557 // Field nailGunAutoFireAccumulator:F + 154: fconst_1 + 155: fsub + 156: putstatic #557 // Field nailGunAutoFireAccumulator:F + 159: iload 6 + 161: ifeq 171 + 164: aload_3 + 165: invokestatic #570 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 168: ifgt 172 + 171: return + 172: aload_3 + 173: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 176: checkcast #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 179: aload_1 + 180: invokevirtual #505 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 183: aload_1 + 184: aload_3 + 185: aload_2 + 186: invokevirtual #574 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.fire:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/InteractionHand;)V + 189: aload_1 + 190: invokevirtual #505 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 193: aload_1 + 194: aload_3 + 195: invokestatic #578 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.playLocalShotSound:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;)V + 198: getstatic #452 // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel; + 201: new #580 // class com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket + 204: dup + 205: aload_2 + 206: invokestatic #190 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F + 209: invokespecial #583 // Method com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket."":(Lnet/minecraft/world/InteractionHand;F)V + 212: invokevirtual #461 // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V + 215: return + + private static void tickNailGunReloadKey(); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: getstatic #590 // Field com/ogaba/sa_combat/client/ModKeyBindings.RELOAD_NAIL_GUN:Lnet/minecraft/client/KeyMapping; + 7: invokevirtual #593 // Method net/minecraft/client/KeyMapping.m_90859_:()Z + 10: ifeq 150 + 13: aload_0 + 14: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 17: astore_1 + 18: aload_1 + 19: ifnonnull 26 + 22: aconst_null + 23: goto 30 + 26: aload_1 + 27: invokestatic #561 // Method resolveNailGunHand:(Lnet/minecraft/world/entity/player/Player;)Lnet/minecraft/world/InteractionHand; + 30: astore_2 + 31: aload_1 + 32: ifnull 4 + 35: aload_2 + 36: ifnonnull 42 + 39: goto 4 + 42: aload_1 + 43: aload_2 + 44: invokevirtual #565 // Method net/minecraft/world/entity/player/Player.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack; + 47: astore_3 + 48: aload_3 + 49: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 52: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 55: ifne 61 + 58: goto 4 + 61: aload_1 + 62: invokevirtual #597 // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities; + 65: getfield #602 // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z + 68: ifne 78 + 71: aload_1 + 72: invokestatic #606 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.countReserveAmmo:(Lnet/minecraft/world/entity/player/Player;)I + 75: ifle 82 + 78: iconst_1 + 79: goto 83 + 82: iconst_0 + 83: istore 4 + 85: aload_3 + 86: invokestatic #544 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 89: ifne 119 + 92: aload_3 + 93: invokestatic #547 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 96: ifne 119 + 99: aload_3 + 100: invokestatic #570 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 103: aload_3 + 104: invokestatic #609 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.magazineCapacity:(Lnet/minecraft/world/item/ItemStack;)I + 107: if_icmpge 119 + 110: iload 4 + 112: ifeq 119 + 115: iconst_1 + 116: goto 120 + 119: iconst_0 + 120: istore 5 + 122: iload 5 + 124: ifne 130 + 127: goto 4 + 130: aload_3 + 131: invokestatic #613 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.markClientReloadAnimation:(Lnet/minecraft/world/item/ItemStack;)V + 134: getstatic #452 // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel; + 137: new #615 // class com/ogaba/sa_combat/network/packet/ReloadNailGunC2SPacket + 140: dup + 141: invokespecial #616 // Method com/ogaba/sa_combat/network/packet/ReloadNailGunC2SPacket."":()V + 144: invokevirtual #461 // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V + 147: goto 4 + 150: return + + private static net.minecraft.world.InteractionHand resolveNailGunHand(net.minecraft.world.entity.player.Player); + Code: + 0: aload_0 + 1: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 4: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 7: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 10: ifeq 17 + 13: getstatic #179 // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand; + 16: areturn + 17: aconst_null + 18: areturn + + public static void onItemTooltip(net.minecraftforge.event.entity.player.ItemTooltipEvent); + Code: + 0: aload_0 + 1: invokevirtual #626 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getItemStack:()Lnet/minecraft/world/item/ItemStack; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 9: ifne 19 + 12: aload_1 + 13: invokestatic #634 // Method com/ogaba/sa_combat/combat/weapon/WeaponSlotProfile.isUpgradeableWeapon:(Lnet/minecraft/world/item/ItemStack;)Z + 16: ifne 20 + 19: return + 20: aload_1 + 21: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 24: instanceof #636 // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon + 27: istore_2 + 28: iload_2 + 29: ifne 70 + 32: aload_1 + 33: invokestatic #641 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAnyAttachment:(Lnet/minecraft/world/item/ItemStack;)Z + 36: ifne 70 + 39: aload_1 + 40: invokestatic #646 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.hasModifier:(Lnet/minecraft/world/item/ItemStack;)Z + 43: ifne 70 + 46: aload_1 + 47: invokestatic #650 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getAttributeUpgrades:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 50: invokeinterface #655, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 55: ifeq 70 + 58: aload_1 + 59: invokestatic #658 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getAbilityUpgrades:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 62: invokeinterface #655, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 67: ifne 74 + 70: iconst_1 + 71: goto 75 + 74: iconst_0 + 75: istore_3 + 76: iload_3 + 77: ifne 81 + 80: return + 81: aload_0 + 82: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 85: invokestatic #666 // Method removeAttributeLinesBeforeMainHandHeader:(Ljava/util/List;)V + 88: aload_0 + 89: aload_1 + 90: invokestatic #670 // Method replaceMainHandAttributeTooltip:(Lnet/minecraftforge/event/entity/player/ItemTooltipEvent;Lnet/minecraft/world/item/ItemStack;)V + 93: iload_2 + 94: ifne 132 + 97: aload_1 + 98: invokestatic #675 // Method com/ogaba/sa_combat/combat/weapon/WeaponTooltipHelper.buildExternalTooltip:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 101: astore 4 + 103: aload 4 + 105: invokeinterface #655, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 110: ifne 132 + 113: aload_0 + 114: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 117: aload_0 + 118: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 121: invokestatic #679 // Method findVanillaAttributeInsertIndex:(Ljava/util/List;)I + 124: aload 4 + 126: invokeinterface #683, 3 // InterfaceMethod java/util/List.addAll:(ILjava/util/Collection;)Z + 131: pop + 132: aload_0 + 133: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 136: invokestatic #666 // Method removeAttributeLinesBeforeMainHandHeader:(Ljava/util/List;)V + 139: return + + private static void removeAttributeLinesBeforeMainHandHeader(java.util.List); + Code: + 0: aload_0 + 1: invokestatic #693 // Method findMainHandHeaderIndex:(Ljava/util/List;)I + 4: istore_1 + 5: iload_1 + 6: ifge 10 + 9: return + 10: iload_1 + 11: iconst_1 + 12: isub + 13: istore_2 + 14: iload_2 + 15: iconst_1 + 16: if_icmplt 137 + 19: aload_0 + 20: iload_2 + 21: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 26: checkcast #698 // class net/minecraft/network/chat/Component + 29: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 34: astore_3 + 35: aload_3 + 36: invokestatic #706 // Method isMainHandAttributeLine:(Ljava/lang/String;)Z + 39: ifeq 131 + 42: aload_0 + 43: iload_2 + 44: invokeinterface #709, 2 // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object; + 49: pop + 50: iload_2 + 51: aload_0 + 52: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 57: if_icmpge 92 + 60: aload_0 + 61: iload_2 + 62: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 67: checkcast #698 // class net/minecraft/network/chat/Component + 70: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 75: invokevirtual #718 // Method java/lang/String.isBlank:()Z + 78: ifeq 92 + 81: aload_0 + 82: iload_2 + 83: invokeinterface #709, 2 // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object; + 88: pop + 89: goto 131 + 92: iload_2 + 93: iconst_1 + 94: isub + 95: ifle 131 + 98: aload_0 + 99: iload_2 + 100: iconst_1 + 101: isub + 102: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 107: checkcast #698 // class net/minecraft/network/chat/Component + 110: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 115: invokevirtual #718 // Method java/lang/String.isBlank:()Z + 118: ifeq 131 + 121: aload_0 + 122: iload_2 + 123: iconst_1 + 124: isub + 125: invokeinterface #709, 2 // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object; + 130: pop + 131: iinc 2, -1 + 134: goto 14 + 137: return + + private static void replaceMainHandAttributeTooltip(net.minecraftforge.event.entity.player.ItemTooltipEvent, net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 4: astore_2 + 5: aload_2 + 6: invokestatic #693 // Method findMainHandHeaderIndex:(Ljava/util/List;)I + 9: istore_3 + 10: iload_3 + 11: ifge 15 + 14: return + 15: iload_3 + 16: iconst_1 + 17: iadd + 18: istore 4 + 20: iload 4 + 22: aload_2 + 23: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 28: if_icmpge 55 + 31: aload_2 + 32: iload 4 + 34: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 39: checkcast #698 // class net/minecraft/network/chat/Component + 42: aload_1 + 43: invokestatic #727 // Method isTooltipTechnicalTail:(Lnet/minecraft/network/chat/Component;Lnet/minecraft/world/item/ItemStack;)Z + 46: ifne 55 + 49: iinc 4, 1 + 52: goto 20 + 55: aload_2 + 56: iload_3 + 57: iload 4 + 59: invokeinterface #731, 3 // InterfaceMethod java/util/List.subList:(II)Ljava/util/List; + 64: invokeinterface #734, 1 // InterfaceMethod java/util/List.clear:()V + 69: aload_2 + 70: iload_3 + 71: aload_1 + 72: invokestatic #737 // Method buildUnifiedMainHandAttributeTooltip:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 75: invokeinterface #683, 3 // InterfaceMethod java/util/List.addAll:(ILjava/util/Collection;)Z + 80: pop + 81: return + + private static boolean isTooltipTechnicalTail(net.minecraft.network.chat.Component, net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: ifnonnull 6 + 4: iconst_0 + 5: ireturn + 6: aload_0 + 7: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 12: invokevirtual #741 // Method java/lang/String.trim:()Ljava/lang/String; + 15: astore_2 + 16: aload_2 + 17: invokevirtual #742 // Method java/lang/String.isEmpty:()Z + 20: ifeq 25 + 23: iconst_0 + 24: ireturn + 25: aload_1 + 26: invokevirtual #745 // Method net/minecraft/world/item/ItemStack.m_41763_:()Z + 29: ifeq 93 + 32: aload_1 + 33: invokevirtual #748 // Method net/minecraft/world/item/ItemStack.m_41768_:()Z + 36: ifeq 93 + 39: ldc_w #750 // String item.durability + 42: iconst_2 + 43: anewarray #4 // class java/lang/Object + 46: dup + 47: iconst_0 + 48: aload_1 + 49: invokevirtual #753 // Method net/minecraft/world/item/ItemStack.m_41776_:()I + 52: aload_1 + 53: invokevirtual #756 // Method net/minecraft/world/item/ItemStack.m_41773_:()I + 56: isub + 57: invokestatic #762 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 60: aastore + 61: dup + 62: iconst_1 + 63: aload_1 + 64: invokevirtual #753 // Method net/minecraft/world/item/ItemStack.m_41776_:()I + 67: invokestatic #762 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 70: aastore + 71: invokestatic #766 // InterfaceMethod net/minecraft/network/chat/Component.m_237110_:(Ljava/lang/String;[Ljava/lang/Object;)Lnet/minecraft/network/chat/MutableComponent; + 74: astore_3 + 75: aload_2 + 76: aload_3 + 77: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 82: invokevirtual #741 // Method java/lang/String.trim:()Ljava/lang/String; + 85: invokevirtual #770 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 88: ifeq 93 + 91: iconst_1 + 92: ireturn + 93: aload_2 + 94: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 97: invokevirtual #780 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 100: astore_3 + 101: aload_3 + 102: ldc_w #782 // String nbt + 105: invokevirtual #785 // Method java/lang/String.startsWith:(Ljava/lang/String;)Z + 108: ifeq 113 + 111: iconst_1 + 112: ireturn + 113: aload_3 + 114: ldc_w #787 // String [a-z0-9_.-]+:[a-z0-9_./-]+ + 117: invokevirtual #790 // Method java/lang/String.matches:(Ljava/lang/String;)Z + 120: ireturn + + private static java.util.List buildUnifiedMainHandAttributeTooltip(net.minecraft.world.item.ItemStack); + Code: + 0: new #797 // class java/util/ArrayList + 3: dup + 4: invokespecial #798 // Method java/util/ArrayList."":()V + 7: astore_1 + 8: aload_1 + 9: ldc_w #800 // String item.modifiers.mainhand + 12: invokestatic #804 // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: getstatic #810 // Field net/minecraft/ChatFormatting.GRAY:Lnet/minecraft/ChatFormatting; + 18: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 21: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 26: pop + 27: aload_0 + 28: invokestatic #823 // Method totalAttackDamage:(Lnet/minecraft/world/item/ItemStack;)D + 31: dstore_2 + 32: dload_2 + 33: dconst_0 + 34: dcmpl + 35: ifle 63 + 38: aload_1 + 39: dload_2 + 40: invokestatic #827 // Method fmtAttribute:(D)Ljava/lang/String; + 43: invokedynamic #839, 0 // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 48: invokestatic #842 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 51: getstatic #845 // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting; + 54: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 57: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 62: pop + 63: aload_0 + 64: invokestatic #848 // Method totalAttackSpeed:(Lnet/minecraft/world/item/ItemStack;)D + 67: dstore 4 + 69: aload_1 + 70: dload 4 + 72: invokestatic #827 // Method fmtAttribute:(D)Ljava/lang/String; + 75: invokedynamic #851, 0 // InvokeDynamic #1:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 80: invokestatic #842 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 83: getstatic #845 // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting; + 86: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 89: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 94: pop + 95: aload_0 + 96: invokestatic #854 // Method totalAttackKnockback:(Lnet/minecraft/world/item/ItemStack;)D + 99: dstore 6 + 101: dload 6 + 103: invokestatic #857 // Method java/lang/Math.abs:(D)D + 106: ldc2_w #858 // double 0.001d + 109: dcmpl + 110: ifle 139 + 113: aload_1 + 114: dload 6 + 116: invokestatic #827 // Method fmtAttribute:(D)Ljava/lang/String; + 119: invokedynamic #862, 0 // InvokeDynamic #2:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 124: invokestatic #842 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 127: getstatic #845 // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting; + 130: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 133: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 138: pop + 139: aload_0 + 140: invokestatic #865 // Method totalAttackReach:(Lnet/minecraft/world/item/ItemStack;)D + 143: dstore 8 + 145: aload_1 + 146: dload 8 + 148: invokestatic #827 // Method fmtAttribute:(D)Ljava/lang/String; + 151: invokedynamic #868, 0 // InvokeDynamic #3:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 156: invokestatic #842 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 159: getstatic #845 // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting; + 162: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 165: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 170: pop + 171: aload_1 + 172: areturn + + private static boolean isMainHandAttributeLine(java.lang.String); + Code: + 0: aload_0 + 1: ifnull 11 + 4: aload_0 + 5: invokevirtual #718 // Method java/lang/String.isBlank:()Z + 8: ifeq 13 + 11: iconst_0 + 12: ireturn + 13: aload_0 + 14: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 17: invokevirtual #780 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 20: astore_1 + 21: aload_1 + 22: ldc_w #876 // String attack damage + 25: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 28: ifne 121 + 31: aload_1 + 32: ldc_w #882 // String attack speed + 35: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 38: ifne 121 + 41: aload_1 + 42: ldc_w #884 // String attack range + 45: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 48: ifne 121 + 51: aload_1 + 52: ldc_w #886 // String entity reach + 55: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 58: ifne 121 + 61: aload_1 + 62: ldc_w #888 // String attack knockback + 65: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 68: ifne 121 + 71: aload_1 + 72: ldc_w #890 // String dano de ataque + 75: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 78: ifne 121 + 81: aload_1 + 82: ldc_w #892 // String velocidade de ataque + 85: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 88: ifne 121 + 91: aload_1 + 92: ldc_w #894 // String alcance de ataque + 95: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 98: ifne 121 + 101: aload_1 + 102: ldc_w #896 // String repuls + 105: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 108: ifne 121 + 111: aload_1 + 112: ldc_w #897 // String knockback + 115: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 118: ifeq 125 + 121: iconst_1 + 122: goto 126 + 125: iconst_0 + 126: ireturn + + private static int findMainHandHeaderIndex(java.util.List); + Code: + 0: iconst_1 + 1: istore_1 + 2: iload_1 + 3: aload_0 + 4: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 9: if_icmpge 49 + 12: aload_0 + 13: iload_1 + 14: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 19: checkcast #698 // class net/minecraft/network/chat/Component + 22: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 27: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 30: invokevirtual #780 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 33: astore_2 + 34: aload_2 + 35: invokestatic #902 // Method isMainHandHeader:(Ljava/lang/String;)Z + 38: ifeq 43 + 41: iload_1 + 42: ireturn + 43: iinc 1, 1 + 46: goto 2 + 49: iconst_m1 + 50: ireturn + + private static boolean isMainHandHeader(java.lang.String); + Code: + 0: aload_0 + 1: ldc_w #904 // String when in main hand + 4: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 7: ifne 40 + 10: aload_0 + 11: ldc_w #906 // String main hand + 14: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 17: ifne 40 + 20: aload_0 + 21: ldc_w #908 // String m?o principal + 24: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 27: ifne 40 + 30: aload_0 + 31: ldc_w #910 // String mao principal + 34: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 37: ifeq 44 + 40: iconst_1 + 41: goto 45 + 44: iconst_0 + 45: ireturn + + private static double totalAttackDamage(net.minecraft.world.item.ItemStack); + Code: + 0: dconst_0 + 1: dstore_1 + 2: aload_0 + 3: getstatic #916 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 6: invokevirtual #920 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 9: getstatic #926 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22281_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 12: invokeinterface #931, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 17: invokeinterface #937, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 22: astore_3 + 23: aload_3 + 24: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 29: ifeq 54 + 32: aload_3 + 33: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 38: checkcast #947 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 41: astore 4 + 43: dload_1 + 44: aload 4 + 46: invokevirtual #950 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D + 49: dadd + 50: dstore_1 + 51: goto 23 + 54: dload_1 + 55: dconst_0 + 56: dcmpl + 57: ifle 66 + 60: dload_1 + 61: dconst_1 + 62: dadd + 63: goto 67 + 66: dconst_0 + 67: dreturn + + private static double totalAttackSpeed(net.minecraft.world.item.ItemStack); + Code: + 0: ldc2_w #954 // double 4.0d + 3: dstore_1 + 4: aload_0 + 5: getstatic #916 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 8: invokevirtual #920 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 11: getstatic #958 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22283_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 14: invokeinterface #931, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 19: invokeinterface #937, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 24: astore_3 + 25: aload_3 + 26: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 31: ifeq 56 + 34: aload_3 + 35: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 40: checkcast #947 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 43: astore 4 + 45: dload_1 + 46: aload 4 + 48: invokevirtual #950 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D + 51: dadd + 52: dstore_1 + 53: goto 25 + 56: dload_1 + 57: dreturn + + private static double totalAttackKnockback(net.minecraft.world.item.ItemStack); + Code: + 0: dconst_0 + 1: dstore_1 + 2: aload_0 + 3: getstatic #916 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 6: invokevirtual #920 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 9: getstatic #961 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22282_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 12: invokeinterface #931, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 17: invokeinterface #937, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 22: astore_3 + 23: aload_3 + 24: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 29: ifeq 54 + 32: aload_3 + 33: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 38: checkcast #947 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 41: astore 4 + 43: dload_1 + 44: aload 4 + 46: invokevirtual #950 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D + 49: dadd + 50: dstore_1 + 51: goto 23 + 54: dload_1 + 55: dreturn + + private static double totalAttackReach(net.minecraft.world.item.ItemStack); + Code: + 0: ldc2_w #962 // double 2.5d + 3: dstore_1 + 4: aload_0 + 5: getstatic #916 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 8: invokevirtual #920 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 11: getstatic #968 // Field net/minecraftforge/common/ForgeMod.ENTITY_REACH:Lnet/minecraftforge/registries/RegistryObject; + 14: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 17: checkcast #970 // class net/minecraft/world/entity/ai/attributes/Attribute + 20: invokeinterface #931, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 25: invokeinterface #937, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 30: astore_3 + 31: aload_3 + 32: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 37: ifeq 62 + 40: aload_3 + 41: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 46: checkcast #947 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 49: astore 4 + 51: dload_1 + 52: aload 4 + 54: invokevirtual #950 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D + 57: dadd + 58: dstore_1 + 59: goto 31 + 62: dload_1 + 63: dreturn + + private static java.lang.String fmtAttribute(double); + Code: + 0: dload_0 + 1: dload_0 + 2: invokestatic #973 // Method java/lang/Math.rint:(D)D + 5: dsub + 6: invokestatic #857 // Method java/lang/Math.abs:(D)D + 9: ldc2_w #858 // double 0.001d + 12: dcmpg + 13: ifge 25 + 16: dload_0 + 17: invokestatic #973 // Method java/lang/Math.rint:(D)D + 20: d2i + 21: invokestatic #976 // Method java/lang/String.valueOf:(I)Ljava/lang/String; + 24: areturn + 25: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 28: ldc_w #978 // String %.2f + 31: iconst_1 + 32: anewarray #4 // class java/lang/Object + 35: dup + 36: iconst_0 + 37: dload_0 + 38: invokestatic #983 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double; + 41: aastore + 42: invokestatic #987 // Method java/lang/String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; + 45: astore_2 + 46: aload_2 + 47: ldc_w #989 // String 0 + 50: invokevirtual #992 // Method java/lang/String.endsWith:(Ljava/lang/String;)Z + 53: ifeq 71 + 56: aload_2 + 57: iconst_0 + 58: aload_2 + 59: invokevirtual #995 // Method java/lang/String.length:()I + 62: iconst_1 + 63: isub + 64: invokevirtual #999 // Method java/lang/String.substring:(II)Ljava/lang/String; + 67: astore_2 + 68: goto 46 + 71: aload_2 + 72: ldc_w #1001 // String . + 75: invokevirtual #992 // Method java/lang/String.endsWith:(Ljava/lang/String;)Z + 78: ifeq 93 + 81: aload_2 + 82: iconst_0 + 83: aload_2 + 84: invokevirtual #995 // Method java/lang/String.length:()I + 87: iconst_1 + 88: isub + 89: invokevirtual #999 // Method java/lang/String.substring:(II)Ljava/lang/String; + 92: astore_2 + 93: aload_2 + 94: areturn + + private static int findVanillaAttributeInsertIndex(java.util.List); + Code: + 0: iconst_1 + 1: istore_1 + 2: iload_1 + 3: aload_0 + 4: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 9: if_icmpge 81 + 12: aload_0 + 13: iload_1 + 14: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 19: checkcast #698 // class net/minecraft/network/chat/Component + 22: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 27: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 30: invokevirtual #780 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 33: astore_2 + 34: aload_2 + 35: invokestatic #902 // Method isMainHandHeader:(Ljava/lang/String;)Z + 38: ifeq 75 + 41: iload_1 + 42: iconst_1 + 43: if_icmple 73 + 46: aload_0 + 47: iload_1 + 48: iconst_1 + 49: isub + 50: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 55: checkcast #698 // class net/minecraft/network/chat/Component + 58: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 63: invokevirtual #742 // Method java/lang/String.isEmpty:()Z + 66: ifeq 73 + 69: iload_1 + 70: iconst_1 + 71: isub + 72: ireturn + 73: iload_1 + 74: ireturn + 75: iinc 1, 1 + 78: goto 2 + 81: aload_0 + 82: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 87: ireturn + + public static void onRenderGuiOverlay(net.minecraftforge.client.event.RenderGuiOverlayEvent$Post); + Code: + 0: aload_0 + 1: invokevirtual #1007 // Method net/minecraftforge/client/event/RenderGuiOverlayEvent$Post.getOverlay:()Lnet/minecraftforge/client/gui/overlay/NamedGuiOverlay; + 4: invokevirtual #1013 // Method net/minecraftforge/client/gui/overlay/NamedGuiOverlay.id:()Lnet/minecraft/resources/ResourceLocation; + 7: getstatic #1019 // Field net/minecraftforge/client/gui/overlay/VanillaGuiOverlay.HOTBAR:Lnet/minecraftforge/client/gui/overlay/VanillaGuiOverlay; + 10: invokevirtual #1020 // Method net/minecraftforge/client/gui/overlay/VanillaGuiOverlay.id:()Lnet/minecraft/resources/ResourceLocation; + 13: invokevirtual #1023 // Method net/minecraft/resources/ResourceLocation.equals:(Ljava/lang/Object;)Z + 16: ifne 20 + 19: return + 20: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 23: astore_1 + 24: aload_1 + 25: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 28: ifnull 41 + 31: aload_1 + 32: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 35: getfield #1026 // Field net/minecraft/client/Options.f_92062_:Z + 38: ifeq 42 + 41: return + 42: aload_0 + 43: invokevirtual #1030 // Method net/minecraftforge/client/event/RenderGuiOverlayEvent$Post.getGuiGraphics:()Lnet/minecraft/client/gui/GuiGraphics; + 46: astore_2 + 47: aload_2 + 48: invokestatic #1034 // Method renderBallisticVestHud:(Lnet/minecraft/client/gui/GuiGraphics;)V + 51: aload_2 + 52: aload_1 + 53: invokestatic #1038 // Method renderGrenadeFuseHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V + 56: aload_2 + 57: aload_1 + 58: invokestatic #1041 // Method renderNailGunAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V + 61: aload_2 + 62: aload_1 + 63: invokestatic #1044 // Method renderCrossbowAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V + 66: aload_1 + 67: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 70: invokevirtual #1049 // Method net/minecraft/client/player/LocalPlayer.m_150108_:()Z + 73: ifne 100 + 76: getstatic #1051 // Field tacticalScopeProgress:F + 79: ldc_w #349 // float 0.01f + 82: fcmpl + 83: ifgt 96 + 86: aload_1 + 87: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 90: invokestatic #1057 // Method com/ogaba/sa_combat/client/scope/TacticalCrossbowScopeClient.isScopingWithScopedCrossbow:(Lnet/minecraft/client/player/LocalPlayer;)Z + 93: ifeq 100 + 96: aload_2 + 97: invokestatic #1062 // Method renderRealSpyglassOverlay:(Lnet/minecraft/client/gui/GuiGraphics;)V + 100: return + + private static void renderGrenadeFuseHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft); + Code: + 0: aload_1 + 1: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 4: astore_2 + 5: aload_2 + 6: ifnull 26 + 9: aload_2 + 10: invokevirtual #1066 // Method net/minecraft/world/entity/player/Player.m_6117_:()Z + 13: ifeq 26 + 16: aload_2 + 17: invokevirtual #1069 // Method net/minecraft/world/entity/player/Player.m_7655_:()Lnet/minecraft/world/InteractionHand; + 20: getstatic #179 // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand; + 23: if_acmpeq 27 + 26: return + 27: aload_2 + 28: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 31: astore_3 + 32: aload_3 + 33: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 36: astore 5 + 38: aload 5 + 40: instanceof #165 // class com/ogaba/sa_combat/item/SpecialGrenadeItem + 43: ifeq 68 + 46: aload 5 + 48: checkcast #165 // class com/ogaba/sa_combat/item/SpecialGrenadeItem + 51: astore 4 + 53: aload 4 + 55: invokevirtual #1072 // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.hasCookableFuse:()Z + 58: ifeq 68 + 61: aload_3 + 62: invokestatic #1075 // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.isArmed:(Lnet/minecraft/world/item/ItemStack;)Z + 65: ifne 69 + 68: return + 69: aload_3 + 70: invokestatic #1079 // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.getFuseTimerProgress:(Lnet/minecraft/world/item/ItemStack;)F + 73: fstore 5 + 75: ldc_w #1080 // float 55.0f + 78: fload 5 + 80: fmul + 81: invokestatic #1084 // Method net/minecraft/util/Mth.m_14143_:(F)I + 84: iconst_0 + 85: bipush 55 + 87: invokestatic #1088 // Method net/minecraft/util/Mth.m_14045_:(III)I + 90: istore 6 + 92: aload_0 + 93: invokevirtual #1091 // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I + 96: bipush 64 + 98: isub + 99: iconst_2 + 100: idiv + 101: istore 7 + 103: aload_0 + 104: invokevirtual #1094 // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I + 107: iconst_2 + 108: idiv + 109: bipush 27 + 111: iadd + 112: istore 8 + 114: invokestatic #1099 // Method com/mojang/blaze3d/systems/RenderSystem.enableBlend:()V + 117: invokestatic #1102 // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V + 120: iload 6 + 122: ifle 151 + 125: aload_0 + 126: getstatic #1104 // Field GRENADE_FUSE_FILL:Lnet/minecraft/resources/ResourceLocation; + 129: iload 7 + 131: iconst_5 + 132: iadd + 133: iload 8 + 135: iconst_2 + 136: iadd + 137: ldc_w #273 // float 5.0f + 140: fconst_2 + 141: iload 6 + 143: iconst_4 + 144: bipush 64 + 146: bipush 10 + 148: invokevirtual #1108 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 151: aload_0 + 152: getstatic #1110 // Field GRENADE_FUSE_FRAME:Lnet/minecraft/resources/ResourceLocation; + 155: iload 7 + 157: iload 8 + 159: fconst_0 + 160: fconst_0 + 161: bipush 64 + 163: bipush 10 + 165: bipush 64 + 167: bipush 10 + 169: invokevirtual #1108 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 172: invokestatic #1113 // Method com/mojang/blaze3d/systems/RenderSystem.disableBlend:()V + 175: return + + private static void renderBallisticVestHud(net.minecraft.client.gui.GuiGraphics); + Code: + 0: invokestatic #1124 // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.shouldRender:()Z + 3: ifne 7 + 6: return + 7: iconst_1 + 8: invokestatic #1127 // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.getMaxProtection:()I + 11: invokestatic #1131 // Method java/lang/Math.max:(II)I + 14: istore_1 + 15: invokestatic #1134 // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.getProtection:()I + 18: iconst_0 + 19: iload_1 + 20: invokestatic #1088 // Method net/minecraft/util/Mth.m_14045_:(III)I + 23: istore_2 + 24: iload_2 + 25: i2f + 26: iload_1 + 27: i2f + 28: fdiv + 29: fconst_0 + 30: fconst_1 + 31: invokestatic #238 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 34: fstore_3 + 35: fload_3 + 36: ldc_w #1135 // float 16.0f + 39: fmul + 40: invokestatic #1138 // Method net/minecraft/util/Mth.m_14167_:(F)I + 43: istore 4 + 45: iload 4 + 47: iconst_0 + 48: bipush 16 + 50: invokestatic #1088 // Method net/minecraft/util/Mth.m_14045_:(III)I + 53: istore 4 + 55: bipush 20 + 57: istore 5 + 59: aload_0 + 60: invokevirtual #1094 // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I + 63: bipush 30 + 65: isub + 66: bipush 20 + 68: isub + 69: istore 6 + 71: ldc_w #1139 // float 1.875f + 74: fstore 7 + 76: ldc_w #1139 // float 1.875f + 79: fstore 8 + 81: aload_0 + 82: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 85: invokevirtual #1145 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 88: aload_0 + 89: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 92: iload 5 + 94: i2f + 95: iload 6 + 97: i2f + 98: fconst_0 + 99: invokevirtual #1149 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 102: aload_0 + 103: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 106: fload 7 + 108: fload 8 + 110: fconst_1 + 111: invokevirtual #1152 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 114: aload_0 + 115: getstatic #1154 // Field BALLISTIC_VEST_BG:Lnet/minecraft/resources/ResourceLocation; + 118: iconst_0 + 119: iconst_0 + 120: fconst_0 + 121: fconst_0 + 122: bipush 16 + 124: bipush 16 + 126: bipush 16 + 128: bipush 16 + 130: invokevirtual #1108 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 133: iload 4 + 135: ifle 167 + 138: bipush 16 + 140: iload 4 + 142: isub + 143: istore 9 + 145: aload_0 + 146: getstatic #1156 // Field BALLISTIC_VEST_FILL:Lnet/minecraft/resources/ResourceLocation; + 149: iconst_0 + 150: iload 9 + 152: fconst_0 + 153: iload 9 + 155: i2f + 156: bipush 16 + 158: iload 4 + 160: bipush 16 + 162: bipush 16 + 164: invokevirtual #1108 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 167: aload_0 + 168: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 171: invokevirtual #1159 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 174: return + + private static void renderNailGunAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft); + Code: + 0: aload_1 + 1: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 4: ifnonnull 8 + 7: return + 8: aload_1 + 9: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 12: invokevirtual #1168 // Method net/minecraft/client/player/LocalPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 15: astore_2 + 16: aload_2 + 17: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 20: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 23: ifne 27 + 26: return + 27: aload_2 + 28: invokestatic #570 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 31: istore_3 + 32: aload_1 + 33: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 36: invokestatic #1172 // Method refreshInventoryHudCache:(Lnet/minecraft/world/entity/player/Player;)V + 39: getstatic #1174 // Field cachedNailReserve:I + 42: istore 4 + 44: aload_0 + 45: aload_1 + 46: invokestatic #1177 // Method nailIconStack:()Lnet/minecraft/world/item/ItemStack; + 49: iload_3 + 50: invokestatic #976 // Method java/lang/String.valueOf:(I)Ljava/lang/String; + 53: iload 4 + 55: invokedynamic #1181, 0 // InvokeDynamic #4:makeConcatWithConstants:(I)Ljava/lang/String; + 60: iload_3 + 61: ifgt 68 + 64: iconst_1 + 65: goto 69 + 68: iconst_0 + 69: aload_2 + 70: invokestatic #544 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 73: ifne 83 + 76: aload_2 + 77: invokestatic #547 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 80: ifeq 87 + 83: iconst_1 + 84: goto 88 + 87: iconst_0 + 88: invokestatic #1185 // Method renderAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Ljava/lang/String;ZZ)V + 91: return + + private static void renderCrossbowAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft); + Code: + 0: aload_1 + 1: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 4: ifnonnull 8 + 7: return + 8: aload_1 + 9: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 12: invokevirtual #1168 // Method net/minecraft/client/player/LocalPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 15: astore_2 + 16: aload_2 + 17: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 20: instanceof #46 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 23: ifne 45 + 26: aload_1 + 27: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 30: invokevirtual #1188 // Method net/minecraft/client/player/LocalPlayer.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 33: astore_2 + 34: aload_2 + 35: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 38: instanceof #46 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 41: ifne 45 + 44: return + 45: aload_2 + 46: invokestatic #1192 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.getSelectedBoltType:(Lnet/minecraft/world/item/ItemStack;)Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType; + 49: astore_3 + 50: aload_3 + 51: getstatic #1196 // Field com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType.IMPROVISED:Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType; + 54: if_acmpne 63 + 57: invokestatic #1199 // Method improvisedBoltIconStack:()Lnet/minecraft/world/item/ItemStack; + 60: goto 66 + 63: invokestatic #1202 // Method tacticalBoltIconStack:()Lnet/minecraft/world/item/ItemStack; + 66: astore 4 + 68: aload_1 + 69: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 72: invokestatic #1172 // Method refreshInventoryHudCache:(Lnet/minecraft/world/entity/player/Player;)V + 75: aload_3 + 76: getstatic #1196 // Field com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType.IMPROVISED:Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType; + 79: if_acmpne 88 + 82: getstatic #1204 // Field cachedImprovisedBoltReserve:I + 85: goto 91 + 88: getstatic #1206 // Field cachedTacticalBoltReserve:I + 91: istore 5 + 93: aload_2 + 94: invokestatic #1209 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoaded:(Lnet/minecraft/world/item/ItemStack;)Z + 97: istore 6 + 99: aload_2 + 100: invokestatic #1212 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoading:(Lnet/minecraft/world/item/ItemStack;)Z + 103: ifeq 117 + 106: aload_2 + 107: invokestatic #1215 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.hasAutoMechanism:(Lnet/minecraft/world/item/ItemStack;)Z + 110: ifne 117 + 113: iconst_1 + 114: goto 118 + 117: iconst_0 + 118: istore 7 + 120: aload_0 + 121: aload_1 + 122: aload 4 + 124: iload 6 + 126: ifeq 135 + 129: ldc_w #1217 // String 1 + 132: goto 138 + 135: ldc_w #989 // String 0 + 138: iload 5 + 140: invokedynamic #1181, 0 // InvokeDynamic #4:makeConcatWithConstants:(I)Ljava/lang/String; + 145: iload 6 + 147: ifne 159 + 150: iload 5 + 152: ifgt 159 + 155: iconst_1 + 156: goto 160 + 159: iconst_0 + 160: iload 7 + 162: invokestatic #1185 // Method renderAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Ljava/lang/String;ZZ)V + 165: return + + private static void refreshInventoryHudCache(net.minecraft.world.entity.player.Player); + Code: + 0: aload_0 + 1: ifnull 24 + 4: getstatic #1223 // Field cachedInventoryPlayerId:I + 7: aload_0 + 8: invokevirtual #1226 // Method net/minecraft/world/entity/player/Player.m_19879_:()I + 11: if_icmpne 25 + 14: getstatic #1228 // Field cachedInventoryTick:I + 17: aload_0 + 18: getfield #1231 // Field net/minecraft/world/entity/player/Player.f_19797_:I + 21: if_icmpne 25 + 24: return + 25: aload_0 + 26: invokevirtual #1226 // Method net/minecraft/world/entity/player/Player.m_19879_:()I + 29: putstatic #1223 // Field cachedInventoryPlayerId:I + 32: aload_0 + 33: getfield #1231 // Field net/minecraft/world/entity/player/Player.f_19797_:I + 36: putstatic #1228 // Field cachedInventoryTick:I + 39: iconst_0 + 40: putstatic #1174 // Field cachedNailReserve:I + 43: iconst_0 + 44: putstatic #1206 // Field cachedTacticalBoltReserve:I + 47: iconst_0 + 48: putstatic #1204 // Field cachedImprovisedBoltReserve:I + 51: aload_0 + 52: invokevirtual #1235 // Method net/minecraft/world/entity/player/Player.m_150109_:()Lnet/minecraft/world/entity/player/Inventory; + 55: getfield #1241 // Field net/minecraft/world/entity/player/Inventory.f_35974_:Lnet/minecraft/core/NonNullList; + 58: invokevirtual #1244 // Method net/minecraft/core/NonNullList.iterator:()Ljava/util/Iterator; + 61: astore_1 + 62: aload_1 + 63: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 68: ifeq 186 + 71: aload_1 + 72: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 77: checkcast #159 // class net/minecraft/world/item/ItemStack + 80: astore_2 + 81: aload_2 + 82: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 85: ifeq 91 + 88: goto 62 + 91: getstatic #1246 // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation; + 94: getstatic #1252 // Field net/minecraftforge/registries/ForgeRegistries.ITEMS:Lnet/minecraftforge/registries/IForgeRegistry; + 97: aload_2 + 98: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 101: invokeinterface #1258, 2 // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getKey:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation; + 106: invokevirtual #1023 // Method net/minecraft/resources/ResourceLocation.equals:(Ljava/lang/Object;)Z + 109: ifeq 126 + 112: getstatic #1174 // Field cachedNailReserve:I + 115: aload_2 + 116: invokevirtual #1261 // Method net/minecraft/world/item/ItemStack.m_41613_:()I + 119: iadd + 120: putstatic #1174 // Field cachedNailReserve:I + 123: goto 183 + 126: aload_2 + 127: getstatic #1266 // Field com/ogaba/sa_combat/registry/ModItems.TACTICAL_BOLT:Lnet/minecraftforge/registries/RegistryObject; + 130: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 133: checkcast #1268 // class net/minecraft/world/item/Item + 136: invokevirtual #1272 // Method net/minecraft/world/item/ItemStack.m_150930_:(Lnet/minecraft/world/item/Item;)Z + 139: ifeq 156 + 142: getstatic #1206 // Field cachedTacticalBoltReserve:I + 145: aload_2 + 146: invokevirtual #1261 // Method net/minecraft/world/item/ItemStack.m_41613_:()I + 149: iadd + 150: putstatic #1206 // Field cachedTacticalBoltReserve:I + 153: goto 183 + 156: aload_2 + 157: getstatic #1275 // Field com/ogaba/sa_combat/registry/ModItems.IMPROVISED_BOLT:Lnet/minecraftforge/registries/RegistryObject; + 160: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 163: checkcast #1268 // class net/minecraft/world/item/Item + 166: invokevirtual #1272 // Method net/minecraft/world/item/ItemStack.m_150930_:(Lnet/minecraft/world/item/Item;)Z + 169: ifeq 183 + 172: getstatic #1204 // Field cachedImprovisedBoltReserve:I + 175: aload_2 + 176: invokevirtual #1261 // Method net/minecraft/world/item/ItemStack.m_41613_:()I + 179: iadd + 180: putstatic #1204 // Field cachedImprovisedBoltReserve:I + 183: goto 62 + 186: return + + private static void renderAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft, net.minecraft.world.item.ItemStack, java.lang.String, java.lang.String, boolean, boolean); + Code: + 0: ldc_w #1276 // float 1.4f + 3: fstore 7 + 5: ldc_w #1277 // float 1.8f + 8: fstore 8 + 10: ldc_w #1278 // float 1.2f + 13: fstore 9 + 15: ldc_w #1135 // float 16.0f + 18: fload 7 + 20: fmul + 21: invokestatic #1281 // Method java/lang/Math.round:(F)I + 24: istore 10 + 26: aload_1 + 27: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 30: aload_3 + 31: invokevirtual #1291 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 34: i2f + 35: fload 8 + 37: fmul + 38: invokestatic #1281 // Method java/lang/Math.round:(F)I + 41: istore 11 + 43: aload_1 + 44: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 47: aload 4 + 49: invokevirtual #1291 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 52: i2f + 53: fload 9 + 55: fmul + 56: invokestatic #1281 // Method java/lang/Math.round:(F)I + 59: istore 12 + 61: iload 10 + 63: bipush 8 + 65: iadd + 66: iload 11 + 68: iadd + 69: iconst_3 + 70: iadd + 71: iload 12 + 73: iadd + 74: istore 13 + 76: iload 10 + 78: aload_1 + 79: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 82: invokestatic #1297 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 85: pop + 86: ldc_w #1298 // float 9.0f + 89: fload 8 + 91: fmul + 92: invokestatic #1281 // Method java/lang/Math.round:(F)I + 95: invokestatic #1131 // Method java/lang/Math.max:(II)I + 98: istore 14 + 100: aload_0 + 101: invokevirtual #1091 // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I + 104: bipush 16 + 106: isub + 107: iload 13 + 109: isub + 110: istore 15 + 112: aload_0 + 113: invokevirtual #1094 // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I + 116: bipush 16 + 118: isub + 119: iload 14 + 121: isub + 122: istore 16 + 124: iload 6 + 126: ifeq 189 + 129: ldc_w #1300 // String Reloading... + 132: astore 17 + 134: aload_0 + 135: invokevirtual #1091 // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I + 138: bipush 16 + 140: isub + 141: aload_1 + 142: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 145: aload 17 + 147: invokevirtual #1291 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 150: isub + 151: istore 18 + 153: iload 16 + 155: aload_1 + 156: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 159: invokestatic #1297 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 162: pop + 163: bipush 9 + 165: isub + 166: iconst_3 + 167: isub + 168: istore 19 + 170: aload_0 + 171: aload_1 + 172: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 175: aload 17 + 177: iload 18 + 179: iload 19 + 181: ldc_w #1301 // int 16765517 + 184: iconst_1 + 185: invokevirtual #1305 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 188: pop + 189: iload 15 + 191: istore 17 + 193: iload 16 + 195: iload 14 + 197: iload 10 + 199: isub + 200: iconst_2 + 201: idiv + 202: iadd + 203: istore 18 + 205: aload_2 + 206: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 209: ifne 259 + 212: aload_0 + 213: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 216: invokevirtual #1145 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 219: aload_0 + 220: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 223: iload 17 + 225: i2f + 226: iload 18 + 228: i2f + 229: fconst_0 + 230: invokevirtual #1149 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 233: aload_0 + 234: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 237: fload 7 + 239: fload 7 + 241: fconst_1 + 242: invokevirtual #1152 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 245: aload_0 + 246: aload_2 + 247: iconst_0 + 248: iconst_0 + 249: invokevirtual #1309 // Method net/minecraft/client/gui/GuiGraphics.m_280480_:(Lnet/minecraft/world/item/ItemStack;II)V + 252: aload_0 + 253: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 256: invokevirtual #1159 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 259: iload 17 + 261: iload 10 + 263: iadd + 264: bipush 8 + 266: iadd + 267: istore 19 + 269: iload 5 + 271: ifeq 280 + 274: ldc_w #1310 // int 16733525 + 277: goto 283 + 280: ldc_w #1311 // int 16777215 + 283: istore 20 + 285: aload_0 + 286: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 289: invokevirtual #1145 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 292: aload_0 + 293: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 296: iload 19 + 298: i2f + 299: iload 16 + 301: i2f + 302: iload 14 + 304: aload_1 + 305: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 308: invokestatic #1297 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 311: pop + 312: ldc_w #1298 // float 9.0f + 315: fload 8 + 317: fmul + 318: invokestatic #1281 // Method java/lang/Math.round:(F)I + 321: isub + 322: i2f + 323: fconst_2 + 324: fdiv + 325: fadd + 326: fconst_0 + 327: invokevirtual #1149 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 330: aload_0 + 331: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 334: fload 8 + 336: fload 8 + 338: fconst_1 + 339: invokevirtual #1152 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 342: aload_0 + 343: aload_1 + 344: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 347: aload_3 + 348: iconst_0 + 349: iconst_0 + 350: iload 20 + 352: iconst_1 + 353: invokevirtual #1305 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 356: pop + 357: aload_0 + 358: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 361: invokevirtual #1159 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 364: aload_0 + 365: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 368: invokevirtual #1145 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 371: aload_0 + 372: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 375: iload 19 + 377: iload 11 + 379: iadd + 380: iconst_3 + 381: iadd + 382: i2f + 383: iload 16 + 385: i2f + 386: iload 14 + 388: aload_1 + 389: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 392: invokestatic #1297 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 395: pop + 396: ldc_w #1298 // float 9.0f + 399: fload 9 + 401: fmul + 402: invokestatic #1281 // Method java/lang/Math.round:(F)I + 405: isub + 406: i2f + 407: fconst_2 + 408: fdiv + 409: fadd + 410: fconst_0 + 411: invokevirtual #1149 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 414: aload_0 + 415: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 418: fload 9 + 420: fload 9 + 422: fconst_1 + 423: invokevirtual #1152 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 426: aload_0 + 427: aload_1 + 428: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 431: aload 4 + 433: iconst_0 + 434: iconst_0 + 435: ldc_w #1312 // int 11184810 + 438: iconst_1 + 439: invokevirtual #1305 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 442: pop + 443: aload_0 + 444: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 447: invokevirtual #1159 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 450: return + + private static net.minecraft.world.item.ItemStack nailIconStack(); + Code: + 0: getstatic #1335 // Field nailIconResolved:Z + 3: ifne 46 + 6: iconst_1 + 7: putstatic #1335 // Field nailIconResolved:Z + 10: getstatic #1252 // Field net/minecraftforge/registries/ForgeRegistries.ITEMS:Lnet/minecraftforge/registries/IForgeRegistry; + 13: getstatic #1246 // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation; + 16: invokeinterface #1339, 2 // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getValue:(Lnet/minecraft/resources/ResourceLocation;)Ljava/lang/Object; + 21: checkcast #1268 // class net/minecraft/world/item/Item + 24: astore_0 + 25: aload_0 + 26: ifnonnull 35 + 29: getstatic #1342 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 32: goto 43 + 35: new #159 // class net/minecraft/world/item/ItemStack + 38: dup + 39: aload_0 + 40: invokespecial #1345 // Method net/minecraft/world/item/ItemStack."":(Lnet/minecraft/world/level/ItemLike;)V + 43: putstatic #1347 // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack; + 46: getstatic #1347 // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack; + 49: areturn + + private static net.minecraft.world.item.ItemStack tacticalBoltIconStack(); + Code: + 0: getstatic #1351 // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack; + 3: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 6: ifeq 28 + 9: new #159 // class net/minecraft/world/item/ItemStack + 12: dup + 13: getstatic #1266 // Field com/ogaba/sa_combat/registry/ModItems.TACTICAL_BOLT:Lnet/minecraftforge/registries/RegistryObject; + 16: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 19: checkcast #1353 // class net/minecraft/world/level/ItemLike + 22: invokespecial #1345 // Method net/minecraft/world/item/ItemStack."":(Lnet/minecraft/world/level/ItemLike;)V + 25: putstatic #1351 // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack; + 28: getstatic #1351 // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack; + 31: areturn + + private static net.minecraft.world.item.ItemStack improvisedBoltIconStack(); + Code: + 0: getstatic #1355 // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack; + 3: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 6: ifeq 28 + 9: new #159 // class net/minecraft/world/item/ItemStack + 12: dup + 13: getstatic #1275 // Field com/ogaba/sa_combat/registry/ModItems.IMPROVISED_BOLT:Lnet/minecraftforge/registries/RegistryObject; + 16: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 19: checkcast #1353 // class net/minecraft/world/level/ItemLike + 22: invokespecial #1345 // Method net/minecraft/world/item/ItemStack."":(Lnet/minecraft/world/level/ItemLike;)V + 25: putstatic #1355 // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack; + 28: getstatic #1355 // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack; + 31: areturn + + private static void renderRealSpyglassOverlay(net.minecraft.client.gui.GuiGraphics); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_1 + 4: invokestatic #1362 // Method vanillaSpyglassScopeScale:()F + 7: fstore_2 + 8: getstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 11: ifnonnull 53 + 14: aload_1 + 15: getfield #1368 // Field net/minecraft/client/Minecraft.f_91065_:Lnet/minecraft/client/gui/Gui; + 18: invokevirtual #1372 // Method java/lang/Object.getClass:()Ljava/lang/Class; + 21: ldc_w #1374 // String renderSpyglassOverlay + 24: iconst_2 + 25: anewarray #1376 // class java/lang/Class + 28: dup + 29: iconst_0 + 30: ldc_w #1059 // class net/minecraft/client/gui/GuiGraphics + 33: aastore + 34: dup + 35: iconst_1 + 36: getstatic #1382 // Field java/lang/Float.TYPE:Ljava/lang/Class; + 39: aastore + 40: invokevirtual #1386 // Method java/lang/Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; + 43: putstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 46: getstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 49: iconst_1 + 50: invokevirtual #1391 // Method java/lang/reflect/Method.setAccessible:(Z)V + 53: getstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 56: aload_1 + 57: getfield #1368 // Field net/minecraft/client/Minecraft.f_91065_:Lnet/minecraft/client/gui/Gui; + 60: iconst_2 + 61: anewarray #4 // class java/lang/Object + 64: dup + 65: iconst_0 + 66: aload_0 + 67: aastore + 68: dup + 69: iconst_1 + 70: fload_2 + 71: invokestatic #1394 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 74: aastore + 75: invokevirtual #1398 // Method java/lang/reflect/Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; + 78: pop + 79: return + 80: astore_3 + 81: aload_0 + 82: fload_2 + 83: invokestatic #1404 // Method renderVanillaSpyglassOverlayFallback:(Lnet/minecraft/client/gui/GuiGraphics;F)V + 86: return + Exception table: + from to target type + 8 79 80 Class java/lang/ReflectiveOperationException + 8 79 80 Class java/lang/RuntimeException + + private static float vanillaSpyglassScopeScale(); + Code: + 0: invokestatic #1410 // Method easedScopeProgress:()F + 3: ldc_w #262 // float 0.5f + 6: ldc_w #1411 // float 1.125f + 9: invokestatic #256 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 12: freturn + + private static float easedScopeProgress(); + Code: + 0: getstatic #1051 // Field tacticalScopeProgress:F + 3: fconst_0 + 4: fconst_1 + 5: invokestatic #238 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 8: fstore_0 + 9: fload_0 + 10: fload_0 + 11: fmul + 12: ldc_w #271 // float 3.0f + 15: fconst_2 + 16: fload_0 + 17: fmul + 18: fsub + 19: fmul + 20: freturn + + private static void renderVanillaSpyglassOverlayFallback(net.minecraft.client.gui.GuiGraphics, float); + Code: + 0: aload_0 + 1: invokevirtual #1091 // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I + 4: istore_2 + 5: aload_0 + 6: invokevirtual #1094 // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I + 9: istore_3 + 10: iload_2 + 11: ifle 18 + 14: iload_3 + 15: ifgt 19 + 18: return + 19: iload_2 + 20: iload_3 + 21: invokestatic #1414 // Method java/lang/Math.min:(II)I + 24: i2f + 25: fstore 4 + 27: iload_2 + 28: i2f + 29: fload 4 + 31: fdiv + 32: iload_3 + 33: i2f + 34: fload 4 + 36: fdiv + 37: invokestatic #1417 // Method java/lang/Math.min:(FF)F + 40: fload_1 + 41: fmul + 42: fstore 5 + 44: fload 4 + 46: fload 5 + 48: fmul + 49: invokestatic #1084 // Method net/minecraft/util/Mth.m_14143_:(F)I + 52: istore 6 + 54: fload 4 + 56: fload 5 + 58: fmul + 59: invokestatic #1084 // Method net/minecraft/util/Mth.m_14143_:(F)I + 62: istore 7 + 64: iload_2 + 65: iload 6 + 67: isub + 68: iconst_2 + 69: idiv + 70: istore 8 + 72: iload_3 + 73: iload 7 + 75: isub + 76: iconst_2 + 77: idiv + 78: istore 9 + 80: iload 8 + 82: iload 6 + 84: iadd + 85: istore 10 + 87: iload 9 + 89: iload 7 + 91: iadd + 92: istore 11 + 94: invokestatic #1420 // Method com/mojang/blaze3d/systems/RenderSystem.disableDepthTest:()V + 97: iconst_0 + 98: invokestatic #1423 // Method com/mojang/blaze3d/systems/RenderSystem.depthMask:(Z)V + 101: invokestatic #1099 // Method com/mojang/blaze3d/systems/RenderSystem.enableBlend:()V + 104: invokestatic #1102 // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V + 107: aload_0 + 108: getstatic #1425 // Field VANILLA_SPYGLASS_SCOPE:Lnet/minecraft/resources/ResourceLocation; + 111: iload 8 + 113: iload 9 + 115: bipush -90 + 117: fconst_0 + 118: fconst_0 + 119: iload 6 + 121: iload 7 + 123: iload 6 + 125: iload 7 + 127: invokevirtual #1429 // Method net/minecraft/client/gui/GuiGraphics.m_280398_:(Lnet/minecraft/resources/ResourceLocation;IIIFFIIII)V + 130: aload_0 + 131: invokestatic #1435 // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType; + 134: iconst_0 + 135: iload 11 + 137: iload_2 + 138: iload_3 + 139: bipush -90 + 141: ldc_w #1436 // int -16777216 + 144: invokevirtual #1440 // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V + 147: aload_0 + 148: invokestatic #1435 // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType; + 151: iconst_0 + 152: iconst_0 + 153: iload_2 + 154: iload 9 + 156: bipush -90 + 158: ldc_w #1436 // int -16777216 + 161: invokevirtual #1440 // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V + 164: aload_0 + 165: invokestatic #1435 // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType; + 168: iconst_0 + 169: iload 9 + 171: iload 8 + 173: iload 11 + 175: bipush -90 + 177: ldc_w #1436 // int -16777216 + 180: invokevirtual #1440 // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V + 183: aload_0 + 184: invokestatic #1435 // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType; + 187: iload 10 + 189: iload 9 + 191: iload_2 + 192: iload 11 + 194: bipush -90 + 196: ldc_w #1436 // int -16777216 + 199: invokevirtual #1440 // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V + 202: iconst_1 + 203: invokestatic #1423 // Method com/mojang/blaze3d/systems/RenderSystem.depthMask:(Z)V + 206: invokestatic #1102 // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V + 209: invokestatic #1443 // Method com/mojang/blaze3d/systems/RenderSystem.enableDepthTest:()V + 212: return + + public static void onClientLoggingIn(net.minecraftforge.client.event.ClientPlayerNetworkEvent$LoggingIn); + Code: + 0: invokestatic #1457 // Method resetClientSessionState:()V + 3: return + + public static void onClientLoggingOut(net.minecraftforge.client.event.ClientPlayerNetworkEvent$LoggingOut); + Code: + 0: invokestatic #1457 // Method resetClientSessionState:()V + 3: return + + private static void resetClientSessionState(); + Code: + 0: iconst_0 + 1: iconst_0 + 2: invokestatic #1465 // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.set:(II)V + 5: fconst_0 + 6: putstatic #1051 // Field tacticalScopeProgress:F + 9: aconst_null + 10: putstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 13: iconst_0 + 14: putstatic #555 // Field nailGunTriggerWasDown:Z + 17: fconst_0 + 18: putstatic #557 // Field nailGunAutoFireAccumulator:F + 21: ldc2_w #490 // long -9223372036854775808l + 24: putstatic #493 // Field thirdPersonNailGunStackId:J + 27: iconst_0 + 28: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 31: iconst_0 + 32: putstatic #434 // Field crossbowCycleWasDown:Z + 35: ldc_w #1466 // int -2147483648 + 38: putstatic #1223 // Field cachedInventoryPlayerId:I + 41: ldc_w #1466 // int -2147483648 + 44: putstatic #1228 // Field cachedInventoryTick:I + 47: invokestatic #1469 // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.clearClientAnimationState:()V + 50: invokestatic #1470 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.clearClientAnimationState:()V + 53: invokestatic #1473 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.reset:()V + 56: invokestatic #1478 // Method com/ogaba/sa_combat/client/render/NailGunCameraAnimation.resetImmediately:()V + 59: invokestatic #1481 // Method com/ogaba/sa_combat/client/effect/NailHoleManager.clear:()V + 62: invokestatic #1484 // Method com/ogaba/sa_combat/client/sound/ChainsawSoundManager.stop:()V + 65: return + + private static net.minecraft.resources.ResourceLocation rl(java.lang.String); + Code: + 0: new #1022 // class net/minecraft/resources/ResourceLocation + 3: dup + 4: ldc_w #1487 // String sa_combat + 7: aload_0 + 8: invokespecial #1490 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 11: areturn + + static {}; + Code: + 0: ldc_w #1494 // String textures/gui/hud/ballistic_vest_bg.png + 3: invokestatic #1496 // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 6: putstatic #1154 // Field BALLISTIC_VEST_BG:Lnet/minecraft/resources/ResourceLocation; + 9: ldc_w #1498 // String textures/gui/hud/ballistic_vest_fill.png + 12: invokestatic #1496 // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 15: putstatic #1156 // Field BALLISTIC_VEST_FILL:Lnet/minecraft/resources/ResourceLocation; + 18: ldc_w #1500 // String textures/gui/hud/grenade_fuse_frame.png + 21: invokestatic #1496 // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 24: putstatic #1110 // Field GRENADE_FUSE_FRAME:Lnet/minecraft/resources/ResourceLocation; + 27: ldc_w #1502 // String textures/gui/hud/compound_bow_power_fill.png + 30: invokestatic #1496 // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 33: putstatic #1104 // Field GRENADE_FUSE_FILL:Lnet/minecraft/resources/ResourceLocation; + 36: new #1022 // class net/minecraft/resources/ResourceLocation + 39: dup + 40: ldc_w #1503 // String minecraft + 43: ldc_w #1505 // String textures/misc/spyglass_scope.png + 46: invokespecial #1490 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 49: putstatic #1425 // Field VANILLA_SPYGLASS_SCOPE:Lnet/minecraft/resources/ResourceLocation; + 52: new #1022 // class net/minecraft/resources/ResourceLocation + 55: dup + 56: ldc_w #1507 // String sa_core + 59: ldc_w #1509 // String nails + 62: invokespecial #1490 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 65: putstatic #1246 // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation; + 68: ldc2_w #490 // long -9223372036854775808l + 71: putstatic #493 // Field thirdPersonNailGunStackId:J + 74: ldc_w #1466 // int -2147483648 + 77: putstatic #1223 // Field cachedInventoryPlayerId:I + 80: ldc_w #1466 // int -2147483648 + 83: putstatic #1228 // Field cachedInventoryTick:I + 86: getstatic #1342 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 89: putstatic #1347 // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack; + 92: getstatic #1342 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 95: putstatic #1351 // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack; + 98: getstatic #1342 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 101: putstatic #1355 // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack; + 104: return +} diff --git a/_sa_hanhua_out/_tmp/javap_full.py b/_sa_hanhua_out/_tmp/javap_full.py new file mode 100644 index 0000000..7831cee --- /dev/null +++ b/_sa_hanhua_out/_tmp/javap_full.py @@ -0,0 +1,38 @@ +import zipfile, os, subprocess, shutil + +jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +out = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\classes' + +targets = [ + 'com/ogaba/sa_combat/client/tooltip/BlueprintClientTooltipComponent.class', + 'com/ogaba/sa_combat/item/BlueprintTooltipComponent.class', + 'com/ogaba/sa_combat/item/BlueprintItem.class', +] + +javap = r'D:\我的世界\bin\javap.EXE' +if not os.path.exists(javap): + javap = shutil.which('javap') + +report = [] +for t in targets: + cname = t[:-6].replace('/', '.') + r = subprocess.run([javap, '-c', '-p', '-classpath', out, cname], capture_output=True, text=True, encoding='utf-8', errors='replace') + text = r.stdout if r.returncode == 0 else r.stderr + report.append('='*20 + ' ' + cname + ' ' + '='*20 + '\n' + text) + +full = '\n\n'.join(report) +with open(r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\javap_blueprint.txt', 'w', encoding='utf-8') as f: + f.write(full) +print('written, total len:', len(full)) + +# 关键搜索:getDisplayName / Survivors / displayName / 所有字符串常量 +import re +print('\n--- getDisplayName / mod 相关调用 ---') +for line in full.splitlines(): + if 'getDisplayName' in line or 'DisplayName' in line or 'Survivors' in line or 'getModId' in line or 'mods.toml' in line: + print(line) +print('\n--- 所有 String 常量 ---') +for line in full.splitlines(): + m = re.search(r'String ([^\s]*(?:blueprint|mod|Mod)[^\s]*)', line) + if m: + print(line.strip()) diff --git a/_sa_hanhua_out/_tmp/javap_reload.py b/_sa_hanhua_out/_tmp/javap_reload.py new file mode 100644 index 0000000..f60d0c8 --- /dev/null +++ b/_sa_hanhua_out/_tmp/javap_reload.py @@ -0,0 +1,44 @@ +import zipfile, os, subprocess, shutil + +jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +out = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\classes' + +targets = [ + 'com/ogaba/sa_combat/client/event/SACombatClientForgeEvents.class', + 'com/ogaba/sa_combat/client/model/SAWeaponGeoModel.class', + 'com/ogaba/sa_combat/client/render/NailGunAimClient.class', + 'com/ogaba/sa_combat/combat/weapon/NailGunItem.class', + 'com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket.class', +] + +with zipfile.ZipFile(jar) as z: + for t in targets: + p = os.path.join(out, t.replace('/', os.sep)) + os.makedirs(os.path.dirname(p), exist_ok=True) + with open(p, 'wb') as f: + f.write(z.read(t)) + print('extracted:', t) + +javap = r'D:\我的世界\bin\javap.EXE' +if not os.path.exists(javap): + javap = shutil.which('javap') + +report = [] +for t in targets: + cname = t[:-6].replace('/', '.') + r = subprocess.run([javap, '-c', '-p', '-classpath', out, cname], capture_output=True, text=True, encoding='utf-8', errors='replace') + text = r.stdout if r.returncode == 0 else r.stderr + report.append('='*20 + ' ' + cname + ' ' + '='*20 + '\n' + text) + +full = '\n\n'.join(report) +with open(r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\javap_reload.txt', 'w', encoding='utf-8') as f: + f.write(full) +print('written len:', len(full)) + +# 输出 Reloading 相关上下文 +lines = full.splitlines() +for i, line in enumerate(lines): + if 'Reload' in line or 'reload' in line.lower(): + # 打印该行及其后几行(字符串常量会出现在 ldc 之后) + print('\n'.join(lines[max(0,i-1):i+6])) + print('...') diff --git a/_sa_hanhua_out/_tmp/javap_reload.txt b/_sa_hanhua_out/_tmp/javap_reload.txt new file mode 100644 index 0000000..b0a9686 --- /dev/null +++ b/_sa_hanhua_out/_tmp/javap_reload.txt @@ -0,0 +1,6339 @@ +==================== com.ogaba.sa_combat.client.event.SACombatClientForgeEvents ==================== +Compiled from "SACombatClientForgeEvents.java" +public final class com.ogaba.sa_combat.client.event.SACombatClientForgeEvents { + private static final net.minecraft.resources.ResourceLocation BALLISTIC_VEST_BG; + + private static final net.minecraft.resources.ResourceLocation BALLISTIC_VEST_FILL; + + private static final net.minecraft.resources.ResourceLocation GRENADE_FUSE_FRAME; + + private static final net.minecraft.resources.ResourceLocation GRENADE_FUSE_FILL; + + private static final int GRENADE_FUSE_FRAME_WIDTH; + + private static final int GRENADE_FUSE_FRAME_HEIGHT; + + private static final int GRENADE_FUSE_FILL_OFFSET_X; + + private static final int GRENADE_FUSE_FILL_OFFSET_Y; + + private static final int GRENADE_FUSE_FILL_WIDTH; + + private static final int GRENADE_FUSE_FILL_HEIGHT; + + private static final int GRENADE_FUSE_CROSSHAIR_OFFSET_Y; + + private static final net.minecraft.resources.ResourceLocation VANILLA_SPYGLASS_SCOPE; + + private static float tacticalScopeProgress; + + private static java.lang.reflect.Method renderSpyglassOverlayMethod; + + private static final float SCOPE_OPEN_SMOOTH; + + private static final float SCOPE_CLOSE_SMOOTH; + + private static final int BALLISTIC_ICON_W; + + private static final int BALLISTIC_ICON_H; + + private static final int BALLISTIC_RENDER_W; + + private static final int BALLISTIC_RENDER_H; + + private static final int BALLISTIC_MARGIN_LEFT; + + private static final int BALLISTIC_MARGIN_BOTTOM; + + private static final net.minecraft.resources.ResourceLocation NAIL_ITEM_ID; + + private static final int AMMO_ICON_SIZE; + + private static final int AMMO_MARGIN_RIGHT; + + private static final int AMMO_MARGIN_BOTTOM; + + private static final int AMMO_ICON_GAP; + + private static boolean nailGunTriggerWasDown; + + private static float nailGunAutoFireAccumulator; + + private static long thirdPersonNailGunStackId; + + private static boolean thirdPersonNailGunReloadWasActive; + + private static int cachedInventoryPlayerId; + + private static int cachedInventoryTick; + + private static int cachedNailReserve; + + private static int cachedTacticalBoltReserve; + + private static int cachedImprovisedBoltReserve; + + private static boolean nailIconResolved; + + private static net.minecraft.world.item.ItemStack cachedNailIcon; + + private static net.minecraft.world.item.ItemStack cachedTacticalBoltIcon; + + private static net.minecraft.world.item.ItemStack cachedImprovisedBoltIcon; + + private static boolean crossbowCycleWasDown; + + private com.ogaba.sa_combat.client.event.SACombatClientForgeEvents(); + Code: + 0: aload_0 + 1: invokespecial #133 // Method java/lang/Object."":()V + 4: return + + public static void onRenderHand(net.minecraftforge.client.event.RenderHandEvent); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_1 + 4: aload_1 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_2 + 9: aload_2 + 10: ifnonnull 14 + 13: return + 14: aload_2 + 15: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 18: astore_3 + 19: aload_2 + 20: invokevirtual #157 // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 23: astore 4 + 25: aload_3 + 26: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 29: instanceof #165 // class com/ogaba/sa_combat/item/SpecialGrenadeItem + 32: istore 5 + 34: aload 4 + 36: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 39: instanceof #165 // class com/ogaba/sa_combat/item/SpecialGrenadeItem + 42: istore 6 + 44: aload_3 + 45: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 48: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 51: istore 7 + 53: aload 4 + 55: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 58: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 61: istore 8 + 63: iload 5 + 65: ifne 84 + 68: iload 6 + 70: ifne 84 + 73: iload 7 + 75: ifne 84 + 78: iload 8 + 80: ifne 84 + 83: return + 84: aload_0 + 85: invokevirtual #173 // Method net/minecraftforge/client/event/RenderHandEvent.getHand:()Lnet/minecraft/world/InteractionHand; + 88: getstatic #179 // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand; + 91: if_acmpne 128 + 94: iload 5 + 96: ifeq 109 + 99: aload_0 + 100: aload_2 + 101: ldc #180 // float 0.35f + 103: invokestatic #184 // Method applyRetainedVanillaViewBob:(Lnet/minecraftforge/client/event/RenderHandEvent;Lnet/minecraft/world/entity/player/Player;F)V + 106: goto 128 + 109: iload 7 + 111: ifeq 128 + 114: fconst_1 + 115: invokestatic #190 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F + 118: fsub + 119: fstore 9 + 121: aload_0 + 122: aload_2 + 123: fload 9 + 125: invokestatic #184 // Method applyRetainedVanillaViewBob:(Lnet/minecraftforge/client/event/RenderHandEvent;Lnet/minecraft/world/entity/player/Player;F)V + 128: aload_0 + 129: invokevirtual #173 // Method net/minecraftforge/client/event/RenderHandEvent.getHand:()Lnet/minecraft/world/InteractionHand; + 132: getstatic #193 // Field net/minecraft/world/InteractionHand.OFF_HAND:Lnet/minecraft/world/InteractionHand; + 135: if_acmpne 143 + 138: aload_0 + 139: iconst_1 + 140: invokevirtual #197 // Method net/minecraftforge/client/event/RenderHandEvent.setCanceled:(Z)V + 143: return + + private static void applyRetainedVanillaViewBob(net.minecraftforge.client.event.RenderHandEvent, net.minecraft.world.entity.player.Player, float); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_3 + 4: aload_3 + 5: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 8: invokevirtual #220 // Method net/minecraft/client/Options.m_231830_:()Lnet/minecraft/client/OptionInstance; + 11: invokevirtual #226 // Method net/minecraft/client/OptionInstance.m_231551_:()Ljava/lang/Object; + 14: checkcast #228 // class java/lang/Boolean + 17: invokevirtual #232 // Method java/lang/Boolean.booleanValue:()Z + 20: ifne 24 + 23: return + 24: fload_2 + 25: fconst_0 + 26: fconst_1 + 27: invokestatic #238 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 30: fstore_2 + 31: aload_0 + 32: invokevirtual #241 // Method net/minecraftforge/client/event/RenderHandEvent.getPartialTick:()F + 35: fstore 4 + 37: aload_1 + 38: getfield #244 // Field net/minecraft/world/entity/player/Player.f_19787_:F + 41: aload_1 + 42: getfield #247 // Field net/minecraft/world/entity/player/Player.f_19867_:F + 45: fsub + 46: fstore 5 + 48: aload_1 + 49: getfield #244 // Field net/minecraft/world/entity/player/Player.f_19787_:F + 52: fload 5 + 54: fload 4 + 56: fmul + 57: fadd + 58: fneg + 59: fstore 6 + 61: fload 4 + 63: aload_1 + 64: getfield #250 // Field net/minecraft/world/entity/player/Player.f_36099_:F + 67: aload_1 + 68: getfield #253 // Field net/minecraft/world/entity/player/Player.f_36100_:F + 71: invokestatic #256 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 74: fstore 7 + 76: fload 6 + 78: ldc_w #257 // float 3.1415927f + 81: fmul + 82: invokestatic #261 // Method net/minecraft/util/Mth.m_14031_:(F)F + 85: fload 7 + 87: fmul + 88: ldc_w #262 // float 0.5f + 91: fmul + 92: fstore 8 + 94: fload 6 + 96: ldc_w #257 // float 3.1415927f + 99: fmul + 100: invokestatic #265 // Method net/minecraft/util/Mth.m_14089_:(F)F + 103: fload 7 + 105: fmul + 106: invokestatic #270 // Method java/lang/Math.abs:(F)F + 109: fneg + 110: fstore 9 + 112: fload 6 + 114: ldc_w #257 // float 3.1415927f + 117: fmul + 118: invokestatic #261 // Method net/minecraft/util/Mth.m_14031_:(F)F + 121: fload 7 + 123: fmul + 124: ldc_w #271 // float 3.0f + 127: fmul + 128: fstore 10 + 130: fload 6 + 132: ldc_w #257 // float 3.1415927f + 135: fmul + 136: ldc_w #272 // float 0.2f + 139: fsub + 140: invokestatic #265 // Method net/minecraft/util/Mth.m_14089_:(F)F + 143: fload 7 + 145: fmul + 146: invokestatic #270 // Method java/lang/Math.abs:(F)F + 149: ldc_w #273 // float 5.0f + 152: fmul + 153: fstore 11 + 155: aload_0 + 156: invokevirtual #277 // Method net/minecraftforge/client/event/RenderHandEvent.getPoseStack:()Lcom/mojang/blaze3d/vertex/PoseStack; + 159: astore 12 + 161: aload 12 + 163: getstatic #283 // Field com/mojang/math/Axis.f_252529_:Lcom/mojang/math/Axis; + 166: fload 11 + 168: fneg + 169: invokeinterface #287, 2 // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf; + 174: invokevirtual #293 // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V + 177: aload 12 + 179: getstatic #296 // Field com/mojang/math/Axis.f_252403_:Lcom/mojang/math/Axis; + 182: fload 10 + 184: fneg + 185: invokeinterface #287, 2 // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf; + 190: invokevirtual #293 // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V + 193: aload 12 + 195: fload 8 + 197: fneg + 198: f2d + 199: fload 9 + 201: fneg + 202: f2d + 203: dconst_0 + 204: invokevirtual #300 // Method com/mojang/blaze3d/vertex/PoseStack.m_85837_:(DDD)V + 207: aload 12 + 209: fload 8 + 211: fload_2 + 212: fmul + 213: f2d + 214: fload 9 + 216: fload_2 + 217: fmul + 218: f2d + 219: dconst_0 + 220: invokevirtual #300 // Method com/mojang/blaze3d/vertex/PoseStack.m_85837_:(DDD)V + 223: aload 12 + 225: getstatic #296 // Field com/mojang/math/Axis.f_252403_:Lcom/mojang/math/Axis; + 228: fload 10 + 230: fload_2 + 231: fmul + 232: invokeinterface #287, 2 // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf; + 237: invokevirtual #293 // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V + 240: aload 12 + 242: getstatic #283 // Field com/mojang/math/Axis.f_252529_:Lcom/mojang/math/Axis; + 245: fload 11 + 247: fload_2 + 248: fmul + 249: invokeinterface #287, 2 // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf; + 254: invokevirtual #293 // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V + 257: return + + public static void onClientTick(net.minecraftforge.event.TickEvent$ClientTickEvent); + Code: + 0: aload_0 + 1: getfield #317 // Field net/minecraftforge/event/TickEvent$ClientTickEvent.phase:Lnet/minecraftforge/event/TickEvent$Phase; + 4: getstatic #320 // Field net/minecraftforge/event/TickEvent$Phase.END:Lnet/minecraftforge/event/TickEvent$Phase; + 7: if_acmpne 28 + 10: invokestatic #325 // Method com/ogaba/sa_combat/client/sound/ChainsawSoundManager.tick:()V + 13: invokestatic #326 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.tick:()V + 16: invokestatic #329 // Method tickNailGunThirdPersonSounds:()V + 19: invokestatic #332 // Method tickNailGunTrigger:()V + 22: invokestatic #335 // Method tickNailGunReloadKey:()V + 25: invokestatic #338 // Method tickCrossbowAmmoCycle:()V + 28: return + + public static void onRenderPlayerPre(net.minecraftforge.client.event.RenderPlayerEvent$Pre); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 6: astore_1 + 7: aload_1 + 8: ifnull 19 + 11: aload_0 + 12: invokevirtual #345 // Method net/minecraftforge/client/event/RenderPlayerEvent$Pre.getEntity:()Lnet/minecraft/world/entity/player/Player; + 15: aload_1 + 16: if_acmpeq 20 + 19: return + 20: aload_1 + 21: invokevirtual #348 // Method net/minecraft/client/player/AbstractClientPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 24: astore_2 + 25: aload_2 + 26: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 29: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 32: ifne 36 + 35: return + 36: invokestatic #190 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F + 39: ldc_w #349 // float 0.01f + 42: fcmpl + 43: ifgt 53 + 46: aload_1 + 47: invokevirtual #352 // Method net/minecraft/client/player/AbstractClientPlayer.m_6117_:()Z + 50: ifeq 57 + 53: iconst_1 + 54: goto 58 + 57: iconst_0 + 58: istore_3 + 59: iload_3 + 60: ifne 64 + 63: return + 64: aload_0 + 65: invokevirtual #356 // Method net/minecraftforge/client/event/RenderPlayerEvent$Pre.getRenderer:()Lnet/minecraft/client/renderer/entity/player/PlayerRenderer; + 68: invokevirtual #362 // Method net/minecraft/client/renderer/entity/player/PlayerRenderer.m_7200_:()Lnet/minecraft/client/model/EntityModel; + 71: checkcast #364 // class net/minecraft/client/model/PlayerModel + 74: astore 4 + 76: aload_1 + 77: invokevirtual #368 // Method net/minecraft/client/player/AbstractClientPlayer.m_5737_:()Lnet/minecraft/world/entity/HumanoidArm; + 80: astore 5 + 82: aload 5 + 84: getstatic #374 // Field net/minecraft/world/entity/HumanoidArm.RIGHT:Lnet/minecraft/world/entity/HumanoidArm; + 87: if_acmpne 109 + 90: aload 4 + 92: getstatic #380 // Field com/ogaba/sa_combat/client/SACombatArmPoses.NAIL_GUN_AIM:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 95: putfield #383 // Field net/minecraft/client/model/PlayerModel.f_102816_:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 98: aload 4 + 100: getstatic #386 // Field net/minecraft/client/model/HumanoidModel$ArmPose.ITEM:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 103: putfield #389 // Field net/minecraft/client/model/PlayerModel.f_102815_:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 106: goto 125 + 109: aload 4 + 111: getstatic #380 // Field com/ogaba/sa_combat/client/SACombatArmPoses.NAIL_GUN_AIM:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 114: putfield #389 // Field net/minecraft/client/model/PlayerModel.f_102815_:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 117: aload 4 + 119: getstatic #386 // Field net/minecraft/client/model/HumanoidModel$ArmPose.ITEM:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 122: putfield #383 // Field net/minecraft/client/model/PlayerModel.f_102816_:Lnet/minecraft/client/model/HumanoidModel$ArmPose; + 125: return + + public static void onNailGunAimMovement(net.minecraftforge.client.event.MovementInputUpdateEvent); + Code: + 0: aload_0 + 1: invokevirtual #403 // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getEntity:()Lnet/minecraft/world/entity/player/Player; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 9: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 12: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 15: ifne 19 + 18: return + 19: invokestatic #190 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F + 22: fstore_2 + 23: fload_2 + 24: ldc_w #349 // float 0.01f + 27: fcmpg + 28: ifgt 32 + 31: return + 32: invokestatic #406 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getMovementMultiplier:()F + 35: fstore_3 + 36: aload_0 + 37: invokevirtual #410 // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getInput:()Lnet/minecraft/client/player/Input; + 40: dup + 41: getfield #415 // Field net/minecraft/client/player/Input.f_108566_:F + 44: fload_3 + 45: fmul + 46: putfield #415 // Field net/minecraft/client/player/Input.f_108566_:F + 49: aload_0 + 50: invokevirtual #410 // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getInput:()Lnet/minecraft/client/player/Input; + 53: dup + 54: getfield #418 // Field net/minecraft/client/player/Input.f_108567_:F + 57: fload_3 + 58: fmul + 59: putfield #418 // Field net/minecraft/client/player/Input.f_108567_:F + 62: fload_2 + 63: ldc_w #419 // float 0.05f + 66: fcmpl + 67: ifle 82 + 70: aload_1 + 71: invokevirtual #422 // Method net/minecraft/world/entity/player/Player.m_20142_:()Z + 74: ifeq 82 + 77: aload_1 + 78: iconst_0 + 79: invokevirtual #425 // Method net/minecraft/world/entity/player/Player.m_6858_:(Z)V + 82: return + + private static void tickCrossbowAmmoCycle(); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: aload_0 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_1 + 9: aload_1 + 10: ifnull 20 + 13: aload_0 + 14: getfield #432 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 17: ifnull 25 + 20: iconst_0 + 21: putstatic #434 // Field crossbowCycleWasDown:Z + 24: return + 25: aload_1 + 26: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 29: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 32: instanceof #46 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 35: ifne 51 + 38: aload_1 + 39: invokevirtual #157 // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 42: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 45: instanceof #46 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 48: ifeq 55 + 51: iconst_1 + 52: goto 56 + 55: iconst_0 + 56: istore_2 + 57: iload_2 + 58: ifne 66 + 61: iconst_0 + 62: putstatic #434 // Field crossbowCycleWasDown:Z + 65: return + 66: aload_0 + 67: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 70: getfield #438 // Field net/minecraft/client/Options.f_92096_:Lnet/minecraft/client/KeyMapping; + 73: invokevirtual #443 // Method net/minecraft/client/KeyMapping.m_90857_:()Z + 76: ifeq 90 + 79: aload_1 + 80: invokevirtual #446 // Method net/minecraft/world/entity/player/Player.m_6144_:()Z + 83: ifeq 90 + 86: iconst_1 + 87: goto 91 + 90: iconst_0 + 91: istore_3 + 92: getstatic #434 // Field crossbowCycleWasDown:Z + 95: istore 4 + 97: iload_3 + 98: putstatic #434 // Field crossbowCycleWasDown:Z + 101: iload_3 + 102: ifeq 123 + 105: iload 4 + 107: ifne 123 + 110: getstatic #452 // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel; + 113: new #454 // class com/ogaba/sa_combat/network/packet/CycleBoltTypeC2SPacket + 116: dup + 117: invokespecial #455 // Method com/ogaba/sa_combat/network/packet/CycleBoltTypeC2SPacket."":()V + 120: invokevirtual #461 // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V + 123: return + + public static void onNailGunInteractionKey(net.minecraftforge.client.event.InputEvent$InteractionKeyMappingTriggered); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_1 + 4: aload_1 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_2 + 9: aload_2 + 10: ifnull 33 + 13: aload_1 + 14: getfield #432 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 17: ifnonnull 33 + 20: aload_2 + 21: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 24: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 27: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 30: ifne 34 + 33: return + 34: aload_0 + 35: invokevirtual #472 // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.isAttack:()Z + 38: ifne 48 + 41: aload_0 + 42: invokevirtual #475 // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.isUseItem:()Z + 45: ifeq 58 + 48: aload_0 + 49: iconst_0 + 50: invokevirtual #478 // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.setSwingHand:(Z)V + 53: aload_0 + 54: iconst_1 + 55: invokevirtual #479 // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.setCanceled:(Z)V + 58: return + + private static void tickNailGunThirdPersonSounds(); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: aload_0 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_1 + 9: aload_1 + 10: ifnull 33 + 13: aload_0 + 14: getfield #432 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 17: ifnonnull 33 + 20: aload_0 + 21: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 24: invokevirtual #484 // Method net/minecraft/client/Options.m_92176_:()Lnet/minecraft/client/CameraType; + 27: invokevirtual #489 // Method net/minecraft/client/CameraType.m_90612_:()Z + 30: ifeq 44 + 33: ldc2_w #490 // long -9223372036854775808l + 36: putstatic #493 // Field thirdPersonNailGunStackId:J + 39: iconst_0 + 40: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 43: return + 44: aload_1 + 45: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 48: astore_2 + 49: aload_2 + 50: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 53: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 56: ifne 70 + 59: ldc2_w #490 // long -9223372036854775808l + 62: putstatic #493 // Field thirdPersonNailGunStackId:J + 65: iconst_0 + 66: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 69: return + 70: aload_2 + 71: invokestatic #501 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 74: lstore_3 + 75: getstatic #493 // Field thirdPersonNailGunStackId:J + 78: lload_3 + 79: lcmp + 80: ifeq 125 + 83: lload_3 + 84: putstatic #493 // Field thirdPersonNailGunStackId:J + 87: iconst_0 + 88: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 91: aload_1 + 92: invokevirtual #505 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 95: aload_1 + 96: invokevirtual #509 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 99: aload_1 + 100: invokevirtual #512 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 103: aload_1 + 104: invokevirtual #515 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 107: getstatic #521 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_DRAW:Lnet/minecraftforge/registries/RegistryObject; + 110: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 113: checkcast #528 // class net/minecraft/sounds/SoundEvent + 116: getstatic #534 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 119: fconst_1 + 120: fconst_1 + 121: iconst_0 + 122: invokevirtual #540 // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V + 125: aload_2 + 126: invokestatic #544 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 129: ifne 139 + 132: aload_2 + 133: invokestatic #547 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 136: ifeq 143 + 139: iconst_1 + 140: goto 144 + 143: iconst_0 + 144: istore 5 + 146: iload 5 + 148: ifeq 191 + 151: getstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 154: ifne 191 + 157: aload_1 + 158: invokevirtual #505 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 161: aload_1 + 162: invokevirtual #509 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 165: aload_1 + 166: invokevirtual #512 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 169: aload_1 + 170: invokevirtual #515 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 173: getstatic #550 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD:Lnet/minecraftforge/registries/RegistryObject; + 176: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 179: checkcast #528 // class net/minecraft/sounds/SoundEvent + 182: getstatic #534 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 185: fconst_1 + 186: fconst_1 + 187: iconst_0 + 188: invokevirtual #540 // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V + 191: iload 5 + 193: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 196: return + + private static void tickNailGunTrigger(); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: aload_0 + 5: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 8: astore_1 + 9: aload_1 + 10: ifnull 20 + 13: aload_0 + 14: getfield #432 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 17: ifnull 29 + 20: iconst_0 + 21: putstatic #555 // Field nailGunTriggerWasDown:Z + 24: fconst_0 + 25: putstatic #557 // Field nailGunAutoFireAccumulator:F + 28: return + 29: aload_1 + 30: invokestatic #561 // Method resolveNailGunHand:(Lnet/minecraft/world/entity/player/Player;)Lnet/minecraft/world/InteractionHand; + 33: astore_2 + 34: aload_2 + 35: ifnonnull 47 + 38: iconst_0 + 39: putstatic #555 // Field nailGunTriggerWasDown:Z + 42: fconst_0 + 43: putstatic #557 // Field nailGunAutoFireAccumulator:F + 46: return + 47: aload_1 + 48: aload_2 + 49: invokevirtual #565 // Method net/minecraft/world/entity/player/Player.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack; + 52: astore_3 + 53: aload_0 + 54: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 57: getfield #438 // Field net/minecraft/client/Options.f_92096_:Lnet/minecraft/client/KeyMapping; + 60: invokevirtual #443 // Method net/minecraft/client/KeyMapping.m_90857_:()Z + 63: istore 4 + 65: getstatic #555 // Field nailGunTriggerWasDown:Z + 68: istore 5 + 70: iload 4 + 72: putstatic #555 // Field nailGunTriggerWasDown:Z + 75: iload 4 + 77: ifeq 101 + 80: aload_3 + 81: invokestatic #544 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 84: ifne 101 + 87: aload_3 + 88: invokestatic #547 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 91: ifne 101 + 94: aload_1 + 95: invokevirtual #422 // Method net/minecraft/world/entity/player/Player.m_20142_:()Z + 98: ifeq 106 + 101: fconst_0 + 102: putstatic #557 // Field nailGunAutoFireAccumulator:F + 105: return + 106: iload 5 + 108: ifne 121 + 111: iconst_1 + 112: istore 6 + 114: fconst_0 + 115: putstatic #557 // Field nailGunAutoFireAccumulator:F + 118: goto 159 + 121: getstatic #557 // Field nailGunAutoFireAccumulator:F + 124: ldc_w #566 // float 0.6f + 127: fadd + 128: putstatic #557 // Field nailGunAutoFireAccumulator:F + 131: getstatic #557 // Field nailGunAutoFireAccumulator:F + 134: fconst_1 + 135: fcmpl + 136: iflt 143 + 139: iconst_1 + 140: goto 144 + 143: iconst_0 + 144: istore 6 + 146: iload 6 + 148: ifeq 159 + 151: getstatic #557 // Field nailGunAutoFireAccumulator:F + 154: fconst_1 + 155: fsub + 156: putstatic #557 // Field nailGunAutoFireAccumulator:F + 159: iload 6 + 161: ifeq 171 + 164: aload_3 + 165: invokestatic #570 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 168: ifgt 172 + 171: return + 172: aload_3 + 173: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 176: checkcast #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 179: aload_1 + 180: invokevirtual #505 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 183: aload_1 + 184: aload_3 + 185: aload_2 + 186: invokevirtual #574 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.fire:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/InteractionHand;)V + 189: aload_1 + 190: invokevirtual #505 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 193: aload_1 + 194: aload_3 + 195: invokestatic #578 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.playLocalShotSound:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;)V + 198: getstatic #452 // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel; + 201: new #580 // class com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket + 204: dup + 205: aload_2 + 206: invokestatic #190 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F + 209: invokespecial #583 // Method com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket."":(Lnet/minecraft/world/InteractionHand;F)V + 212: invokevirtual #461 // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V + 215: return + + private static void tickNailGunReloadKey(); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: getstatic #590 // Field com/ogaba/sa_combat/client/ModKeyBindings.RELOAD_NAIL_GUN:Lnet/minecraft/client/KeyMapping; + 7: invokevirtual #593 // Method net/minecraft/client/KeyMapping.m_90859_:()Z + 10: ifeq 150 + 13: aload_0 + 14: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 17: astore_1 + 18: aload_1 + 19: ifnonnull 26 + 22: aconst_null + 23: goto 30 + 26: aload_1 + 27: invokestatic #561 // Method resolveNailGunHand:(Lnet/minecraft/world/entity/player/Player;)Lnet/minecraft/world/InteractionHand; + 30: astore_2 + 31: aload_1 + 32: ifnull 4 + 35: aload_2 + 36: ifnonnull 42 + 39: goto 4 + 42: aload_1 + 43: aload_2 + 44: invokevirtual #565 // Method net/minecraft/world/entity/player/Player.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack; + 47: astore_3 + 48: aload_3 + 49: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 52: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 55: ifne 61 + 58: goto 4 + 61: aload_1 + 62: invokevirtual #597 // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities; + 65: getfield #602 // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z + 68: ifne 78 + 71: aload_1 + 72: invokestatic #606 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.countReserveAmmo:(Lnet/minecraft/world/entity/player/Player;)I + 75: ifle 82 + 78: iconst_1 + 79: goto 83 + 82: iconst_0 + 83: istore 4 + 85: aload_3 + 86: invokestatic #544 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 89: ifne 119 + 92: aload_3 + 93: invokestatic #547 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 96: ifne 119 + 99: aload_3 + 100: invokestatic #570 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 103: aload_3 + 104: invokestatic #609 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.magazineCapacity:(Lnet/minecraft/world/item/ItemStack;)I + 107: if_icmpge 119 + 110: iload 4 + 112: ifeq 119 + 115: iconst_1 + 116: goto 120 + 119: iconst_0 + 120: istore 5 + 122: iload 5 + 124: ifne 130 + 127: goto 4 + 130: aload_3 + 131: invokestatic #613 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.markClientReloadAnimation:(Lnet/minecraft/world/item/ItemStack;)V + 134: getstatic #452 // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel; + 137: new #615 // class com/ogaba/sa_combat/network/packet/ReloadNailGunC2SPacket + 140: dup + 141: invokespecial #616 // Method com/ogaba/sa_combat/network/packet/ReloadNailGunC2SPacket."":()V + 144: invokevirtual #461 // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V + 147: goto 4 + 150: return + + private static net.minecraft.world.InteractionHand resolveNailGunHand(net.minecraft.world.entity.player.Player); + Code: + 0: aload_0 + 1: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 4: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 7: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 10: ifeq 17 + 13: getstatic #179 // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand; + 16: areturn + 17: aconst_null + 18: areturn + + public static void onItemTooltip(net.minecraftforge.event.entity.player.ItemTooltipEvent); + Code: + 0: aload_0 + 1: invokevirtual #626 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getItemStack:()Lnet/minecraft/world/item/ItemStack; + 4: astore_1 + 5: aload_1 + 6: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 9: ifne 19 + 12: aload_1 + 13: invokestatic #634 // Method com/ogaba/sa_combat/combat/weapon/WeaponSlotProfile.isUpgradeableWeapon:(Lnet/minecraft/world/item/ItemStack;)Z + 16: ifne 20 + 19: return + 20: aload_1 + 21: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 24: instanceof #636 // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon + 27: istore_2 + 28: iload_2 + 29: ifne 70 + 32: aload_1 + 33: invokestatic #641 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAnyAttachment:(Lnet/minecraft/world/item/ItemStack;)Z + 36: ifne 70 + 39: aload_1 + 40: invokestatic #646 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.hasModifier:(Lnet/minecraft/world/item/ItemStack;)Z + 43: ifne 70 + 46: aload_1 + 47: invokestatic #650 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getAttributeUpgrades:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 50: invokeinterface #655, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 55: ifeq 70 + 58: aload_1 + 59: invokestatic #658 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getAbilityUpgrades:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 62: invokeinterface #655, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 67: ifne 74 + 70: iconst_1 + 71: goto 75 + 74: iconst_0 + 75: istore_3 + 76: iload_3 + 77: ifne 81 + 80: return + 81: aload_0 + 82: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 85: invokestatic #666 // Method removeAttributeLinesBeforeMainHandHeader:(Ljava/util/List;)V + 88: aload_0 + 89: aload_1 + 90: invokestatic #670 // Method replaceMainHandAttributeTooltip:(Lnet/minecraftforge/event/entity/player/ItemTooltipEvent;Lnet/minecraft/world/item/ItemStack;)V + 93: iload_2 + 94: ifne 132 + 97: aload_1 + 98: invokestatic #675 // Method com/ogaba/sa_combat/combat/weapon/WeaponTooltipHelper.buildExternalTooltip:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 101: astore 4 + 103: aload 4 + 105: invokeinterface #655, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 110: ifne 132 + 113: aload_0 + 114: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 117: aload_0 + 118: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 121: invokestatic #679 // Method findVanillaAttributeInsertIndex:(Ljava/util/List;)I + 124: aload 4 + 126: invokeinterface #683, 3 // InterfaceMethod java/util/List.addAll:(ILjava/util/Collection;)Z + 131: pop + 132: aload_0 + 133: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 136: invokestatic #666 // Method removeAttributeLinesBeforeMainHandHeader:(Ljava/util/List;)V + 139: return + + private static void removeAttributeLinesBeforeMainHandHeader(java.util.List); + Code: + 0: aload_0 + 1: invokestatic #693 // Method findMainHandHeaderIndex:(Ljava/util/List;)I + 4: istore_1 + 5: iload_1 + 6: ifge 10 + 9: return + 10: iload_1 + 11: iconst_1 + 12: isub + 13: istore_2 + 14: iload_2 + 15: iconst_1 + 16: if_icmplt 137 + 19: aload_0 + 20: iload_2 + 21: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 26: checkcast #698 // class net/minecraft/network/chat/Component + 29: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 34: astore_3 + 35: aload_3 + 36: invokestatic #706 // Method isMainHandAttributeLine:(Ljava/lang/String;)Z + 39: ifeq 131 + 42: aload_0 + 43: iload_2 + 44: invokeinterface #709, 2 // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object; + 49: pop + 50: iload_2 + 51: aload_0 + 52: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 57: if_icmpge 92 + 60: aload_0 + 61: iload_2 + 62: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 67: checkcast #698 // class net/minecraft/network/chat/Component + 70: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 75: invokevirtual #718 // Method java/lang/String.isBlank:()Z + 78: ifeq 92 + 81: aload_0 + 82: iload_2 + 83: invokeinterface #709, 2 // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object; + 88: pop + 89: goto 131 + 92: iload_2 + 93: iconst_1 + 94: isub + 95: ifle 131 + 98: aload_0 + 99: iload_2 + 100: iconst_1 + 101: isub + 102: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 107: checkcast #698 // class net/minecraft/network/chat/Component + 110: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 115: invokevirtual #718 // Method java/lang/String.isBlank:()Z + 118: ifeq 131 + 121: aload_0 + 122: iload_2 + 123: iconst_1 + 124: isub + 125: invokeinterface #709, 2 // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object; + 130: pop + 131: iinc 2, -1 + 134: goto 14 + 137: return + + private static void replaceMainHandAttributeTooltip(net.minecraftforge.event.entity.player.ItemTooltipEvent, net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #662 // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List; + 4: astore_2 + 5: aload_2 + 6: invokestatic #693 // Method findMainHandHeaderIndex:(Ljava/util/List;)I + 9: istore_3 + 10: iload_3 + 11: ifge 15 + 14: return + 15: iload_3 + 16: iconst_1 + 17: iadd + 18: istore 4 + 20: iload 4 + 22: aload_2 + 23: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 28: if_icmpge 55 + 31: aload_2 + 32: iload 4 + 34: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 39: checkcast #698 // class net/minecraft/network/chat/Component + 42: aload_1 + 43: invokestatic #727 // Method isTooltipTechnicalTail:(Lnet/minecraft/network/chat/Component;Lnet/minecraft/world/item/ItemStack;)Z + 46: ifne 55 + 49: iinc 4, 1 + 52: goto 20 + 55: aload_2 + 56: iload_3 + 57: iload 4 + 59: invokeinterface #731, 3 // InterfaceMethod java/util/List.subList:(II)Ljava/util/List; + 64: invokeinterface #734, 1 // InterfaceMethod java/util/List.clear:()V + 69: aload_2 + 70: iload_3 + 71: aload_1 + 72: invokestatic #737 // Method buildUnifiedMainHandAttributeTooltip:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List; + 75: invokeinterface #683, 3 // InterfaceMethod java/util/List.addAll:(ILjava/util/Collection;)Z + 80: pop + 81: return + + private static boolean isTooltipTechnicalTail(net.minecraft.network.chat.Component, net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: ifnonnull 6 + 4: iconst_0 + 5: ireturn + 6: aload_0 + 7: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 12: invokevirtual #741 // Method java/lang/String.trim:()Ljava/lang/String; + 15: astore_2 + 16: aload_2 + 17: invokevirtual #742 // Method java/lang/String.isEmpty:()Z + 20: ifeq 25 + 23: iconst_0 + 24: ireturn + 25: aload_1 + 26: invokevirtual #745 // Method net/minecraft/world/item/ItemStack.m_41763_:()Z + 29: ifeq 93 + 32: aload_1 + 33: invokevirtual #748 // Method net/minecraft/world/item/ItemStack.m_41768_:()Z + 36: ifeq 93 + 39: ldc_w #750 // String item.durability + 42: iconst_2 + 43: anewarray #4 // class java/lang/Object + 46: dup + 47: iconst_0 + 48: aload_1 + 49: invokevirtual #753 // Method net/minecraft/world/item/ItemStack.m_41776_:()I + 52: aload_1 + 53: invokevirtual #756 // Method net/minecraft/world/item/ItemStack.m_41773_:()I + 56: isub + 57: invokestatic #762 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 60: aastore + 61: dup + 62: iconst_1 + 63: aload_1 + 64: invokevirtual #753 // Method net/minecraft/world/item/ItemStack.m_41776_:()I + 67: invokestatic #762 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer; + 70: aastore + 71: invokestatic #766 // InterfaceMethod net/minecraft/network/chat/Component.m_237110_:(Ljava/lang/String;[Ljava/lang/Object;)Lnet/minecraft/network/chat/MutableComponent; + 74: astore_3 + 75: aload_2 + 76: aload_3 + 77: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 82: invokevirtual #741 // Method java/lang/String.trim:()Ljava/lang/String; + 85: invokevirtual #770 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 88: ifeq 93 + 91: iconst_1 + 92: ireturn + 93: aload_2 + 94: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 97: invokevirtual #780 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 100: astore_3 + 101: aload_3 + 102: ldc_w #782 // String nbt + 105: invokevirtual #785 // Method java/lang/String.startsWith:(Ljava/lang/String;)Z + 108: ifeq 113 + 111: iconst_1 + 112: ireturn + 113: aload_3 + 114: ldc_w #787 // String [a-z0-9_.-]+:[a-z0-9_./-]+ + 117: invokevirtual #790 // Method java/lang/String.matches:(Ljava/lang/String;)Z + 120: ireturn + + private static java.util.List buildUnifiedMainHandAttributeTooltip(net.minecraft.world.item.ItemStack); + Code: + 0: new #797 // class java/util/ArrayList + 3: dup + 4: invokespecial #798 // Method java/util/ArrayList."":()V + 7: astore_1 + 8: aload_1 + 9: ldc_w #800 // String item.modifiers.mainhand + 12: invokestatic #804 // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 15: getstatic #810 // Field net/minecraft/ChatFormatting.GRAY:Lnet/minecraft/ChatFormatting; + 18: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 21: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 26: pop + 27: aload_0 + 28: invokestatic #823 // Method totalAttackDamage:(Lnet/minecraft/world/item/ItemStack;)D + 31: dstore_2 + 32: dload_2 + 33: dconst_0 + 34: dcmpl + 35: ifle 63 + 38: aload_1 + 39: dload_2 + 40: invokestatic #827 // Method fmtAttribute:(D)Ljava/lang/String; + 43: invokedynamic #839, 0 // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 48: invokestatic #842 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 51: getstatic #845 // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting; + 54: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 57: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 62: pop + 63: aload_0 + 64: invokestatic #848 // Method totalAttackSpeed:(Lnet/minecraft/world/item/ItemStack;)D + 67: dstore 4 + 69: aload_1 + 70: dload 4 + 72: invokestatic #827 // Method fmtAttribute:(D)Ljava/lang/String; + 75: invokedynamic #851, 0 // InvokeDynamic #1:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 80: invokestatic #842 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 83: getstatic #845 // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting; + 86: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 89: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 94: pop + 95: aload_0 + 96: invokestatic #854 // Method totalAttackKnockback:(Lnet/minecraft/world/item/ItemStack;)D + 99: dstore 6 + 101: dload 6 + 103: invokestatic #857 // Method java/lang/Math.abs:(D)D + 106: ldc2_w #858 // double 0.001d + 109: dcmpl + 110: ifle 139 + 113: aload_1 + 114: dload 6 + 116: invokestatic #827 // Method fmtAttribute:(D)Ljava/lang/String; + 119: invokedynamic #862, 0 // InvokeDynamic #2:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 124: invokestatic #842 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 127: getstatic #845 // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting; + 130: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 133: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 138: pop + 139: aload_0 + 140: invokestatic #865 // Method totalAttackReach:(Lnet/minecraft/world/item/ItemStack;)D + 143: dstore 8 + 145: aload_1 + 146: dload 8 + 148: invokestatic #827 // Method fmtAttribute:(D)Ljava/lang/String; + 151: invokedynamic #868, 0 // InvokeDynamic #3:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 156: invokestatic #842 // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent; + 159: getstatic #845 // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting; + 162: invokevirtual #816 // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent; + 165: invokeinterface #819, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 170: pop + 171: aload_1 + 172: areturn + + private static boolean isMainHandAttributeLine(java.lang.String); + Code: + 0: aload_0 + 1: ifnull 11 + 4: aload_0 + 5: invokevirtual #718 // Method java/lang/String.isBlank:()Z + 8: ifeq 13 + 11: iconst_0 + 12: ireturn + 13: aload_0 + 14: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 17: invokevirtual #780 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 20: astore_1 + 21: aload_1 + 22: ldc_w #876 // String attack damage + 25: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 28: ifne 121 + 31: aload_1 + 32: ldc_w #882 // String attack speed + 35: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 38: ifne 121 + 41: aload_1 + 42: ldc_w #884 // String attack range + 45: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 48: ifne 121 + 51: aload_1 + 52: ldc_w #886 // String entity reach + 55: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 58: ifne 121 + 61: aload_1 + 62: ldc_w #888 // String attack knockback + 65: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 68: ifne 121 + 71: aload_1 + 72: ldc_w #890 // String dano de ataque + 75: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 78: ifne 121 + 81: aload_1 + 82: ldc_w #892 // String velocidade de ataque + 85: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 88: ifne 121 + 91: aload_1 + 92: ldc_w #894 // String alcance de ataque + 95: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 98: ifne 121 + 101: aload_1 + 102: ldc_w #896 // String repuls + 105: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 108: ifne 121 + 111: aload_1 + 112: ldc_w #897 // String knockback + 115: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 118: ifeq 125 + 121: iconst_1 + 122: goto 126 + 125: iconst_0 + 126: ireturn + + private static int findMainHandHeaderIndex(java.util.List); + Code: + 0: iconst_1 + 1: istore_1 + 2: iload_1 + 3: aload_0 + 4: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 9: if_icmpge 49 + 12: aload_0 + 13: iload_1 + 14: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 19: checkcast #698 // class net/minecraft/network/chat/Component + 22: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 27: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 30: invokevirtual #780 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 33: astore_2 + 34: aload_2 + 35: invokestatic #902 // Method isMainHandHeader:(Ljava/lang/String;)Z + 38: ifeq 43 + 41: iload_1 + 42: ireturn + 43: iinc 1, 1 + 46: goto 2 + 49: iconst_m1 + 50: ireturn + + private static boolean isMainHandHeader(java.lang.String); + Code: + 0: aload_0 + 1: ldc_w #904 // String when in main hand + 4: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 7: ifne 40 + 10: aload_0 + 11: ldc_w #906 // String main hand + 14: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 17: ifne 40 + 20: aload_0 + 21: ldc_w #908 // String m?o principal + 24: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 27: ifne 40 + 30: aload_0 + 31: ldc_w #910 // String mao principal + 34: invokevirtual #880 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z + 37: ifeq 44 + 40: iconst_1 + 41: goto 45 + 44: iconst_0 + 45: ireturn + + private static double totalAttackDamage(net.minecraft.world.item.ItemStack); + Code: + 0: dconst_0 + 1: dstore_1 + 2: aload_0 + 3: getstatic #916 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 6: invokevirtual #920 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 9: getstatic #926 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22281_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 12: invokeinterface #931, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 17: invokeinterface #937, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 22: astore_3 + 23: aload_3 + 24: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 29: ifeq 54 + 32: aload_3 + 33: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 38: checkcast #947 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 41: astore 4 + 43: dload_1 + 44: aload 4 + 46: invokevirtual #950 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D + 49: dadd + 50: dstore_1 + 51: goto 23 + 54: dload_1 + 55: dconst_0 + 56: dcmpl + 57: ifle 66 + 60: dload_1 + 61: dconst_1 + 62: dadd + 63: goto 67 + 66: dconst_0 + 67: dreturn + + private static double totalAttackSpeed(net.minecraft.world.item.ItemStack); + Code: + 0: ldc2_w #954 // double 4.0d + 3: dstore_1 + 4: aload_0 + 5: getstatic #916 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 8: invokevirtual #920 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 11: getstatic #958 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22283_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 14: invokeinterface #931, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 19: invokeinterface #937, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 24: astore_3 + 25: aload_3 + 26: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 31: ifeq 56 + 34: aload_3 + 35: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 40: checkcast #947 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 43: astore 4 + 45: dload_1 + 46: aload 4 + 48: invokevirtual #950 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D + 51: dadd + 52: dstore_1 + 53: goto 25 + 56: dload_1 + 57: dreturn + + private static double totalAttackKnockback(net.minecraft.world.item.ItemStack); + Code: + 0: dconst_0 + 1: dstore_1 + 2: aload_0 + 3: getstatic #916 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 6: invokevirtual #920 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 9: getstatic #961 // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22282_:Lnet/minecraft/world/entity/ai/attributes/Attribute; + 12: invokeinterface #931, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 17: invokeinterface #937, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 22: astore_3 + 23: aload_3 + 24: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 29: ifeq 54 + 32: aload_3 + 33: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 38: checkcast #947 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 41: astore 4 + 43: dload_1 + 44: aload 4 + 46: invokevirtual #950 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D + 49: dadd + 50: dstore_1 + 51: goto 23 + 54: dload_1 + 55: dreturn + + private static double totalAttackReach(net.minecraft.world.item.ItemStack); + Code: + 0: ldc2_w #962 // double 2.5d + 3: dstore_1 + 4: aload_0 + 5: getstatic #916 // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot; + 8: invokevirtual #920 // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap; + 11: getstatic #968 // Field net/minecraftforge/common/ForgeMod.ENTITY_REACH:Lnet/minecraftforge/registries/RegistryObject; + 14: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 17: checkcast #970 // class net/minecraft/world/entity/ai/attributes/Attribute + 20: invokeinterface #931, 2 // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection; + 25: invokeinterface #937, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 30: astore_3 + 31: aload_3 + 32: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 37: ifeq 62 + 40: aload_3 + 41: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 46: checkcast #947 // class net/minecraft/world/entity/ai/attributes/AttributeModifier + 49: astore 4 + 51: dload_1 + 52: aload 4 + 54: invokevirtual #950 // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D + 57: dadd + 58: dstore_1 + 59: goto 31 + 62: dload_1 + 63: dreturn + + private static java.lang.String fmtAttribute(double); + Code: + 0: dload_0 + 1: dload_0 + 2: invokestatic #973 // Method java/lang/Math.rint:(D)D + 5: dsub + 6: invokestatic #857 // Method java/lang/Math.abs:(D)D + 9: ldc2_w #858 // double 0.001d + 12: dcmpg + 13: ifge 25 + 16: dload_0 + 17: invokestatic #973 // Method java/lang/Math.rint:(D)D + 20: d2i + 21: invokestatic #976 // Method java/lang/String.valueOf:(I)Ljava/lang/String; + 24: areturn + 25: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 28: ldc_w #978 // String %.2f + 31: iconst_1 + 32: anewarray #4 // class java/lang/Object + 35: dup + 36: iconst_0 + 37: dload_0 + 38: invokestatic #983 // Method java/lang/Double.valueOf:(D)Ljava/lang/Double; + 41: aastore + 42: invokestatic #987 // Method java/lang/String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; + 45: astore_2 + 46: aload_2 + 47: ldc_w #989 // String 0 + 50: invokevirtual #992 // Method java/lang/String.endsWith:(Ljava/lang/String;)Z + 53: ifeq 71 + 56: aload_2 + 57: iconst_0 + 58: aload_2 + 59: invokevirtual #995 // Method java/lang/String.length:()I + 62: iconst_1 + 63: isub + 64: invokevirtual #999 // Method java/lang/String.substring:(II)Ljava/lang/String; + 67: astore_2 + 68: goto 46 + 71: aload_2 + 72: ldc_w #1001 // String . + 75: invokevirtual #992 // Method java/lang/String.endsWith:(Ljava/lang/String;)Z + 78: ifeq 93 + 81: aload_2 + 82: iconst_0 + 83: aload_2 + 84: invokevirtual #995 // Method java/lang/String.length:()I + 87: iconst_1 + 88: isub + 89: invokevirtual #999 // Method java/lang/String.substring:(II)Ljava/lang/String; + 92: astore_2 + 93: aload_2 + 94: areturn + + private static int findVanillaAttributeInsertIndex(java.util.List); + Code: + 0: iconst_1 + 1: istore_1 + 2: iload_1 + 3: aload_0 + 4: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 9: if_icmpge 81 + 12: aload_0 + 13: iload_1 + 14: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 19: checkcast #698 // class net/minecraft/network/chat/Component + 22: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 27: getstatic #776 // Field java/util/Locale.ROOT:Ljava/util/Locale; + 30: invokevirtual #780 // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String; + 33: astore_2 + 34: aload_2 + 35: invokestatic #902 // Method isMainHandHeader:(Ljava/lang/String;)Z + 38: ifeq 75 + 41: iload_1 + 42: iconst_1 + 43: if_icmple 73 + 46: aload_0 + 47: iload_1 + 48: iconst_1 + 49: isub + 50: invokeinterface #696, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 55: checkcast #698 // class net/minecraft/network/chat/Component + 58: invokeinterface #702, 1 // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String; + 63: invokevirtual #742 // Method java/lang/String.isEmpty:()Z + 66: ifeq 73 + 69: iload_1 + 70: iconst_1 + 71: isub + 72: ireturn + 73: iload_1 + 74: ireturn + 75: iinc 1, 1 + 78: goto 2 + 81: aload_0 + 82: invokeinterface #713, 1 // InterfaceMethod java/util/List.size:()I + 87: ireturn + + public static void onRenderGuiOverlay(net.minecraftforge.client.event.RenderGuiOverlayEvent$Post); + Code: + 0: aload_0 + 1: invokevirtual #1007 // Method net/minecraftforge/client/event/RenderGuiOverlayEvent$Post.getOverlay:()Lnet/minecraftforge/client/gui/overlay/NamedGuiOverlay; + 4: invokevirtual #1013 // Method net/minecraftforge/client/gui/overlay/NamedGuiOverlay.id:()Lnet/minecraft/resources/ResourceLocation; + 7: getstatic #1019 // Field net/minecraftforge/client/gui/overlay/VanillaGuiOverlay.HOTBAR:Lnet/minecraftforge/client/gui/overlay/VanillaGuiOverlay; + 10: invokevirtual #1020 // Method net/minecraftforge/client/gui/overlay/VanillaGuiOverlay.id:()Lnet/minecraft/resources/ResourceLocation; + 13: invokevirtual #1023 // Method net/minecraft/resources/ResourceLocation.equals:(Ljava/lang/Object;)Z + 16: ifne 20 + 19: return + 20: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 23: astore_1 + 24: aload_1 + 25: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 28: ifnull 41 + 31: aload_1 + 32: getfield #214 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 35: getfield #1026 // Field net/minecraft/client/Options.f_92062_:Z + 38: ifeq 42 + 41: return + 42: aload_0 + 43: invokevirtual #1030 // Method net/minecraftforge/client/event/RenderGuiOverlayEvent$Post.getGuiGraphics:()Lnet/minecraft/client/gui/GuiGraphics; + 46: astore_2 + 47: aload_2 + 48: invokestatic #1034 // Method renderBallisticVestHud:(Lnet/minecraft/client/gui/GuiGraphics;)V + 51: aload_2 + 52: aload_1 + 53: invokestatic #1038 // Method renderGrenadeFuseHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V + 56: aload_2 + 57: aload_1 + 58: invokestatic #1041 // Method renderNailGunAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V + 61: aload_2 + 62: aload_1 + 63: invokestatic #1044 // Method renderCrossbowAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V + 66: aload_1 + 67: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 70: invokevirtual #1049 // Method net/minecraft/client/player/LocalPlayer.m_150108_:()Z + 73: ifne 100 + 76: getstatic #1051 // Field tacticalScopeProgress:F + 79: ldc_w #349 // float 0.01f + 82: fcmpl + 83: ifgt 96 + 86: aload_1 + 87: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 90: invokestatic #1057 // Method com/ogaba/sa_combat/client/scope/TacticalCrossbowScopeClient.isScopingWithScopedCrossbow:(Lnet/minecraft/client/player/LocalPlayer;)Z + 93: ifeq 100 + 96: aload_2 + 97: invokestatic #1062 // Method renderRealSpyglassOverlay:(Lnet/minecraft/client/gui/GuiGraphics;)V + 100: return + + private static void renderGrenadeFuseHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft); + Code: + 0: aload_1 + 1: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 4: astore_2 + 5: aload_2 + 6: ifnull 26 + 9: aload_2 + 10: invokevirtual #1066 // Method net/minecraft/world/entity/player/Player.m_6117_:()Z + 13: ifeq 26 + 16: aload_2 + 17: invokevirtual #1069 // Method net/minecraft/world/entity/player/Player.m_7655_:()Lnet/minecraft/world/InteractionHand; + 20: getstatic #179 // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand; + 23: if_acmpeq 27 + 26: return + 27: aload_2 + 28: invokevirtual #154 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 31: astore_3 + 32: aload_3 + 33: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 36: astore 5 + 38: aload 5 + 40: instanceof #165 // class com/ogaba/sa_combat/item/SpecialGrenadeItem + 43: ifeq 68 + 46: aload 5 + 48: checkcast #165 // class com/ogaba/sa_combat/item/SpecialGrenadeItem + 51: astore 4 + 53: aload 4 + 55: invokevirtual #1072 // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.hasCookableFuse:()Z + 58: ifeq 68 + 61: aload_3 + 62: invokestatic #1075 // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.isArmed:(Lnet/minecraft/world/item/ItemStack;)Z + 65: ifne 69 + 68: return + 69: aload_3 + 70: invokestatic #1079 // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.getFuseTimerProgress:(Lnet/minecraft/world/item/ItemStack;)F + 73: fstore 5 + 75: ldc_w #1080 // float 55.0f + 78: fload 5 + 80: fmul + 81: invokestatic #1084 // Method net/minecraft/util/Mth.m_14143_:(F)I + 84: iconst_0 + 85: bipush 55 + 87: invokestatic #1088 // Method net/minecraft/util/Mth.m_14045_:(III)I + 90: istore 6 + 92: aload_0 + 93: invokevirtual #1091 // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I + 96: bipush 64 + 98: isub + 99: iconst_2 + 100: idiv + 101: istore 7 + 103: aload_0 + 104: invokevirtual #1094 // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I + 107: iconst_2 + 108: idiv + 109: bipush 27 + 111: iadd + 112: istore 8 + 114: invokestatic #1099 // Method com/mojang/blaze3d/systems/RenderSystem.enableBlend:()V + 117: invokestatic #1102 // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V + 120: iload 6 + 122: ifle 151 + 125: aload_0 + 126: getstatic #1104 // Field GRENADE_FUSE_FILL:Lnet/minecraft/resources/ResourceLocation; + 129: iload 7 + 131: iconst_5 + 132: iadd + 133: iload 8 + 135: iconst_2 + 136: iadd + 137: ldc_w #273 // float 5.0f + 140: fconst_2 + 141: iload 6 + 143: iconst_4 + 144: bipush 64 + 146: bipush 10 + 148: invokevirtual #1108 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 151: aload_0 + 152: getstatic #1110 // Field GRENADE_FUSE_FRAME:Lnet/minecraft/resources/ResourceLocation; + 155: iload 7 + 157: iload 8 + 159: fconst_0 + 160: fconst_0 + 161: bipush 64 + 163: bipush 10 + 165: bipush 64 + 167: bipush 10 + 169: invokevirtual #1108 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 172: invokestatic #1113 // Method com/mojang/blaze3d/systems/RenderSystem.disableBlend:()V + 175: return + + private static void renderBallisticVestHud(net.minecraft.client.gui.GuiGraphics); + Code: + 0: invokestatic #1124 // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.shouldRender:()Z + 3: ifne 7 + 6: return + 7: iconst_1 + 8: invokestatic #1127 // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.getMaxProtection:()I + 11: invokestatic #1131 // Method java/lang/Math.max:(II)I + 14: istore_1 + 15: invokestatic #1134 // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.getProtection:()I + 18: iconst_0 + 19: iload_1 + 20: invokestatic #1088 // Method net/minecraft/util/Mth.m_14045_:(III)I + 23: istore_2 + 24: iload_2 + 25: i2f + 26: iload_1 + 27: i2f + 28: fdiv + 29: fconst_0 + 30: fconst_1 + 31: invokestatic #238 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 34: fstore_3 + 35: fload_3 + 36: ldc_w #1135 // float 16.0f + 39: fmul + 40: invokestatic #1138 // Method net/minecraft/util/Mth.m_14167_:(F)I + 43: istore 4 + 45: iload 4 + 47: iconst_0 + 48: bipush 16 + 50: invokestatic #1088 // Method net/minecraft/util/Mth.m_14045_:(III)I + 53: istore 4 + 55: bipush 20 + 57: istore 5 + 59: aload_0 + 60: invokevirtual #1094 // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I + 63: bipush 30 + 65: isub + 66: bipush 20 + 68: isub + 69: istore 6 + 71: ldc_w #1139 // float 1.875f + 74: fstore 7 + 76: ldc_w #1139 // float 1.875f + 79: fstore 8 + 81: aload_0 + 82: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 85: invokevirtual #1145 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 88: aload_0 + 89: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 92: iload 5 + 94: i2f + 95: iload 6 + 97: i2f + 98: fconst_0 + 99: invokevirtual #1149 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 102: aload_0 + 103: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 106: fload 7 + 108: fload 8 + 110: fconst_1 + 111: invokevirtual #1152 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 114: aload_0 + 115: getstatic #1154 // Field BALLISTIC_VEST_BG:Lnet/minecraft/resources/ResourceLocation; + 118: iconst_0 + 119: iconst_0 + 120: fconst_0 + 121: fconst_0 + 122: bipush 16 + 124: bipush 16 + 126: bipush 16 + 128: bipush 16 + 130: invokevirtual #1108 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 133: iload 4 + 135: ifle 167 + 138: bipush 16 + 140: iload 4 + 142: isub + 143: istore 9 + 145: aload_0 + 146: getstatic #1156 // Field BALLISTIC_VEST_FILL:Lnet/minecraft/resources/ResourceLocation; + 149: iconst_0 + 150: iload 9 + 152: fconst_0 + 153: iload 9 + 155: i2f + 156: bipush 16 + 158: iload 4 + 160: bipush 16 + 162: bipush 16 + 164: invokevirtual #1108 // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V + 167: aload_0 + 168: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 171: invokevirtual #1159 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 174: return + + private static void renderNailGunAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft); + Code: + 0: aload_1 + 1: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 4: ifnonnull 8 + 7: return + 8: aload_1 + 9: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 12: invokevirtual #1168 // Method net/minecraft/client/player/LocalPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 15: astore_2 + 16: aload_2 + 17: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 20: instanceof #167 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 23: ifne 27 + 26: return + 27: aload_2 + 28: invokestatic #570 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 31: istore_3 + 32: aload_1 + 33: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 36: invokestatic #1172 // Method refreshInventoryHudCache:(Lnet/minecraft/world/entity/player/Player;)V + 39: getstatic #1174 // Field cachedNailReserve:I + 42: istore 4 + 44: aload_0 + 45: aload_1 + 46: invokestatic #1177 // Method nailIconStack:()Lnet/minecraft/world/item/ItemStack; + 49: iload_3 + 50: invokestatic #976 // Method java/lang/String.valueOf:(I)Ljava/lang/String; + 53: iload 4 + 55: invokedynamic #1181, 0 // InvokeDynamic #4:makeConcatWithConstants:(I)Ljava/lang/String; + 60: iload_3 + 61: ifgt 68 + 64: iconst_1 + 65: goto 69 + 68: iconst_0 + 69: aload_2 + 70: invokestatic #544 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 73: ifne 83 + 76: aload_2 + 77: invokestatic #547 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 80: ifeq 87 + 83: iconst_1 + 84: goto 88 + 87: iconst_0 + 88: invokestatic #1185 // Method renderAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Ljava/lang/String;ZZ)V + 91: return + + private static void renderCrossbowAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft); + Code: + 0: aload_1 + 1: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 4: ifnonnull 8 + 7: return + 8: aload_1 + 9: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 12: invokevirtual #1168 // Method net/minecraft/client/player/LocalPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 15: astore_2 + 16: aload_2 + 17: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 20: instanceof #46 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 23: ifne 45 + 26: aload_1 + 27: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 30: invokevirtual #1188 // Method net/minecraft/client/player/LocalPlayer.m_21206_:()Lnet/minecraft/world/item/ItemStack; + 33: astore_2 + 34: aload_2 + 35: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 38: instanceof #46 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 41: ifne 45 + 44: return + 45: aload_2 + 46: invokestatic #1192 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.getSelectedBoltType:(Lnet/minecraft/world/item/ItemStack;)Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType; + 49: astore_3 + 50: aload_3 + 51: getstatic #1196 // Field com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType.IMPROVISED:Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType; + 54: if_acmpne 63 + 57: invokestatic #1199 // Method improvisedBoltIconStack:()Lnet/minecraft/world/item/ItemStack; + 60: goto 66 + 63: invokestatic #1202 // Method tacticalBoltIconStack:()Lnet/minecraft/world/item/ItemStack; + 66: astore 4 + 68: aload_1 + 69: getfield #148 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 72: invokestatic #1172 // Method refreshInventoryHudCache:(Lnet/minecraft/world/entity/player/Player;)V + 75: aload_3 + 76: getstatic #1196 // Field com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType.IMPROVISED:Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType; + 79: if_acmpne 88 + 82: getstatic #1204 // Field cachedImprovisedBoltReserve:I + 85: goto 91 + 88: getstatic #1206 // Field cachedTacticalBoltReserve:I + 91: istore 5 + 93: aload_2 + 94: invokestatic #1209 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoaded:(Lnet/minecraft/world/item/ItemStack;)Z + 97: istore 6 + 99: aload_2 + 100: invokestatic #1212 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoading:(Lnet/minecraft/world/item/ItemStack;)Z + 103: ifeq 117 + 106: aload_2 + 107: invokestatic #1215 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.hasAutoMechanism:(Lnet/minecraft/world/item/ItemStack;)Z + 110: ifne 117 + 113: iconst_1 + 114: goto 118 + 117: iconst_0 + 118: istore 7 + 120: aload_0 + 121: aload_1 + 122: aload 4 + 124: iload 6 + 126: ifeq 135 + 129: ldc_w #1217 // String 1 + 132: goto 138 + 135: ldc_w #989 // String 0 + 138: iload 5 + 140: invokedynamic #1181, 0 // InvokeDynamic #4:makeConcatWithConstants:(I)Ljava/lang/String; + 145: iload 6 + 147: ifne 159 + 150: iload 5 + 152: ifgt 159 + 155: iconst_1 + 156: goto 160 + 159: iconst_0 + 160: iload 7 + 162: invokestatic #1185 // Method renderAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Ljava/lang/String;ZZ)V + 165: return + + private static void refreshInventoryHudCache(net.minecraft.world.entity.player.Player); + Code: + 0: aload_0 + 1: ifnull 24 + 4: getstatic #1223 // Field cachedInventoryPlayerId:I + 7: aload_0 + 8: invokevirtual #1226 // Method net/minecraft/world/entity/player/Player.m_19879_:()I + 11: if_icmpne 25 + 14: getstatic #1228 // Field cachedInventoryTick:I + 17: aload_0 + 18: getfield #1231 // Field net/minecraft/world/entity/player/Player.f_19797_:I + 21: if_icmpne 25 + 24: return + 25: aload_0 + 26: invokevirtual #1226 // Method net/minecraft/world/entity/player/Player.m_19879_:()I + 29: putstatic #1223 // Field cachedInventoryPlayerId:I + 32: aload_0 + 33: getfield #1231 // Field net/minecraft/world/entity/player/Player.f_19797_:I + 36: putstatic #1228 // Field cachedInventoryTick:I + 39: iconst_0 + 40: putstatic #1174 // Field cachedNailReserve:I + 43: iconst_0 + 44: putstatic #1206 // Field cachedTacticalBoltReserve:I + 47: iconst_0 + 48: putstatic #1204 // Field cachedImprovisedBoltReserve:I + 51: aload_0 + 52: invokevirtual #1235 // Method net/minecraft/world/entity/player/Player.m_150109_:()Lnet/minecraft/world/entity/player/Inventory; + 55: getfield #1241 // Field net/minecraft/world/entity/player/Inventory.f_35974_:Lnet/minecraft/core/NonNullList; + 58: invokevirtual #1244 // Method net/minecraft/core/NonNullList.iterator:()Ljava/util/Iterator; + 61: astore_1 + 62: aload_1 + 63: invokeinterface #942, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 68: ifeq 186 + 71: aload_1 + 72: invokeinterface #945, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 77: checkcast #159 // class net/minecraft/world/item/ItemStack + 80: astore_2 + 81: aload_2 + 82: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 85: ifeq 91 + 88: goto 62 + 91: getstatic #1246 // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation; + 94: getstatic #1252 // Field net/minecraftforge/registries/ForgeRegistries.ITEMS:Lnet/minecraftforge/registries/IForgeRegistry; + 97: aload_2 + 98: invokevirtual #163 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 101: invokeinterface #1258, 2 // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getKey:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation; + 106: invokevirtual #1023 // Method net/minecraft/resources/ResourceLocation.equals:(Ljava/lang/Object;)Z + 109: ifeq 126 + 112: getstatic #1174 // Field cachedNailReserve:I + 115: aload_2 + 116: invokevirtual #1261 // Method net/minecraft/world/item/ItemStack.m_41613_:()I + 119: iadd + 120: putstatic #1174 // Field cachedNailReserve:I + 123: goto 183 + 126: aload_2 + 127: getstatic #1266 // Field com/ogaba/sa_combat/registry/ModItems.TACTICAL_BOLT:Lnet/minecraftforge/registries/RegistryObject; + 130: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 133: checkcast #1268 // class net/minecraft/world/item/Item + 136: invokevirtual #1272 // Method net/minecraft/world/item/ItemStack.m_150930_:(Lnet/minecraft/world/item/Item;)Z + 139: ifeq 156 + 142: getstatic #1206 // Field cachedTacticalBoltReserve:I + 145: aload_2 + 146: invokevirtual #1261 // Method net/minecraft/world/item/ItemStack.m_41613_:()I + 149: iadd + 150: putstatic #1206 // Field cachedTacticalBoltReserve:I + 153: goto 183 + 156: aload_2 + 157: getstatic #1275 // Field com/ogaba/sa_combat/registry/ModItems.IMPROVISED_BOLT:Lnet/minecraftforge/registries/RegistryObject; + 160: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 163: checkcast #1268 // class net/minecraft/world/item/Item + 166: invokevirtual #1272 // Method net/minecraft/world/item/ItemStack.m_150930_:(Lnet/minecraft/world/item/Item;)Z + 169: ifeq 183 + 172: getstatic #1204 // Field cachedImprovisedBoltReserve:I + 175: aload_2 + 176: invokevirtual #1261 // Method net/minecraft/world/item/ItemStack.m_41613_:()I + 179: iadd + 180: putstatic #1204 // Field cachedImprovisedBoltReserve:I + 183: goto 62 + 186: return + + private static void renderAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft, net.minecraft.world.item.ItemStack, java.lang.String, java.lang.String, boolean, boolean); + Code: + 0: ldc_w #1276 // float 1.4f + 3: fstore 7 + 5: ldc_w #1277 // float 1.8f + 8: fstore 8 + 10: ldc_w #1278 // float 1.2f + 13: fstore 9 + 15: ldc_w #1135 // float 16.0f + 18: fload 7 + 20: fmul + 21: invokestatic #1281 // Method java/lang/Math.round:(F)I + 24: istore 10 + 26: aload_1 + 27: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 30: aload_3 + 31: invokevirtual #1291 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 34: i2f + 35: fload 8 + 37: fmul + 38: invokestatic #1281 // Method java/lang/Math.round:(F)I + 41: istore 11 + 43: aload_1 + 44: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 47: aload 4 + 49: invokevirtual #1291 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 52: i2f + 53: fload 9 + 55: fmul + 56: invokestatic #1281 // Method java/lang/Math.round:(F)I + 59: istore 12 + 61: iload 10 + 63: bipush 8 + 65: iadd + 66: iload 11 + 68: iadd + 69: iconst_3 + 70: iadd + 71: iload 12 + 73: iadd + 74: istore 13 + 76: iload 10 + 78: aload_1 + 79: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 82: invokestatic #1297 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 85: pop + 86: ldc_w #1298 // float 9.0f + 89: fload 8 + 91: fmul + 92: invokestatic #1281 // Method java/lang/Math.round:(F)I + 95: invokestatic #1131 // Method java/lang/Math.max:(II)I + 98: istore 14 + 100: aload_0 + 101: invokevirtual #1091 // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I + 104: bipush 16 + 106: isub + 107: iload 13 + 109: isub + 110: istore 15 + 112: aload_0 + 113: invokevirtual #1094 // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I + 116: bipush 16 + 118: isub + 119: iload 14 + 121: isub + 122: istore 16 + 124: iload 6 + 126: ifeq 189 + 129: ldc_w #1300 // String Reloading... + 132: astore 17 + 134: aload_0 + 135: invokevirtual #1091 // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I + 138: bipush 16 + 140: isub + 141: aload_1 + 142: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 145: aload 17 + 147: invokevirtual #1291 // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I + 150: isub + 151: istore 18 + 153: iload 16 + 155: aload_1 + 156: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 159: invokestatic #1297 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 162: pop + 163: bipush 9 + 165: isub + 166: iconst_3 + 167: isub + 168: istore 19 + 170: aload_0 + 171: aload_1 + 172: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 175: aload 17 + 177: iload 18 + 179: iload 19 + 181: ldc_w #1301 // int 16765517 + 184: iconst_1 + 185: invokevirtual #1305 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 188: pop + 189: iload 15 + 191: istore 17 + 193: iload 16 + 195: iload 14 + 197: iload 10 + 199: isub + 200: iconst_2 + 201: idiv + 202: iadd + 203: istore 18 + 205: aload_2 + 206: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 209: ifne 259 + 212: aload_0 + 213: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 216: invokevirtual #1145 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 219: aload_0 + 220: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 223: iload 17 + 225: i2f + 226: iload 18 + 228: i2f + 229: fconst_0 + 230: invokevirtual #1149 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 233: aload_0 + 234: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 237: fload 7 + 239: fload 7 + 241: fconst_1 + 242: invokevirtual #1152 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 245: aload_0 + 246: aload_2 + 247: iconst_0 + 248: iconst_0 + 249: invokevirtual #1309 // Method net/minecraft/client/gui/GuiGraphics.m_280480_:(Lnet/minecraft/world/item/ItemStack;II)V + 252: aload_0 + 253: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 256: invokevirtual #1159 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 259: iload 17 + 261: iload 10 + 263: iadd + 264: bipush 8 + 266: iadd + 267: istore 19 + 269: iload 5 + 271: ifeq 280 + 274: ldc_w #1310 // int 16733525 + 277: goto 283 + 280: ldc_w #1311 // int 16777215 + 283: istore 20 + 285: aload_0 + 286: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 289: invokevirtual #1145 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 292: aload_0 + 293: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 296: iload 19 + 298: i2f + 299: iload 16 + 301: i2f + 302: iload 14 + 304: aload_1 + 305: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 308: invokestatic #1297 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 311: pop + 312: ldc_w #1298 // float 9.0f + 315: fload 8 + 317: fmul + 318: invokestatic #1281 // Method java/lang/Math.round:(F)I + 321: isub + 322: i2f + 323: fconst_2 + 324: fdiv + 325: fadd + 326: fconst_0 + 327: invokevirtual #1149 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 330: aload_0 + 331: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 334: fload 8 + 336: fload 8 + 338: fconst_1 + 339: invokevirtual #1152 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 342: aload_0 + 343: aload_1 + 344: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 347: aload_3 + 348: iconst_0 + 349: iconst_0 + 350: iload 20 + 352: iconst_1 + 353: invokevirtual #1305 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 356: pop + 357: aload_0 + 358: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 361: invokevirtual #1159 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 364: aload_0 + 365: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 368: invokevirtual #1145 // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V + 371: aload_0 + 372: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 375: iload 19 + 377: iload 11 + 379: iadd + 380: iconst_3 + 381: iadd + 382: i2f + 383: iload 16 + 385: i2f + 386: iload 14 + 388: aload_1 + 389: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 392: invokestatic #1297 // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object; + 395: pop + 396: ldc_w #1298 // float 9.0f + 399: fload 9 + 401: fmul + 402: invokestatic #1281 // Method java/lang/Math.round:(F)I + 405: isub + 406: i2f + 407: fconst_2 + 408: fdiv + 409: fadd + 410: fconst_0 + 411: invokevirtual #1149 // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V + 414: aload_0 + 415: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 418: fload 9 + 420: fload 9 + 422: fconst_1 + 423: invokevirtual #1152 // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V + 426: aload_0 + 427: aload_1 + 428: getfield #1285 // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font; + 431: aload 4 + 433: iconst_0 + 434: iconst_0 + 435: ldc_w #1312 // int 11184810 + 438: iconst_1 + 439: invokevirtual #1305 // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I + 442: pop + 443: aload_0 + 444: invokevirtual #1142 // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack; + 447: invokevirtual #1159 // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V + 450: return + + private static net.minecraft.world.item.ItemStack nailIconStack(); + Code: + 0: getstatic #1335 // Field nailIconResolved:Z + 3: ifne 46 + 6: iconst_1 + 7: putstatic #1335 // Field nailIconResolved:Z + 10: getstatic #1252 // Field net/minecraftforge/registries/ForgeRegistries.ITEMS:Lnet/minecraftforge/registries/IForgeRegistry; + 13: getstatic #1246 // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation; + 16: invokeinterface #1339, 2 // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getValue:(Lnet/minecraft/resources/ResourceLocation;)Ljava/lang/Object; + 21: checkcast #1268 // class net/minecraft/world/item/Item + 24: astore_0 + 25: aload_0 + 26: ifnonnull 35 + 29: getstatic #1342 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 32: goto 43 + 35: new #159 // class net/minecraft/world/item/ItemStack + 38: dup + 39: aload_0 + 40: invokespecial #1345 // Method net/minecraft/world/item/ItemStack."":(Lnet/minecraft/world/level/ItemLike;)V + 43: putstatic #1347 // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack; + 46: getstatic #1347 // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack; + 49: areturn + + private static net.minecraft.world.item.ItemStack tacticalBoltIconStack(); + Code: + 0: getstatic #1351 // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack; + 3: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 6: ifeq 28 + 9: new #159 // class net/minecraft/world/item/ItemStack + 12: dup + 13: getstatic #1266 // Field com/ogaba/sa_combat/registry/ModItems.TACTICAL_BOLT:Lnet/minecraftforge/registries/RegistryObject; + 16: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 19: checkcast #1353 // class net/minecraft/world/level/ItemLike + 22: invokespecial #1345 // Method net/minecraft/world/item/ItemStack."":(Lnet/minecraft/world/level/ItemLike;)V + 25: putstatic #1351 // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack; + 28: getstatic #1351 // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack; + 31: areturn + + private static net.minecraft.world.item.ItemStack improvisedBoltIconStack(); + Code: + 0: getstatic #1355 // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack; + 3: invokevirtual #629 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 6: ifeq 28 + 9: new #159 // class net/minecraft/world/item/ItemStack + 12: dup + 13: getstatic #1275 // Field com/ogaba/sa_combat/registry/ModItems.IMPROVISED_BOLT:Lnet/minecraftforge/registries/RegistryObject; + 16: invokevirtual #526 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 19: checkcast #1353 // class net/minecraft/world/level/ItemLike + 22: invokespecial #1345 // Method net/minecraft/world/item/ItemStack."":(Lnet/minecraft/world/level/ItemLike;)V + 25: putstatic #1355 // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack; + 28: getstatic #1355 // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack; + 31: areturn + + private static void renderRealSpyglassOverlay(net.minecraft.client.gui.GuiGraphics); + Code: + 0: invokestatic #144 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_1 + 4: invokestatic #1362 // Method vanillaSpyglassScopeScale:()F + 7: fstore_2 + 8: getstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 11: ifnonnull 53 + 14: aload_1 + 15: getfield #1368 // Field net/minecraft/client/Minecraft.f_91065_:Lnet/minecraft/client/gui/Gui; + 18: invokevirtual #1372 // Method java/lang/Object.getClass:()Ljava/lang/Class; + 21: ldc_w #1374 // String renderSpyglassOverlay + 24: iconst_2 + 25: anewarray #1376 // class java/lang/Class + 28: dup + 29: iconst_0 + 30: ldc_w #1059 // class net/minecraft/client/gui/GuiGraphics + 33: aastore + 34: dup + 35: iconst_1 + 36: getstatic #1382 // Field java/lang/Float.TYPE:Ljava/lang/Class; + 39: aastore + 40: invokevirtual #1386 // Method java/lang/Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; + 43: putstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 46: getstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 49: iconst_1 + 50: invokevirtual #1391 // Method java/lang/reflect/Method.setAccessible:(Z)V + 53: getstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 56: aload_1 + 57: getfield #1368 // Field net/minecraft/client/Minecraft.f_91065_:Lnet/minecraft/client/gui/Gui; + 60: iconst_2 + 61: anewarray #4 // class java/lang/Object + 64: dup + 65: iconst_0 + 66: aload_0 + 67: aastore + 68: dup + 69: iconst_1 + 70: fload_2 + 71: invokestatic #1394 // Method java/lang/Float.valueOf:(F)Ljava/lang/Float; + 74: aastore + 75: invokevirtual #1398 // Method java/lang/reflect/Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; + 78: pop + 79: return + 80: astore_3 + 81: aload_0 + 82: fload_2 + 83: invokestatic #1404 // Method renderVanillaSpyglassOverlayFallback:(Lnet/minecraft/client/gui/GuiGraphics;F)V + 86: return + Exception table: + from to target type + 8 79 80 Class java/lang/ReflectiveOperationException + 8 79 80 Class java/lang/RuntimeException + + private static float vanillaSpyglassScopeScale(); + Code: + 0: invokestatic #1410 // Method easedScopeProgress:()F + 3: ldc_w #262 // float 0.5f + 6: ldc_w #1411 // float 1.125f + 9: invokestatic #256 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 12: freturn + + private static float easedScopeProgress(); + Code: + 0: getstatic #1051 // Field tacticalScopeProgress:F + 3: fconst_0 + 4: fconst_1 + 5: invokestatic #238 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 8: fstore_0 + 9: fload_0 + 10: fload_0 + 11: fmul + 12: ldc_w #271 // float 3.0f + 15: fconst_2 + 16: fload_0 + 17: fmul + 18: fsub + 19: fmul + 20: freturn + + private static void renderVanillaSpyglassOverlayFallback(net.minecraft.client.gui.GuiGraphics, float); + Code: + 0: aload_0 + 1: invokevirtual #1091 // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I + 4: istore_2 + 5: aload_0 + 6: invokevirtual #1094 // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I + 9: istore_3 + 10: iload_2 + 11: ifle 18 + 14: iload_3 + 15: ifgt 19 + 18: return + 19: iload_2 + 20: iload_3 + 21: invokestatic #1414 // Method java/lang/Math.min:(II)I + 24: i2f + 25: fstore 4 + 27: iload_2 + 28: i2f + 29: fload 4 + 31: fdiv + 32: iload_3 + 33: i2f + 34: fload 4 + 36: fdiv + 37: invokestatic #1417 // Method java/lang/Math.min:(FF)F + 40: fload_1 + 41: fmul + 42: fstore 5 + 44: fload 4 + 46: fload 5 + 48: fmul + 49: invokestatic #1084 // Method net/minecraft/util/Mth.m_14143_:(F)I + 52: istore 6 + 54: fload 4 + 56: fload 5 + 58: fmul + 59: invokestatic #1084 // Method net/minecraft/util/Mth.m_14143_:(F)I + 62: istore 7 + 64: iload_2 + 65: iload 6 + 67: isub + 68: iconst_2 + 69: idiv + 70: istore 8 + 72: iload_3 + 73: iload 7 + 75: isub + 76: iconst_2 + 77: idiv + 78: istore 9 + 80: iload 8 + 82: iload 6 + 84: iadd + 85: istore 10 + 87: iload 9 + 89: iload 7 + 91: iadd + 92: istore 11 + 94: invokestatic #1420 // Method com/mojang/blaze3d/systems/RenderSystem.disableDepthTest:()V + 97: iconst_0 + 98: invokestatic #1423 // Method com/mojang/blaze3d/systems/RenderSystem.depthMask:(Z)V + 101: invokestatic #1099 // Method com/mojang/blaze3d/systems/RenderSystem.enableBlend:()V + 104: invokestatic #1102 // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V + 107: aload_0 + 108: getstatic #1425 // Field VANILLA_SPYGLASS_SCOPE:Lnet/minecraft/resources/ResourceLocation; + 111: iload 8 + 113: iload 9 + 115: bipush -90 + 117: fconst_0 + 118: fconst_0 + 119: iload 6 + 121: iload 7 + 123: iload 6 + 125: iload 7 + 127: invokevirtual #1429 // Method net/minecraft/client/gui/GuiGraphics.m_280398_:(Lnet/minecraft/resources/ResourceLocation;IIIFFIIII)V + 130: aload_0 + 131: invokestatic #1435 // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType; + 134: iconst_0 + 135: iload 11 + 137: iload_2 + 138: iload_3 + 139: bipush -90 + 141: ldc_w #1436 // int -16777216 + 144: invokevirtual #1440 // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V + 147: aload_0 + 148: invokestatic #1435 // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType; + 151: iconst_0 + 152: iconst_0 + 153: iload_2 + 154: iload 9 + 156: bipush -90 + 158: ldc_w #1436 // int -16777216 + 161: invokevirtual #1440 // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V + 164: aload_0 + 165: invokestatic #1435 // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType; + 168: iconst_0 + 169: iload 9 + 171: iload 8 + 173: iload 11 + 175: bipush -90 + 177: ldc_w #1436 // int -16777216 + 180: invokevirtual #1440 // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V + 183: aload_0 + 184: invokestatic #1435 // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType; + 187: iload 10 + 189: iload 9 + 191: iload_2 + 192: iload 11 + 194: bipush -90 + 196: ldc_w #1436 // int -16777216 + 199: invokevirtual #1440 // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V + 202: iconst_1 + 203: invokestatic #1423 // Method com/mojang/blaze3d/systems/RenderSystem.depthMask:(Z)V + 206: invokestatic #1102 // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V + 209: invokestatic #1443 // Method com/mojang/blaze3d/systems/RenderSystem.enableDepthTest:()V + 212: return + + public static void onClientLoggingIn(net.minecraftforge.client.event.ClientPlayerNetworkEvent$LoggingIn); + Code: + 0: invokestatic #1457 // Method resetClientSessionState:()V + 3: return + + public static void onClientLoggingOut(net.minecraftforge.client.event.ClientPlayerNetworkEvent$LoggingOut); + Code: + 0: invokestatic #1457 // Method resetClientSessionState:()V + 3: return + + private static void resetClientSessionState(); + Code: + 0: iconst_0 + 1: iconst_0 + 2: invokestatic #1465 // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.set:(II)V + 5: fconst_0 + 6: putstatic #1051 // Field tacticalScopeProgress:F + 9: aconst_null + 10: putstatic #1364 // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method; + 13: iconst_0 + 14: putstatic #555 // Field nailGunTriggerWasDown:Z + 17: fconst_0 + 18: putstatic #557 // Field nailGunAutoFireAccumulator:F + 21: ldc2_w #490 // long -9223372036854775808l + 24: putstatic #493 // Field thirdPersonNailGunStackId:J + 27: iconst_0 + 28: putstatic #495 // Field thirdPersonNailGunReloadWasActive:Z + 31: iconst_0 + 32: putstatic #434 // Field crossbowCycleWasDown:Z + 35: ldc_w #1466 // int -2147483648 + 38: putstatic #1223 // Field cachedInventoryPlayerId:I + 41: ldc_w #1466 // int -2147483648 + 44: putstatic #1228 // Field cachedInventoryTick:I + 47: invokestatic #1469 // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.clearClientAnimationState:()V + 50: invokestatic #1470 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.clearClientAnimationState:()V + 53: invokestatic #1473 // Method com/ogaba/sa_combat/client/render/NailGunAimClient.reset:()V + 56: invokestatic #1478 // Method com/ogaba/sa_combat/client/render/NailGunCameraAnimation.resetImmediately:()V + 59: invokestatic #1481 // Method com/ogaba/sa_combat/client/effect/NailHoleManager.clear:()V + 62: invokestatic #1484 // Method com/ogaba/sa_combat/client/sound/ChainsawSoundManager.stop:()V + 65: return + + private static net.minecraft.resources.ResourceLocation rl(java.lang.String); + Code: + 0: new #1022 // class net/minecraft/resources/ResourceLocation + 3: dup + 4: ldc_w #1487 // String sa_combat + 7: aload_0 + 8: invokespecial #1490 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 11: areturn + + static {}; + Code: + 0: ldc_w #1494 // String textures/gui/hud/ballistic_vest_bg.png + 3: invokestatic #1496 // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 6: putstatic #1154 // Field BALLISTIC_VEST_BG:Lnet/minecraft/resources/ResourceLocation; + 9: ldc_w #1498 // String textures/gui/hud/ballistic_vest_fill.png + 12: invokestatic #1496 // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 15: putstatic #1156 // Field BALLISTIC_VEST_FILL:Lnet/minecraft/resources/ResourceLocation; + 18: ldc_w #1500 // String textures/gui/hud/grenade_fuse_frame.png + 21: invokestatic #1496 // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 24: putstatic #1110 // Field GRENADE_FUSE_FRAME:Lnet/minecraft/resources/ResourceLocation; + 27: ldc_w #1502 // String textures/gui/hud/compound_bow_power_fill.png + 30: invokestatic #1496 // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 33: putstatic #1104 // Field GRENADE_FUSE_FILL:Lnet/minecraft/resources/ResourceLocation; + 36: new #1022 // class net/minecraft/resources/ResourceLocation + 39: dup + 40: ldc_w #1503 // String minecraft + 43: ldc_w #1505 // String textures/misc/spyglass_scope.png + 46: invokespecial #1490 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 49: putstatic #1425 // Field VANILLA_SPYGLASS_SCOPE:Lnet/minecraft/resources/ResourceLocation; + 52: new #1022 // class net/minecraft/resources/ResourceLocation + 55: dup + 56: ldc_w #1507 // String sa_core + 59: ldc_w #1509 // String nails + 62: invokespecial #1490 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 65: putstatic #1246 // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation; + 68: ldc2_w #490 // long -9223372036854775808l + 71: putstatic #493 // Field thirdPersonNailGunStackId:J + 74: ldc_w #1466 // int -2147483648 + 77: putstatic #1223 // Field cachedInventoryPlayerId:I + 80: ldc_w #1466 // int -2147483648 + 83: putstatic #1228 // Field cachedInventoryTick:I + 86: getstatic #1342 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 89: putstatic #1347 // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack; + 92: getstatic #1342 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 95: putstatic #1351 // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack; + 98: getstatic #1342 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 101: putstatic #1355 // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack; + 104: return +} + + +==================== com.ogaba.sa_combat.client.model.SAWeaponGeoModel ==================== +Compiled from "SAWeaponGeoModel.java" +public class com.ogaba.sa_combat.client.model.SAWeaponGeoModel extends software.bernie.geckolib.model.GeoModel { + private static final java.util.Map RESOURCE_EXISTS_CACHE; + + private static final java.util.Map> ATTACHMENT_BONE_CANDIDATES_CACHE; + + private static final java.util.Map ITEM_PATH_CACHE; + + private static final java.util.Map MODEL_RESOURCE_CACHE; + + private static final java.util.Map TEXTURE_RESOURCE_CACHE; + + private static final java.util.Map ANIMATION_RESOURCE_CACHE; + + private net.minecraft.world.item.ItemStack currentRenderStack; + + private static final java.util.List ELECTRIC_FX_BONES; + + private static final int ELECTRIC_FX_FRAME_TIME_TICKS; + + private static final java.util.List CROSSBOW_PROJECTILE_BONES; + + private static volatile int dynamicBoneCacheGeneration; + + private int observedDynamicBoneCacheGeneration; + + private final java.util.Map> supportedAttachmentBonesByModel; + + private final java.util.Map> supportedElectricFxBonesByModel; + + private boolean electricAttachmentInstalled; + + private final com.ogaba.sa_combat.combat.attachment.WeaponAttachmentData$AttachmentVisitor attachmentVisualVisitor; + + public com.ogaba.sa_combat.client.model.SAWeaponGeoModel(); + Code: + 0: aload_0 + 1: invokespecial #49 // Method software/bernie/geckolib/model/GeoModel."":()V + 4: aload_0 + 5: getstatic #54 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 8: putfield #56 // Field currentRenderStack:Lnet/minecraft/world/item/ItemStack; + 11: aload_0 + 12: getstatic #58 // Field dynamicBoneCacheGeneration:I + 15: putfield #60 // Field observedDynamicBoneCacheGeneration:I + 18: aload_0 + 19: new #62 // class java/util/HashMap + 22: dup + 23: invokespecial #63 // Method java/util/HashMap."":()V + 26: putfield #65 // Field supportedAttachmentBonesByModel:Ljava/util/Map; + 29: aload_0 + 30: new #62 // class java/util/HashMap + 33: dup + 34: invokespecial #63 // Method java/util/HashMap."":()V + 37: putfield #67 // Field supportedElectricFxBonesByModel:Ljava/util/Map; + 40: aload_0 + 41: aload_0 + 42: invokedynamic #84, 0 // InvokeDynamic #0:accept:(Lcom/ogaba/sa_combat/client/model/SAWeaponGeoModel;)Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachmentData$AttachmentVisitor; + 47: putfield #86 // Field attachmentVisualVisitor:Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachmentData$AttachmentVisitor; + 50: return + + public void setCurrentRenderStack(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: aload_1 + 2: ifnonnull 11 + 5: getstatic #54 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 8: goto 12 + 11: aload_1 + 12: putfield #56 // Field currentRenderStack:Lnet/minecraft/world/item/ItemStack; + 15: return + + public void clearCurrentRenderStack(); + Code: + 0: aload_0 + 1: getstatic #54 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack; + 4: putfield #56 // Field currentRenderStack:Lnet/minecraft/world/item/ItemStack; + 7: return + + public net.minecraft.resources.ResourceLocation getModelResource(com.ogaba.sa_combat.combat.weapon.SAWeaponItem); + Code: + 0: aload_1 + 1: invokestatic #98 // Method itemPath:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Ljava/lang/String; + 4: astore_2 + 5: getstatic #100 // Field MODEL_RESOURCE_CACHE:Ljava/util/Map; + 8: aload_2 + 9: invokedynamic #112, 0 // InvokeDynamic #1:apply:()Ljava/util/function/Function; + 14: invokeinterface #118, 3 // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; + 19: checkcast #120 // class net/minecraft/resources/ResourceLocation + 22: areturn + + public net.minecraft.resources.ResourceLocation getTextureResource(com.ogaba.sa_combat.combat.weapon.SAWeaponItem); + Code: + 0: aload_1 + 1: invokestatic #98 // Method itemPath:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Ljava/lang/String; + 4: astore_2 + 5: ldc #127 // String baseball_bat + 7: aload_2 + 8: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 11: ifeq 74 + 14: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 17: aload_2 + 18: invokeinterface #138, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 23: checkcast #120 // class net/minecraft/resources/ResourceLocation + 26: astore_3 + 27: aload_3 + 28: ifnull 33 + 31: aload_3 + 32: areturn + 33: ldc #140 // String textures/item/weapons/baseball_bat_modular.png + 35: iconst_3 + 36: anewarray #129 // class java/lang/String + 39: dup + 40: iconst_0 + 41: ldc #142 // String textures/item/baseball_bat_modular.png + 43: aastore + 44: dup + 45: iconst_1 + 46: ldc #144 // String textures/item/weapons/baseball_bat.png + 48: aastore + 49: dup + 50: iconst_2 + 51: ldc #146 // String textures/item/baseball_bat.png + 53: aastore + 54: invokestatic #150 // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 57: astore 4 + 59: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 62: aload_2 + 63: aload 4 + 65: invokeinterface #154, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 70: pop + 71: aload 4 + 73: areturn + 74: ldc #156 // String aluminum_baseball_bat + 76: aload_2 + 77: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 80: ifeq 143 + 83: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 86: aload_2 + 87: invokeinterface #138, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 92: checkcast #120 // class net/minecraft/resources/ResourceLocation + 95: astore_3 + 96: aload_3 + 97: ifnull 102 + 100: aload_3 + 101: areturn + 102: ldc #158 // String textures/item/weapons/aluminum_baseball_bat_modular.png + 104: iconst_3 + 105: anewarray #129 // class java/lang/String + 108: dup + 109: iconst_0 + 110: ldc #160 // String textures/item/aluminum_baseball_bat_modular.png + 112: aastore + 113: dup + 114: iconst_1 + 115: ldc #162 // String textures/item/weapons/aluminum_baseball_bat.png + 117: aastore + 118: dup + 119: iconst_2 + 120: ldc #164 // String textures/item/aluminum_baseball_bat.png + 122: aastore + 123: invokestatic #150 // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 126: astore 4 + 128: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 131: aload_2 + 132: aload 4 + 134: invokeinterface #154, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 139: pop + 140: aload 4 + 142: areturn + 143: ldc #166 // String chainsaw + 145: aload_2 + 146: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 149: ifeq 295 + 152: aload_0 + 153: getfield #56 // Field currentRenderStack:Lnet/minecraft/world/item/ItemStack; + 156: invokestatic #172 // Method com/ogaba/sa_combat/combat/weapon/ChainsawItem.isRunning:(Lnet/minecraft/world/item/ItemStack;)Z + 159: ifeq 174 + 162: aload_0 + 163: invokevirtual #176 // Method chainsawTextureFrame:()I + 166: iconst_1 + 167: if_icmpne 174 + 170: iconst_1 + 171: goto 175 + 174: iconst_0 + 175: istore 5 + 177: iload 5 + 179: ifeq 187 + 182: ldc #178 // String chainsaw#frame1 + 184: goto 189 + 187: ldc #180 // String chainsaw#frame0 + 189: astore 6 + 191: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 194: aload 6 + 196: invokeinterface #138, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 201: checkcast #120 // class net/minecraft/resources/ResourceLocation + 204: astore_3 + 205: aload_3 + 206: ifnull 211 + 209: aload_3 + 210: areturn + 211: iload 5 + 213: ifeq 253 + 216: ldc #184 // String textures/item/weapons/chainsaw1.png + 218: iconst_5 + 219: anewarray #129 // class java/lang/String + 222: dup + 223: iconst_0 + 224: ldc #186 // String textures/item/chainsaw1.png + 226: aastore + 227: dup + 228: iconst_1 + 229: ldc #188 // String textures/item/weapons/chainsaw.png + 231: aastore + 232: dup + 233: iconst_2 + 234: ldc #190 // String textures/item/chainsaw.png + 236: aastore + 237: dup + 238: iconst_3 + 239: ldc #192 // String textures/item/weapons/chainsaw0.png + 241: aastore + 242: dup + 243: iconst_4 + 244: ldc #194 // String textures/item/chainsaw0.png + 246: aastore + 247: invokestatic #150 // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 250: goto 277 + 253: ldc #188 // String textures/item/weapons/chainsaw.png + 255: iconst_3 + 256: anewarray #129 // class java/lang/String + 259: dup + 260: iconst_0 + 261: ldc #190 // String textures/item/chainsaw.png + 263: aastore + 264: dup + 265: iconst_1 + 266: ldc #192 // String textures/item/weapons/chainsaw0.png + 268: aastore + 269: dup + 270: iconst_2 + 271: ldc #194 // String textures/item/chainsaw0.png + 273: aastore + 274: invokestatic #150 // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 277: astore 4 + 279: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 282: aload 6 + 284: aload 4 + 286: invokeinterface #154, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 291: pop + 292: aload 4 + 294: areturn + 295: ldc #196 // String chainsaw_sword + 297: aload_2 + 298: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 301: ifeq 447 + 304: aload_0 + 305: invokevirtual #176 // Method chainsawTextureFrame:()I + 308: iconst_1 + 309: if_icmpne 316 + 312: iconst_1 + 313: goto 317 + 316: iconst_0 + 317: istore 5 + 319: iload 5 + 321: ifeq 329 + 324: ldc #198 // String chainsaw_sword#frame1 + 326: goto 331 + 329: ldc #200 // String chainsaw_sword#frame0 + 331: astore 6 + 333: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 336: aload 6 + 338: invokeinterface #138, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 343: checkcast #120 // class net/minecraft/resources/ResourceLocation + 346: astore_3 + 347: aload_3 + 348: ifnull 353 + 351: aload_3 + 352: areturn + 353: iload 5 + 355: ifeq 395 + 358: ldc #202 // String textures/item/weapons/chainsaw_sword1.png + 360: iconst_5 + 361: anewarray #129 // class java/lang/String + 364: dup + 365: iconst_0 + 366: ldc #204 // String textures/item/chainsaw_sword1.png + 368: aastore + 369: dup + 370: iconst_1 + 371: ldc #206 // String textures/item/weapons/chainsaw_sword.png + 373: aastore + 374: dup + 375: iconst_2 + 376: ldc #208 // String textures/item/chainsaw_sword.png + 378: aastore + 379: dup + 380: iconst_3 + 381: ldc #210 // String textures/item/weapons/chainsaw_sword0.png + 383: aastore + 384: dup + 385: iconst_4 + 386: ldc #212 // String textures/item/chainsaw_sword0.png + 388: aastore + 389: invokestatic #150 // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 392: goto 429 + 395: ldc #206 // String textures/item/weapons/chainsaw_sword.png + 397: iconst_5 + 398: anewarray #129 // class java/lang/String + 401: dup + 402: iconst_0 + 403: ldc #208 // String textures/item/chainsaw_sword.png + 405: aastore + 406: dup + 407: iconst_1 + 408: ldc #210 // String textures/item/weapons/chainsaw_sword0.png + 410: aastore + 411: dup + 412: iconst_2 + 413: ldc #212 // String textures/item/chainsaw_sword0.png + 415: aastore + 416: dup + 417: iconst_3 + 418: ldc #202 // String textures/item/weapons/chainsaw_sword1.png + 420: aastore + 421: dup + 422: iconst_4 + 423: ldc #204 // String textures/item/chainsaw_sword1.png + 425: aastore + 426: invokestatic #150 // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 429: astore 4 + 431: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 434: aload 6 + 436: aload 4 + 438: invokeinterface #154, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 443: pop + 444: aload 4 + 446: areturn + 447: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 450: aload_2 + 451: invokeinterface #138, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 456: checkcast #120 // class net/minecraft/resources/ResourceLocation + 459: astore_3 + 460: aload_3 + 461: ifnull 466 + 464: aload_3 + 465: areturn + 466: aload_2 + 467: invokestatic #216 // Method isShieldPath:(Ljava/lang/String;)Z + 470: ifeq 509 + 473: aload_2 + 474: invokedynamic #228, 0 // InvokeDynamic #2:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 479: iconst_2 + 480: anewarray #129 // class java/lang/String + 483: dup + 484: iconst_0 + 485: aload_2 + 486: invokedynamic #231, 0 // InvokeDynamic #3:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 491: aastore + 492: dup + 493: iconst_1 + 494: aload_2 + 495: invokedynamic #234, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 500: aastore + 501: invokestatic #150 // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 504: astore 4 + 506: goto 533 + 509: aload_2 + 510: invokedynamic #231, 0 // InvokeDynamic #3:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 515: iconst_1 + 516: anewarray #129 // class java/lang/String + 519: dup + 520: iconst_0 + 521: aload_2 + 522: invokedynamic #234, 0 // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 527: aastore + 528: invokestatic #150 // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; + 531: astore 4 + 533: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 536: aload_2 + 537: aload 4 + 539: invokeinterface #154, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 544: pop + 545: aload 4 + 547: areturn + + public net.minecraft.resources.ResourceLocation getAnimationResource(com.ogaba.sa_combat.combat.weapon.SAWeaponItem); + Code: + 0: aload_1 + 1: invokestatic #98 // Method itemPath:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Ljava/lang/String; + 4: astore_2 + 5: getstatic #242 // Field ANIMATION_RESOURCE_CACHE:Ljava/util/Map; + 8: aload_2 + 9: invokedynamic #247, 0 // InvokeDynamic #5:apply:()Ljava/util/function/Function; + 14: invokeinterface #118, 3 // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; + 19: checkcast #120 // class net/minecraft/resources/ResourceLocation + 22: areturn + + public void setCustomAnimations(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, long, software.bernie.geckolib.core.animation.AnimationState); + Code: + 0: aload_0 + 1: aload_1 + 2: lload_2 + 3: aload 4 + 5: invokespecial #253 // Method software/bernie/geckolib/model/GeoModel.setCustomAnimations:(Lsoftware/bernie/geckolib/core/animatable/GeoAnimatable;JLsoftware/bernie/geckolib/core/animation/AnimationState;)V + 8: aload_1 + 9: invokestatic #98 // Method itemPath:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Ljava/lang/String; + 12: astore 5 + 14: aload_0 + 15: aload 5 + 17: invokevirtual #257 // Method prepareDynamicBoneState:(Ljava/lang/String;)V + 20: aload_0 + 21: aload_1 + 22: invokevirtual #261 // Method hideCrossbowProjectileVisual:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)V + 25: aload 4 + 27: getstatic #267 // Field software/bernie/geckolib/constant/DataTickets.ITEMSTACK:Lsoftware/bernie/geckolib/core/object/DataTicket; + 30: invokevirtual #273 // Method software/bernie/geckolib/core/animation/AnimationState.getData:(Lsoftware/bernie/geckolib/core/object/DataTicket;)Ljava/lang/Object; + 33: checkcast #51 // class net/minecraft/world/item/ItemStack + 36: astore 6 + 38: aload 6 + 40: ifnull 51 + 43: aload 6 + 45: invokevirtual #277 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 48: ifeq 52 + 51: return + 52: aload 4 + 54: getstatic #280 // Field software/bernie/geckolib/constant/DataTickets.ITEM_RENDER_PERSPECTIVE:Lsoftware/bernie/geckolib/core/object/DataTicket; + 57: invokevirtual #273 // Method software/bernie/geckolib/core/animation/AnimationState.getData:(Lsoftware/bernie/geckolib/core/object/DataTicket;)Ljava/lang/Object; + 60: checkcast #282 // class net/minecraft/world/item/ItemDisplayContext + 63: astore 7 + 65: aload_0 + 66: aload_1 + 67: invokevirtual #286 // Method isCrossbow:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Z + 70: ifeq 89 + 73: aload_0 + 74: aload 7 + 76: invokevirtual #290 // Method isHandRender:(Lnet/minecraft/world/item/ItemDisplayContext;)Z + 79: ifne 89 + 82: aload_0 + 83: invokevirtual #293 // Method resetCrossbowNonHandPose:()V + 86: goto 96 + 89: aload_0 + 90: aload_1 + 91: aload 6 + 93: invokevirtual #297 // Method applyCrossbowLoadedVisual:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;Lnet/minecraft/world/item/ItemStack;)V + 96: aload_0 + 97: iconst_0 + 98: putfield #299 // Field electricAttachmentInstalled:Z + 101: aload 6 + 103: aload_0 + 104: getfield #86 // Field attachmentVisualVisitor:Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachmentData$AttachmentVisitor; + 107: invokestatic #303 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.visitInstalledAttachments:(Lnet/minecraft/world/item/ItemStack;Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachmentData$AttachmentVisitor;)I + 110: pop + 111: aload_0 + 112: getfield #299 // Field electricAttachmentInstalled:Z + 115: ifeq 124 + 118: aload_0 + 119: aload 5 + 121: invokevirtual #306 // Method showElectricFxFrame:(Ljava/lang/String;)V + 124: aload_0 + 125: aload_1 + 126: aload 6 + 128: invokevirtual #309 // Method applyNailGunMagazineVisual:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;Lnet/minecraft/world/item/ItemStack;)V + 131: aload_0 + 132: aload_1 + 133: aload 7 + 135: invokevirtual #313 // Method applyCompoundBowPerspectivePose:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;Lnet/minecraft/world/item/ItemDisplayContext;)V + 138: aload_0 + 139: aload_1 + 140: aload 6 + 142: invokevirtual #316 // Method applyCompoundBowArrowVisual:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;Lnet/minecraft/world/item/ItemStack;)V + 145: return + + private void applyCompoundBowPerspectivePose(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, net.minecraft.world.item.ItemDisplayContext); + Code: + 0: aload_1 + 1: instanceof #326 // class com/ogaba/sa_combat/combat/weapon/CompoundBowItem + 4: ifne 8 + 7: return + 8: aload_2 + 9: getstatic #329 // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_LEFT_HAND:Lnet/minecraft/world/item/ItemDisplayContext; + 12: if_acmpeq 22 + 15: aload_2 + 16: getstatic #332 // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_RIGHT_HAND:Lnet/minecraft/world/item/ItemDisplayContext; + 19: if_acmpne 26 + 22: iconst_1 + 23: goto 27 + 26: iconst_0 + 27: istore_3 + 28: iload_3 + 29: ifeq 147 + 32: aload_0 + 33: invokevirtual #336 // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor; + 36: ldc_w #338 // String refit + 39: invokevirtual #344 // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone; + 42: astore 4 + 44: aload 4 + 46: ifnull 146 + 49: invokestatic #350 // Method com/ogaba/sa_combat/client/render/CompoundBowClient.getAimProgress:()F + 52: fstore 5 + 54: fload 5 + 56: fconst_0 + 57: fconst_0 + 58: invokestatic #356 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 61: fstore 6 + 63: fload 5 + 65: fconst_0 + 66: fconst_0 + 67: invokestatic #356 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 70: fstore 7 + 72: fload 5 + 74: fconst_0 + 75: ldc_w #357 // float 72.5f + 78: invokestatic #356 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 81: fstore 8 + 83: aload 4 + 85: aload 4 + 87: invokeinterface #362, 1 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.getRotX:()F + 92: fload 6 + 94: ldc_w #363 // float 0.017453292f + 97: fmul + 98: fadd + 99: invokeinterface #367, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotX:(F)V + 104: aload 4 + 106: aload 4 + 108: invokeinterface #370, 1 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.getRotY:()F + 113: fload 7 + 115: ldc_w #363 // float 0.017453292f + 118: fmul + 119: fadd + 120: invokeinterface #373, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotY:(F)V + 125: aload 4 + 127: aload 4 + 129: invokeinterface #376, 1 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.getRotZ:()F + 134: fload 8 + 136: ldc_w #363 // float 0.017453292f + 139: fmul + 140: fadd + 141: invokeinterface #379, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotZ:(F)V + 146: return + 147: aload_0 + 148: invokevirtual #382 // Method resetCompoundBowExternalPose:()V + 151: return + + private void resetCompoundBowExternalPose(); + Code: + 0: bipush 16 + 2: anewarray #129 // class java/lang/String + 5: dup + 6: iconst_0 + 7: ldc_w #338 // String refit + 10: aastore + 11: dup + 12: iconst_1 + 13: ldc_w #391 // String weapon + 16: aastore + 17: dup + 18: iconst_2 + 19: ldc_w #393 // String right_hand + 22: aastore + 23: dup + 24: iconst_3 + 25: ldc_w #395 // String left_hand + 28: aastore + 29: dup + 30: iconst_4 + 31: ldc_w #397 // String base + 34: aastore + 35: dup + 36: iconst_5 + 37: ldc_w #399 // String down + 40: aastore + 41: dup + 42: bipush 6 + 44: ldc_w #401 // String circ + 47: aastore + 48: dup + 49: bipush 7 + 51: ldc_w #403 // String up + 54: aastore + 55: dup + 56: bipush 8 + 58: ldc_w #405 // String circ2 + 61: aastore + 62: dup + 63: bipush 9 + 65: ldc_w #407 // String string + 68: aastore + 69: dup + 70: bipush 10 + 72: ldc_w #409 // String up_string + 75: aastore + 76: dup + 77: bipush 11 + 79: ldc_w #411 // String down_string + 82: aastore + 83: dup + 84: bipush 12 + 86: ldc_w #413 // String arrow_bolt + 89: aastore + 90: dup + 91: bipush 13 + 93: ldc_w #415 // String arrow_Improvised + 96: aastore + 97: dup + 98: bipush 14 + 100: ldc_w #417 // String camera + 103: aastore + 104: dup + 105: bipush 15 + 107: ldc_w #419 // String idle_view + 110: aastore + 111: astore_1 + 112: aload_1 + 113: astore_2 + 114: aload_2 + 115: arraylength + 116: istore_3 + 117: iconst_0 + 118: istore 4 + 120: iload 4 + 122: iload_3 + 123: if_icmpge 153 + 126: aload_2 + 127: iload 4 + 129: aaload + 130: astore 5 + 132: aload_0 + 133: aload 5 + 135: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 138: aload_0 + 139: aload 5 + 141: fconst_1 + 142: fconst_1 + 143: fconst_1 + 144: invokevirtual #428 // Method setBoneScale:(Ljava/lang/String;FFF)V + 147: iinc 4, 1 + 150: goto 120 + 153: return + + private void applyCompoundBowArrowVisual(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, net.minecraft.world.item.ItemStack); + Code: + 0: aload_1 + 1: instanceof #326 // class com/ogaba/sa_combat/combat/weapon/CompoundBowItem + 4: ifne 8 + 7: return + 8: aload_2 + 9: invokestatic #433 // Method com/ogaba/sa_combat/combat/weapon/CompoundBowItem.isClientImprovisedBolt:(Lnet/minecraft/world/item/ItemStack;)Z + 12: istore_3 + 13: aload_0 + 14: ldc_w #413 // String arrow_bolt + 17: iload_3 + 18: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 21: aload_0 + 22: ldc_w #415 // String arrow_Improvised + 25: iload_3 + 26: ifne 33 + 29: iconst_1 + 30: goto 34 + 33: iconst_0 + 34: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 37: return + + private void applyNailGunMagazineVisual(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, net.minecraft.world.item.ItemStack); + Code: + 0: aload_1 + 1: instanceof #440 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 4: ifne 8 + 7: return + 8: aload_2 + 9: invokestatic #443 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.hasExtendedMag:(Lnet/minecraft/world/item/ItemStack;)Z + 12: istore_3 + 13: aload_2 + 14: invokestatic #446 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 17: ifne 27 + 20: aload_2 + 21: invokestatic #449 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 24: ifeq 31 + 27: iconst_1 + 28: goto 32 + 31: iconst_0 + 32: istore 4 + 34: aload_0 + 35: ldc_w #451 // String normal_mag + 38: iload_3 + 39: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 42: aload_0 + 43: ldc_w #453 // String attach_extended_mag + 46: iload_3 + 47: ifne 54 + 50: iconst_1 + 51: goto 55 + 54: iconst_0 + 55: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 58: aload_0 + 59: ldc_w #455 // String reload_normal_mag + 62: iload 4 + 64: ifeq 71 + 67: iload_3 + 68: ifeq 75 + 71: iconst_1 + 72: goto 76 + 75: iconst_0 + 76: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 79: aload_0 + 80: ldc_w #457 // String reload_extended_mag + 83: iload 4 + 85: ifeq 92 + 88: iload_3 + 89: ifne 96 + 92: iconst_1 + 93: goto 97 + 96: iconst_0 + 97: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 100: return + + private static boolean isShieldPath(java.lang.String); + Code: + 0: ldc_w #461 // String scrap_shield + 3: aload_0 + 4: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 7: ifne 50 + 10: ldc_w #463 // String trash_lid_shield + 13: aload_0 + 14: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 17: ifne 50 + 20: ldc_w #465 // String police_shield + 23: aload_0 + 24: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 27: ifne 50 + 30: ldc_w #467 // String stop_sign_shield + 33: aload_0 + 34: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 37: ifne 50 + 40: ldc_w #469 // String manhole_shield + 43: aload_0 + 44: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 47: ifeq 54 + 50: iconst_1 + 51: goto 55 + 54: iconst_0 + 55: ireturn + + private boolean isCrossbow(com.ogaba.sa_combat.combat.weapon.SAWeaponItem); + Code: + 0: aload_1 + 1: instanceof #471 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem + 4: ireturn + + private boolean isHandRender(net.minecraft.world.item.ItemDisplayContext); + Code: + 0: aload_1 + 1: getstatic #329 // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_LEFT_HAND:Lnet/minecraft/world/item/ItemDisplayContext; + 4: if_acmpeq 28 + 7: aload_1 + 8: getstatic #332 // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_RIGHT_HAND:Lnet/minecraft/world/item/ItemDisplayContext; + 11: if_acmpeq 28 + 14: aload_1 + 15: getstatic #474 // Field net/minecraft/world/item/ItemDisplayContext.THIRD_PERSON_LEFT_HAND:Lnet/minecraft/world/item/ItemDisplayContext; + 18: if_acmpeq 28 + 21: aload_1 + 22: getstatic #477 // Field net/minecraft/world/item/ItemDisplayContext.THIRD_PERSON_RIGHT_HAND:Lnet/minecraft/world/item/ItemDisplayContext; + 25: if_acmpne 32 + 28: iconst_1 + 29: goto 33 + 32: iconst_0 + 33: ireturn + + private void resetCrossbowNonHandPose(); + Code: + 0: aload_0 + 1: ldc_w #480 // String main + 4: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 7: aload_0 + 8: ldc_w #482 // String right_string + 11: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 14: aload_0 + 15: ldc_w #484 // String left_string + 18: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 21: aload_0 + 22: ldc_w #486 // String left + 25: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 28: aload_0 + 29: ldc_w #488 // String right + 32: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 35: aload_0 + 36: ldc_w #407 // String string + 39: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 42: aload_0 + 43: ldc_w #490 // String left_gear + 46: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 49: aload_0 + 50: ldc_w #492 // String right_gear + 53: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 56: aload_0 + 57: ldc_w #494 // String front_right + 60: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 63: aload_0 + 64: ldc_w #496 // String front_left + 67: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 70: aload_0 + 71: invokevirtual #500 // Method crossbowProjectileBones:()Ljava/util/List; + 74: invokeinterface #506, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 79: astore_1 + 80: aload_1 + 81: invokeinterface #511, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 86: ifeq 121 + 89: aload_1 + 90: invokeinterface #515, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 95: checkcast #129 // class java/lang/String + 98: astore_2 + 99: aload_0 + 100: aload_2 + 101: invokevirtual #424 // Method resetBonePose:(Ljava/lang/String;)V + 104: aload_0 + 105: aload_2 + 106: fconst_1 + 107: fconst_1 + 108: fconst_1 + 109: invokevirtual #428 // Method setBoneScale:(Ljava/lang/String;FFF)V + 112: aload_0 + 113: aload_2 + 114: iconst_1 + 115: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 118: goto 80 + 121: return + + private void resetBonePose(java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: fconst_0 + 3: fconst_0 + 4: fconst_0 + 5: fconst_0 + 6: fconst_0 + 7: fconst_0 + 8: invokevirtual #520 // Method setBonePose:(Ljava/lang/String;FFFFFF)V + 11: return + + private void setBonePose(java.lang.String, float, float, float, float, float, float); + Code: + 0: aload_0 + 1: invokevirtual #336 // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor; + 4: aload_1 + 5: invokevirtual #344 // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone; + 8: astore 8 + 10: aload 8 + 12: ifnull 79 + 15: aload 8 + 17: aload_0 + 18: fload_2 + 19: invokevirtual #524 // Method degreesToRadians:(F)F + 22: invokeinterface #367, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotX:(F)V + 27: aload 8 + 29: aload_0 + 30: fload_3 + 31: invokevirtual #524 // Method degreesToRadians:(F)F + 34: invokeinterface #373, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotY:(F)V + 39: aload 8 + 41: aload_0 + 42: fload 4 + 44: invokevirtual #524 // Method degreesToRadians:(F)F + 47: invokeinterface #379, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotZ:(F)V + 52: aload 8 + 54: fload 5 + 56: invokeinterface #527, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setPosX:(F)V + 61: aload 8 + 63: fload 6 + 65: invokeinterface #530, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setPosY:(F)V + 70: aload 8 + 72: fload 7 + 74: invokeinterface #533, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setPosZ:(F)V + 79: return + + private void setBoneScale(java.lang.String, float, float, float); + Code: + 0: aload_0 + 1: invokevirtual #336 // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor; + 4: aload_1 + 5: invokevirtual #344 // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone; + 8: astore 5 + 10: aload 5 + 12: ifnull 40 + 15: aload 5 + 17: fload_2 + 18: invokeinterface #542, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setScaleX:(F)V + 23: aload 5 + 25: fload_3 + 26: invokeinterface #545, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setScaleY:(F)V + 31: aload 5 + 33: fload 4 + 35: invokeinterface #548, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setScaleZ:(F)V + 40: return + + private float degreesToRadians(float); + Code: + 0: fload_1 + 1: ldc_w #363 // float 0.017453292f + 4: fmul + 5: freturn + + private void hideCrossbowProjectileVisual(com.ogaba.sa_combat.combat.weapon.SAWeaponItem); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #286 // Method isCrossbow:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Z + 5: ifne 9 + 8: return + 9: aload_0 + 10: invokevirtual #500 // Method crossbowProjectileBones:()Ljava/util/List; + 13: invokeinterface #506, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 18: astore_2 + 19: aload_2 + 20: invokeinterface #511, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 25: ifeq 47 + 28: aload_2 + 29: invokeinterface #515, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 34: checkcast #129 // class java/lang/String + 37: astore_3 + 38: aload_0 + 39: aload_3 + 40: iconst_1 + 41: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 44: goto 19 + 47: return + + private void applyCrossbowLoadedVisual(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #286 // Method isCrossbow:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Z + 5: ifne 9 + 8: return + 9: aload_2 + 10: invokestatic #555 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoaded:(Lnet/minecraft/world/item/ItemStack;)Z + 13: ifne 23 + 16: aload_2 + 17: invokestatic #558 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoading:(Lnet/minecraft/world/item/ItemStack;)Z + 20: ifeq 27 + 23: iconst_1 + 24: goto 28 + 27: iconst_0 + 28: istore_3 + 29: iload_3 + 30: ifne 34 + 33: return + 34: aload_2 + 35: invokestatic #561 // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isImprovisedBoltLoaded:(Lnet/minecraft/world/item/ItemStack;)Z + 38: istore 4 + 40: iload 4 + 42: ifeq 62 + 45: aload_0 + 46: ldc_w #415 // String arrow_Improvised + 49: ldc_w #563 // String arrow_improvised + 52: ldc_w #565 // String improvised_arrow + 55: invokevirtual #569 // Method showFirstExistingBone:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z + 58: ifeq 79 + 61: return + 62: aload_0 + 63: ldc_w #413 // String arrow_bolt + 66: ldc_w #571 // String tactical_arrow + 69: ldc_w #573 // String bolt + 72: invokevirtual #569 // Method showFirstExistingBone:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z + 75: ifeq 79 + 78: return + 79: aload_0 + 80: ldc_w #575 // String arrow + 83: invokevirtual #577 // Method showFirstExistingBone:(Ljava/lang/String;)Z + 86: pop + 87: return + + private java.util.List crossbowProjectileBones(); + Code: + 0: getstatic #582 // Field CROSSBOW_PROJECTILE_BONES:Ljava/util/List; + 3: areturn + + private boolean showFirstExistingBone(java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #585 // Method hasBone:(Ljava/lang/String;)Z + 5: ifne 10 + 8: iconst_0 + 9: ireturn + 10: aload_0 + 11: aload_1 + 12: iconst_0 + 13: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 16: iconst_1 + 17: ireturn + + private boolean showFirstExistingBone(java.lang.String, java.lang.String, java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #577 // Method showFirstExistingBone:(Ljava/lang/String;)Z + 5: ifeq 10 + 8: iconst_1 + 9: ireturn + 10: aload_0 + 11: aload_2 + 12: invokevirtual #577 // Method showFirstExistingBone:(Ljava/lang/String;)Z + 15: ifeq 20 + 18: iconst_1 + 19: ireturn + 20: aload_0 + 21: aload_3 + 22: invokevirtual #577 // Method showFirstExistingBone:(Ljava/lang/String;)Z + 25: ireturn + + private void prepareDynamicBoneState(java.lang.String); + Code: + 0: aload_0 + 1: invokevirtual #592 // Method refreshDynamicBoneCachesAfterReload:()V + 4: aload_0 + 5: aload_1 + 6: invokevirtual #596 // Method supportedAttachmentBones:(Ljava/lang/String;)Ljava/util/List; + 9: invokeinterface #506, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 14: astore_2 + 15: aload_2 + 16: invokeinterface #511, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 21: ifeq 43 + 24: aload_2 + 25: invokeinterface #515, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 30: checkcast #129 // class java/lang/String + 33: astore_3 + 34: aload_0 + 35: aload_3 + 36: iconst_1 + 37: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 40: goto 15 + 43: aload_0 + 44: aload_1 + 45: invokevirtual #599 // Method supportedElectricFxBones:(Ljava/lang/String;)Ljava/util/List; + 48: invokeinterface #506, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 53: astore_2 + 54: aload_2 + 55: invokeinterface #511, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 60: ifeq 82 + 63: aload_2 + 64: invokeinterface #515, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 69: checkcast #129 // class java/lang/String + 72: astore_3 + 73: aload_0 + 74: aload_3 + 75: iconst_1 + 76: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 79: goto 54 + 82: return + + private void refreshDynamicBoneCachesAfterReload(); + Code: + 0: getstatic #58 // Field dynamicBoneCacheGeneration:I + 3: istore_1 + 4: aload_0 + 5: getfield #60 // Field observedDynamicBoneCacheGeneration:I + 8: iload_1 + 9: if_icmpne 13 + 12: return + 13: aload_0 + 14: getfield #65 // Field supportedAttachmentBonesByModel:Ljava/util/Map; + 17: invokeinterface #602, 1 // InterfaceMethod java/util/Map.clear:()V + 22: aload_0 + 23: getfield #67 // Field supportedElectricFxBonesByModel:Ljava/util/Map; + 26: invokeinterface #602, 1 // InterfaceMethod java/util/Map.clear:()V + 31: aload_0 + 32: iload_1 + 33: putfield #60 // Field observedDynamicBoneCacheGeneration:I + 36: return + + private java.util.List supportedAttachmentBones(java.lang.String); + Code: + 0: aload_0 + 1: getfield #65 // Field supportedAttachmentBonesByModel:Ljava/util/Map; + 4: aload_1 + 5: aload_0 + 6: invokedynamic #612, 0 // InvokeDynamic #6:apply:(Lcom/ogaba/sa_combat/client/model/SAWeaponGeoModel;)Ljava/util/function/Function; + 11: invokeinterface #118, 3 // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; + 16: checkcast #502 // class java/util/List + 19: areturn + + private java.util.List supportedElectricFxBones(java.lang.String); + Code: + 0: aload_0 + 1: getfield #67 // Field supportedElectricFxBonesByModel:Ljava/util/Map; + 4: aload_1 + 5: aload_0 + 6: invokedynamic #617, 0 // InvokeDynamic #7:apply:(Lcom/ogaba/sa_combat/client/model/SAWeaponGeoModel;)Ljava/util/function/Function; + 11: invokeinterface #118, 3 // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; + 16: checkcast #502 // class java/util/List + 19: areturn + + private void applyAttachmentVisual(com.ogaba.sa_combat.combat.attachment.AttachmentSlot, com.ogaba.sa_combat.combat.attachment.WeaponAttachment); + Code: + 0: aload_2 + 1: ifnull 21 + 4: aload_2 + 5: invokevirtual #623 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.visualBoneName:()Ljava/lang/String; + 8: ifnull 21 + 11: aload_2 + 12: invokevirtual #623 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.visualBoneName:()Ljava/lang/String; + 15: invokevirtual #626 // Method java/lang/String.isBlank:()Z + 18: ifeq 22 + 21: return + 22: aload_0 + 23: aload_2 + 24: invokevirtual #630 // Method resolveAttachmentBone:(Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachment;)Ljava/lang/String; + 27: astore_3 + 28: aload_0 + 29: aload_3 + 30: iconst_0 + 31: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 34: ldc_w #632 // String attach_core_electric + 37: aload_3 + 38: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 41: ifne 60 + 44: ldc_w #634 // String electric_kit + 47: aload_2 + 48: invokevirtual #638 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.id:()Lnet/minecraft/resources/ResourceLocation; + 51: invokevirtual #641 // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String; + 54: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 57: ifeq 65 + 60: aload_0 + 61: iconst_1 + 62: putfield #299 // Field electricAttachmentInstalled:Z + 65: return + + private java.lang.String resolveAttachmentBone(com.ogaba.sa_combat.combat.attachment.WeaponAttachment); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #649 // Method attachmentBoneCandidates:(Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachment;)Ljava/util/List; + 5: invokeinterface #506, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 10: astore_2 + 11: aload_2 + 12: invokeinterface #511, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 17: ifeq 43 + 20: aload_2 + 21: invokeinterface #515, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 26: checkcast #129 // class java/lang/String + 29: astore_3 + 30: aload_0 + 31: aload_3 + 32: invokevirtual #585 // Method hasBone:(Ljava/lang/String;)Z + 35: ifeq 40 + 38: aload_3 + 39: areturn + 40: goto 11 + 43: aload_1 + 44: invokevirtual #623 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.visualBoneName:()Ljava/lang/String; + 47: areturn + + private java.util.List attachmentBoneCandidates(com.ogaba.sa_combat.combat.attachment.WeaponAttachment); + Code: + 0: getstatic #652 // Field ATTACHMENT_BONE_CANDIDATES_CACHE:Ljava/util/Map; + 3: aload_1 + 4: invokevirtual #638 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.id:()Lnet/minecraft/resources/ResourceLocation; + 7: invokeinterface #138, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 12: checkcast #502 // class java/util/List + 15: astore_2 + 16: aload_2 + 17: ifnull 22 + 20: aload_2 + 21: areturn + 22: aload_0 + 23: aload_1 + 24: invokevirtual #655 // Method computeAttachmentBoneCandidates:(Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachment;)Ljava/util/List; + 27: astore_3 + 28: getstatic #652 // Field ATTACHMENT_BONE_CANDIDATES_CACHE:Ljava/util/Map; + 31: aload_1 + 32: invokevirtual #638 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.id:()Lnet/minecraft/resources/ResourceLocation; + 35: aload_3 + 36: invokeinterface #154, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 41: pop + 42: aload_3 + 43: areturn + + private java.util.List computeAttachmentBoneCandidates(com.ogaba.sa_combat.combat.attachment.WeaponAttachment); + Code: + 0: aload_1 + 1: invokevirtual #623 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.visualBoneName:()Ljava/lang/String; + 4: astore_2 + 5: aload_1 + 6: invokevirtual #638 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.id:()Lnet/minecraft/resources/ResourceLocation; + 9: invokevirtual #641 // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String; + 12: astore_3 + 13: aload_3 + 14: invokedynamic #659, 0 // InvokeDynamic #8:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 19: astore 4 + 21: ldc_w #661 // String spyglass + 24: aload_3 + 25: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 28: ifeq 80 + 31: iconst_4 + 32: anewarray #129 // class java/lang/String + 35: dup + 36: iconst_0 + 37: aload_2 + 38: aastore + 39: dup + 40: iconst_1 + 41: ldc_w #663 // String attach_sight + 44: aastore + 45: dup + 46: iconst_2 + 47: aload 4 + 49: aastore + 50: dup + 51: iconst_3 + 52: ldc_w #661 // String spyglass + 55: aastore + 56: invokestatic #669 // InterfaceMethod java/util/stream/Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream; + 59: invokedynamic #679, 0 // InvokeDynamic #9:test:()Ljava/util/function/Predicate; + 64: invokeinterface #683, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 69: invokeinterface #687, 1 // InterfaceMethod java/util/stream/Stream.distinct:()Ljava/util/stream/Stream; + 74: invokeinterface #690, 1 // InterfaceMethod java/util/stream/Stream.toList:()Ljava/util/List; + 79: areturn + 80: ldc_w #692 // String spiked + 83: aload_3 + 84: invokevirtual #133 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 87: ifeq 139 + 90: iconst_4 + 91: anewarray #129 // class java/lang/String + 94: dup + 95: iconst_0 + 96: aload_2 + 97: aastore + 98: dup + 99: iconst_1 + 100: ldc_w #694 // String attach_spike + 103: aastore + 104: dup + 105: iconst_2 + 106: aload 4 + 108: aastore + 109: dup + 110: iconst_3 + 111: ldc_w #692 // String spiked + 114: aastore + 115: invokestatic #669 // InterfaceMethod java/util/stream/Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream; + 118: invokedynamic #699, 0 // InvokeDynamic #10:test:()Ljava/util/function/Predicate; + 123: invokeinterface #683, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 128: invokeinterface #687, 1 // InterfaceMethod java/util/stream/Stream.distinct:()Ljava/util/stream/Stream; + 133: invokeinterface #690, 1 // InterfaceMethod java/util/stream/Stream.toList:()Ljava/util/List; + 138: areturn + 139: iconst_2 + 140: anewarray #129 // class java/lang/String + 143: dup + 144: iconst_0 + 145: aload_2 + 146: aastore + 147: dup + 148: iconst_1 + 149: aload 4 + 151: aastore + 152: invokestatic #669 // InterfaceMethod java/util/stream/Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream; + 155: invokedynamic #704, 0 // InvokeDynamic #11:test:()Ljava/util/function/Predicate; + 160: invokeinterface #683, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; + 165: invokeinterface #687, 1 // InterfaceMethod java/util/stream/Stream.distinct:()Ljava/util/stream/Stream; + 170: invokeinterface #690, 1 // InterfaceMethod java/util/stream/Stream.toList:()Ljava/util/List; + 175: areturn + + private void showElectricFxFrame(java.lang.String); + Code: + 0: aload_0 + 1: aload_1 + 2: invokevirtual #599 // Method supportedElectricFxBones:(Ljava/lang/String;)Ljava/util/List; + 5: astore_2 + 6: aload_2 + 7: invokeinterface #709, 1 // InterfaceMethod java/util/List.isEmpty:()Z + 12: ifeq 16 + 15: return + 16: invokestatic #715 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 19: getfield #719 // Field net/minecraft/client/Minecraft.f_91073_:Lnet/minecraft/client/multiplayer/ClientLevel; + 22: ifnull 37 + 25: invokestatic #715 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 28: getfield #719 // Field net/minecraft/client/Minecraft.f_91073_:Lnet/minecraft/client/multiplayer/ClientLevel; + 31: invokevirtual #725 // Method net/minecraft/client/multiplayer/ClientLevel.m_46467_:()J + 34: goto 44 + 37: invokestatic #730 // Method net/minecraft/Util.m_137550_:()J + 40: ldc2_w #731 // long 50l + 43: ldiv + 44: lstore_3 + 45: lload_3 + 46: ldc2_w #733 // long 3l + 49: ldiv + 50: aload_2 + 51: invokeinterface #737, 1 // InterfaceMethod java/util/List.size:()I + 56: i2l + 57: lrem + 58: l2i + 59: istore 5 + 61: aload_0 + 62: aload_2 + 63: iload 5 + 65: invokeinterface #740, 2 // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object; + 70: checkcast #129 // class java/lang/String + 73: iconst_0 + 74: invokevirtual #437 // Method setBoneHidden:(Ljava/lang/String;Z)V + 77: return + + private int chainsawTextureFrame(); + Code: + 0: invokestatic #715 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: getfield #719 // Field net/minecraft/client/Minecraft.f_91073_:Lnet/minecraft/client/multiplayer/ClientLevel; + 6: ifnull 21 + 9: invokestatic #715 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 12: getfield #719 // Field net/minecraft/client/Minecraft.f_91073_:Lnet/minecraft/client/multiplayer/ClientLevel; + 15: invokevirtual #725 // Method net/minecraft/client/multiplayer/ClientLevel.m_46467_:()J + 18: goto 28 + 21: invokestatic #730 // Method net/minecraft/Util.m_137550_:()J + 24: ldc2_w #731 // long 50l + 27: ldiv + 28: lstore_1 + 29: lload_1 + 30: ldc2_w #744 // long 2l + 33: ldiv + 34: lconst_1 + 35: land + 36: l2i + 37: ireturn + + private boolean hasBone(java.lang.String); + Code: + 0: aload_0 + 1: invokevirtual #336 // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor; + 4: aload_1 + 5: invokevirtual #344 // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone; + 8: ifnull 15 + 11: iconst_1 + 12: goto 16 + 15: iconst_0 + 16: ireturn + + private void setBoneHidden(java.lang.String, boolean); + Code: + 0: aload_0 + 1: invokevirtual #336 // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor; + 4: aload_1 + 5: invokevirtual #344 // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone; + 8: astore_3 + 9: aload_3 + 10: ifnull 20 + 13: aload_3 + 14: iload_2 + 15: invokeinterface #749, 2 // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setHidden:(Z)V + 20: return + + private static net.minecraft.resources.ResourceLocation firstExisting(java.lang.String, java.lang.String...); + Code: + 0: new #120 // class net/minecraft/resources/ResourceLocation + 3: dup + 4: ldc_w #752 // String sa_combat + 7: aload_0 + 8: invokespecial #755 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 11: astore_2 + 12: aload_2 + 13: invokestatic #759 // Method textureExists:(Lnet/minecraft/resources/ResourceLocation;)Z + 16: ifeq 21 + 19: aload_2 + 20: areturn + 21: aload_1 + 22: astore_3 + 23: aload_3 + 24: arraylength + 25: istore 4 + 27: iconst_0 + 28: istore 5 + 30: iload 5 + 32: iload 4 + 34: if_icmpge 74 + 37: aload_3 + 38: iload 5 + 40: aaload + 41: astore 6 + 43: new #120 // class net/minecraft/resources/ResourceLocation + 46: dup + 47: ldc_w #752 // String sa_combat + 50: aload 6 + 52: invokespecial #755 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 55: astore 7 + 57: aload 7 + 59: invokestatic #759 // Method textureExists:(Lnet/minecraft/resources/ResourceLocation;)Z + 62: ifeq 68 + 65: aload 7 + 67: areturn + 68: iinc 5, 1 + 71: goto 30 + 74: aload_2 + 75: areturn + + private static boolean textureExists(net.minecraft.resources.ResourceLocation); + Code: + 0: aload_0 + 1: invokestatic #765 // Method resourceExists:(Lnet/minecraft/resources/ResourceLocation;)Z + 4: ireturn + + private static boolean resourceExists(net.minecraft.resources.ResourceLocation); + Code: + 0: getstatic #770 // Field RESOURCE_EXISTS_CACHE:Ljava/util/Map; + 3: aload_0 + 4: invokeinterface #138, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 9: checkcast #772 // class java/lang/Boolean + 12: astore_1 + 13: aload_1 + 14: ifnull 22 + 17: aload_1 + 18: invokevirtual #775 // Method java/lang/Boolean.booleanValue:()Z + 21: ireturn + 22: invokestatic #715 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 25: invokevirtual #779 // Method net/minecraft/client/Minecraft.m_91098_:()Lnet/minecraft/server/packs/resources/ResourceManager; + 28: aload_0 + 29: invokeinterface #785, 2 // InterfaceMethod net/minecraft/server/packs/resources/ResourceManager.m_213713_:(Lnet/minecraft/resources/ResourceLocation;)Ljava/util/Optional; + 34: invokevirtual #790 // Method java/util/Optional.isPresent:()Z + 37: istore_2 + 38: goto 44 + 41: astore_3 + 42: iconst_0 + 43: istore_2 + 44: getstatic #770 // Field RESOURCE_EXISTS_CACHE:Ljava/util/Map; + 47: aload_0 + 48: iload_2 + 49: invokestatic #794 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; + 52: invokeinterface #154, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 57: pop + 58: iload_2 + 59: ireturn + Exception table: + from to target type + 22 38 41 Class java/lang/Exception + + public static void clearResourceExistenceCache(); + Code: + 0: getstatic #770 // Field RESOURCE_EXISTS_CACHE:Ljava/util/Map; + 3: invokeinterface #602, 1 // InterfaceMethod java/util/Map.clear:()V + 8: getstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 11: invokeinterface #602, 1 // InterfaceMethod java/util/Map.clear:()V + 16: getstatic #242 // Field ANIMATION_RESOURCE_CACHE:Ljava/util/Map; + 19: invokeinterface #602, 1 // InterfaceMethod java/util/Map.clear:()V + 24: getstatic #652 // Field ATTACHMENT_BONE_CANDIDATES_CACHE:Ljava/util/Map; + 27: invokeinterface #602, 1 // InterfaceMethod java/util/Map.clear:()V + 32: getstatic #58 // Field dynamicBoneCacheGeneration:I + 35: iconst_1 + 36: iadd + 37: putstatic #58 // Field dynamicBoneCacheGeneration:I + 40: return + + private static java.lang.String itemPath(com.ogaba.sa_combat.combat.weapon.SAWeaponItem); + Code: + 0: getstatic #802 // Field ITEM_PATH_CACHE:Ljava/util/Map; + 3: aload_0 + 4: invokedynamic #808, 0 // InvokeDynamic #12:apply:()Ljava/util/function/Function; + 9: invokeinterface #118, 3 // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; + 14: checkcast #129 // class java/lang/String + 17: areturn + + public net.minecraft.resources.ResourceLocation getAnimationResource(software.bernie.geckolib.core.animatable.GeoAnimatable); + Code: + 0: aload_0 + 1: aload_1 + 2: checkcast #182 // class com/ogaba/sa_combat/combat/weapon/SAWeaponItem + 5: invokevirtual #812 // Method getAnimationResource:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Lnet/minecraft/resources/ResourceLocation; + 8: areturn + + public net.minecraft.resources.ResourceLocation getTextureResource(software.bernie.geckolib.core.animatable.GeoAnimatable); + Code: + 0: aload_0 + 1: aload_1 + 2: checkcast #182 // class com/ogaba/sa_combat/combat/weapon/SAWeaponItem + 5: invokevirtual #814 // Method getTextureResource:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Lnet/minecraft/resources/ResourceLocation; + 8: areturn + + public net.minecraft.resources.ResourceLocation getModelResource(software.bernie.geckolib.core.animatable.GeoAnimatable); + Code: + 0: aload_0 + 1: aload_1 + 2: checkcast #182 // class com/ogaba/sa_combat/combat/weapon/SAWeaponItem + 5: invokevirtual #816 // Method getModelResource:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Lnet/minecraft/resources/ResourceLocation; + 8: areturn + + public void setCustomAnimations(software.bernie.geckolib.core.animatable.GeoAnimatable, long, software.bernie.geckolib.core.animation.AnimationState); + Code: + 0: aload_0 + 1: aload_1 + 2: checkcast #182 // class com/ogaba/sa_combat/combat/weapon/SAWeaponItem + 5: lload_2 + 6: aload 4 + 8: invokevirtual #818 // Method setCustomAnimations:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;JLsoftware/bernie/geckolib/core/animation/AnimationState;)V + 11: return + + private static java.lang.String lambda$itemPath$7(com.ogaba.sa_combat.combat.weapon.SAWeaponItem); + Code: + 0: getstatic #824 // Field net/minecraft/core/registries/BuiltInRegistries.f_257033_:Lnet/minecraft/core/DefaultedRegistry; + 3: aload_0 + 4: invokeinterface #830, 2 // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_7981_:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation; + 9: astore_1 + 10: aload_1 + 11: ifnonnull 19 + 14: ldc #127 // String baseball_bat + 16: goto 23 + 19: aload_1 + 20: invokevirtual #641 // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String; + 23: areturn + + private static boolean lambda$computeAttachmentBoneCandidates$6(java.lang.String); + Code: + 0: aload_0 + 1: ifnull 15 + 4: aload_0 + 5: invokevirtual #626 // Method java/lang/String.isBlank:()Z + 8: ifne 15 + 11: iconst_1 + 12: goto 16 + 15: iconst_0 + 16: ireturn + + private static boolean lambda$computeAttachmentBoneCandidates$5(java.lang.String); + Code: + 0: aload_0 + 1: ifnull 15 + 4: aload_0 + 5: invokevirtual #626 // Method java/lang/String.isBlank:()Z + 8: ifne 15 + 11: iconst_1 + 12: goto 16 + 15: iconst_0 + 16: ireturn + + private static boolean lambda$computeAttachmentBoneCandidates$4(java.lang.String); + Code: + 0: aload_0 + 1: ifnull 15 + 4: aload_0 + 5: invokevirtual #626 // Method java/lang/String.isBlank:()Z + 8: ifne 15 + 11: iconst_1 + 12: goto 16 + 15: iconst_0 + 16: ireturn + + private java.util.List lambda$supportedElectricFxBones$3(java.lang.String); + Code: + 0: new #835 // class java/util/ArrayList + 3: dup + 4: getstatic #837 // Field ELECTRIC_FX_BONES:Ljava/util/List; + 7: invokeinterface #737, 1 // InterfaceMethod java/util/List.size:()I + 12: invokespecial #840 // Method java/util/ArrayList."":(I)V + 15: astore_2 + 16: getstatic #837 // Field ELECTRIC_FX_BONES:Ljava/util/List; + 19: invokeinterface #506, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 24: astore_3 + 25: aload_3 + 26: invokeinterface #511, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 31: ifeq 66 + 34: aload_3 + 35: invokeinterface #515, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 40: checkcast #129 // class java/lang/String + 43: astore 4 + 45: aload_0 + 46: aload 4 + 48: invokevirtual #585 // Method hasBone:(Ljava/lang/String;)Z + 51: ifeq 63 + 54: aload_2 + 55: aload 4 + 57: invokeinterface #843, 2 // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z + 62: pop + 63: goto 25 + 66: aload_2 + 67: invokestatic #847 // InterfaceMethod java/util/List.copyOf:(Ljava/util/Collection;)Ljava/util/List; + 70: areturn + + private java.util.List lambda$supportedAttachmentBones$2(java.lang.String); + Code: + 0: new #850 // class java/util/LinkedHashSet + 3: dup + 4: invokespecial #851 // Method java/util/LinkedHashSet."":()V + 7: astore_2 + 8: invokestatic #857 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentRegistry.values:()Ljava/util/Collection; + 11: invokeinterface #860, 1 // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator; + 16: astore_3 + 17: aload_3 + 18: invokeinterface #511, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 23: ifeq 104 + 26: aload_3 + 27: invokeinterface #515, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 32: checkcast #619 // class com/ogaba/sa_combat/combat/attachment/WeaponAttachment + 35: astore 4 + 37: aload 4 + 39: ifnonnull 45 + 42: goto 17 + 45: aload_0 + 46: aload 4 + 48: invokevirtual #649 // Method attachmentBoneCandidates:(Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachment;)Ljava/util/List; + 51: invokeinterface #506, 1 // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator; + 56: astore 5 + 58: aload 5 + 60: invokeinterface #511, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 65: ifeq 101 + 68: aload 5 + 70: invokeinterface #515, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 75: checkcast #129 // class java/lang/String + 78: astore 6 + 80: aload_0 + 81: aload 6 + 83: invokevirtual #585 // Method hasBone:(Ljava/lang/String;)Z + 86: ifeq 98 + 89: aload_2 + 90: aload 6 + 92: invokeinterface #863, 2 // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z + 97: pop + 98: goto 58 + 101: goto 17 + 104: aload_2 + 105: invokestatic #847 // InterfaceMethod java/util/List.copyOf:(Ljava/util/Collection;)Ljava/util/List; + 108: areturn + + private static net.minecraft.resources.ResourceLocation lambda$getAnimationResource$1(java.lang.String); + Code: + 0: new #120 // class net/minecraft/resources/ResourceLocation + 3: dup + 4: ldc_w #752 // String sa_combat + 7: aload_0 + 8: invokedynamic #868, 0 // InvokeDynamic #13:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 13: invokespecial #755 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 16: astore_1 + 17: aload_1 + 18: invokestatic #765 // Method resourceExists:(Lnet/minecraft/resources/ResourceLocation;)Z + 21: ifeq 26 + 24: aload_1 + 25: areturn + 26: aload_0 + 27: invokestatic #216 // Method isShieldPath:(Ljava/lang/String;)Z + 30: ifeq 56 + 33: new #120 // class net/minecraft/resources/ResourceLocation + 36: dup + 37: ldc_w #752 // String sa_combat + 40: ldc_w #870 // String animations/item/shield.animation.json + 43: invokespecial #755 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 46: astore_2 + 47: aload_2 + 48: invokestatic #765 // Method resourceExists:(Lnet/minecraft/resources/ResourceLocation;)Z + 51: ifeq 56 + 54: aload_2 + 55: areturn + 56: new #120 // class net/minecraft/resources/ResourceLocation + 59: dup + 60: ldc_w #752 // String sa_combat + 63: ldc_w #872 // String animations/item/empty.animation.json + 66: invokespecial #755 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 69: areturn + + private static net.minecraft.resources.ResourceLocation lambda$getModelResource$0(java.lang.String); + Code: + 0: new #120 // class net/minecraft/resources/ResourceLocation + 3: dup + 4: ldc_w #752 // String sa_combat + 7: aload_0 + 8: invokedynamic #877, 0 // InvokeDynamic #14:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String; + 13: invokespecial #755 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 16: areturn + + static {}; + Code: + 0: new #880 // class java/util/concurrent/ConcurrentHashMap + 3: dup + 4: invokespecial #881 // Method java/util/concurrent/ConcurrentHashMap."":()V + 7: putstatic #770 // Field RESOURCE_EXISTS_CACHE:Ljava/util/Map; + 10: new #880 // class java/util/concurrent/ConcurrentHashMap + 13: dup + 14: invokespecial #881 // Method java/util/concurrent/ConcurrentHashMap."":()V + 17: putstatic #652 // Field ATTACHMENT_BONE_CANDIDATES_CACHE:Ljava/util/Map; + 20: new #880 // class java/util/concurrent/ConcurrentHashMap + 23: dup + 24: invokespecial #881 // Method java/util/concurrent/ConcurrentHashMap."":()V + 27: putstatic #802 // Field ITEM_PATH_CACHE:Ljava/util/Map; + 30: new #880 // class java/util/concurrent/ConcurrentHashMap + 33: dup + 34: invokespecial #881 // Method java/util/concurrent/ConcurrentHashMap."":()V + 37: putstatic #100 // Field MODEL_RESOURCE_CACHE:Ljava/util/Map; + 40: new #880 // class java/util/concurrent/ConcurrentHashMap + 43: dup + 44: invokespecial #881 // Method java/util/concurrent/ConcurrentHashMap."":()V + 47: putstatic #135 // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map; + 50: new #880 // class java/util/concurrent/ConcurrentHashMap + 53: dup + 54: invokespecial #881 // Method java/util/concurrent/ConcurrentHashMap."":()V + 57: putstatic #242 // Field ANIMATION_RESOURCE_CACHE:Ljava/util/Map; + 60: bipush 16 + 62: anewarray #129 // class java/lang/String + 65: dup + 66: iconst_0 + 67: ldc_w #883 // String attach_core_electric_fx_0 + 70: aastore + 71: dup + 72: iconst_1 + 73: ldc_w #885 // String attach_core_electric_fx_1 + 76: aastore + 77: dup + 78: iconst_2 + 79: ldc_w #887 // String attach_core_electric_fx_2 + 82: aastore + 83: dup + 84: iconst_3 + 85: ldc_w #889 // String attach_core_electric_fx_3 + 88: aastore + 89: dup + 90: iconst_4 + 91: ldc_w #891 // String attach_core_electric_fx_4 + 94: aastore + 95: dup + 96: iconst_5 + 97: ldc_w #893 // String attach_core_electric_fx_5 + 100: aastore + 101: dup + 102: bipush 6 + 104: ldc_w #895 // String attach_core_electric_fx_6 + 107: aastore + 108: dup + 109: bipush 7 + 111: ldc_w #897 // String attach_core_electric_fx_7 + 114: aastore + 115: dup + 116: bipush 8 + 118: ldc_w #899 // String electric_fx_0 + 121: aastore + 122: dup + 123: bipush 9 + 125: ldc_w #901 // String electric_fx_1 + 128: aastore + 129: dup + 130: bipush 10 + 132: ldc_w #903 // String electric_fx_2 + 135: aastore + 136: dup + 137: bipush 11 + 139: ldc_w #905 // String electric_fx_3 + 142: aastore + 143: dup + 144: bipush 12 + 146: ldc_w #907 // String electric_fx_4 + 149: aastore + 150: dup + 151: bipush 13 + 153: ldc_w #909 // String electric_fx_5 + 156: aastore + 157: dup + 158: bipush 14 + 160: ldc_w #911 // String electric_fx_6 + 163: aastore + 164: dup + 165: bipush 15 + 167: ldc_w #913 // String electric_fx_7 + 170: aastore + 171: invokestatic #916 // InterfaceMethod java/util/List.of:([Ljava/lang/Object;)Ljava/util/List; + 174: putstatic #837 // Field ELECTRIC_FX_BONES:Ljava/util/List; + 177: ldc_w #575 // String arrow + 180: ldc_w #413 // String arrow_bolt + 183: ldc_w #415 // String arrow_Improvised + 186: ldc_w #563 // String arrow_improvised + 189: ldc_w #571 // String tactical_arrow + 192: ldc_w #565 // String improvised_arrow + 195: ldc_w #573 // String bolt + 198: invokestatic #919 // InterfaceMethod java/util/List.of:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List; + 201: putstatic #582 // Field CROSSBOW_PROJECTILE_BONES:Ljava/util/List; + 204: return +} + + +==================== com.ogaba.sa_combat.client.render.NailGunAimClient ==================== +Compiled from "NailGunAimClient.java" +public final class com.ogaba.sa_combat.client.render.NailGunAimClient { + private static final float OPEN_RESPONSE_PER_SECOND; + + private static final float CLOSE_RESPONSE_PER_SECOND; + + private static final float AIM_MOVEMENT_MULTIPLIER; + + private static float progress; + + private static long lastUpdateNanos; + + private com.ogaba.sa_combat.client.render.NailGunAimClient(); + Code: + 0: aload_0 + 1: invokespecial #19 // Method java/lang/Object."":()V + 4: return + + public static void tick(); + Code: + 0: invokestatic #28 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft; + 3: astore_0 + 4: invokestatic #34 // Method java/lang/System.nanoTime:()J + 7: lstore_1 + 8: getstatic #36 // Field lastUpdateNanos:J + 11: lconst_0 + 12: lcmp + 13: ifne 22 + 16: ldc #37 // float 0.05f + 18: fstore_3 + 19: goto 38 + 22: lload_1 + 23: getstatic #36 // Field lastUpdateNanos:J + 26: lsub + 27: l2f + 28: ldc #38 // float 1.0E9f + 30: fdiv + 31: fconst_0 + 32: ldc #39 // float 0.1f + 34: invokestatic #45 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 37: fstore_3 + 38: lload_1 + 39: putstatic #36 // Field lastUpdateNanos:J + 42: aload_0 + 43: invokestatic #49 // Method shouldAim:(Lnet/minecraft/client/Minecraft;)Z + 46: ifeq 53 + 49: fconst_1 + 50: goto 54 + 53: fconst_0 + 54: fstore 4 + 56: fload 4 + 58: getstatic #51 // Field progress:F + 61: fcmpl + 62: ifle 70 + 65: ldc #8 // float 18.0f + 67: goto 72 + 70: ldc #10 // float 22.0f + 72: fstore 5 + 74: fconst_1 + 75: fload 5 + 77: fneg + 78: fload_3 + 79: fmul + 80: f2d + 81: invokestatic #57 // Method java/lang/Math.exp:(D)D + 84: d2f + 85: fsub + 86: fstore 6 + 88: fload 6 + 90: getstatic #51 // Field progress:F + 93: fload 4 + 95: invokestatic #60 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 98: putstatic #51 // Field progress:F + 101: getstatic #51 // Field progress:F + 104: ldc #61 // float 5.0E-4f + 106: fcmpg + 107: ifge 124 + 110: fload 4 + 112: fconst_0 + 113: fcmpl + 114: ifne 124 + 117: fconst_0 + 118: putstatic #51 // Field progress:F + 121: goto 144 + 124: getstatic #51 // Field progress:F + 127: ldc #62 // float 0.9995f + 129: fcmpl + 130: ifle 144 + 133: fload 4 + 135: fconst_1 + 136: fcmpl + 137: ifne 144 + 140: fconst_1 + 141: putstatic #51 // Field progress:F + 144: return + + private static boolean shouldAim(net.minecraft.client.Minecraft); + Code: + 0: aload_0 + 1: getfield #73 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer; + 4: astore_1 + 5: aload_1 + 6: ifnull 42 + 9: aload_0 + 10: getfield #77 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen; + 13: ifnonnull 42 + 16: aload_0 + 17: getfield #81 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 20: invokevirtual #87 // Method net/minecraft/client/Options.m_92176_:()Lnet/minecraft/client/CameraType; + 23: invokevirtual #93 // Method net/minecraft/client/CameraType.m_90612_:()Z + 26: ifeq 42 + 29: aload_0 + 30: getfield #81 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options; + 33: getfield #97 // Field net/minecraft/client/Options.f_92095_:Lnet/minecraft/client/KeyMapping; + 36: invokevirtual #102 // Method net/minecraft/client/KeyMapping.m_90857_:()Z + 39: ifne 44 + 42: iconst_0 + 43: ireturn + 44: aload_1 + 45: invokevirtual #108 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 48: astore_2 + 49: aload_2 + 50: invokevirtual #114 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 53: instanceof #116 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 56: ifeq 77 + 59: aload_2 + 60: invokestatic #120 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 63: ifne 77 + 66: aload_2 + 67: invokestatic #123 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 70: ifne 77 + 73: iconst_1 + 74: goto 78 + 77: iconst_0 + 78: ireturn + + public static float getProgress(); + Code: + 0: getstatic #51 // Field progress:F + 3: fconst_0 + 4: fconst_1 + 5: invokestatic #45 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 8: fstore_0 + 9: fload_0 + 10: fload_0 + 11: fmul + 12: ldc #130 // float 3.0f + 14: fconst_2 + 15: fload_0 + 16: fmul + 17: fsub + 18: fmul + 19: freturn + + public static boolean isAiming(net.minecraft.world.entity.player.Player); + Code: + 0: aload_0 + 1: ifnull 30 + 4: aload_0 + 5: invokevirtual #108 // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack; + 8: invokevirtual #114 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 11: instanceof #116 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 14: ifeq 30 + 17: invokestatic #135 // Method getProgress:()F + 20: ldc #136 // float 0.01f + 22: fcmpl + 23: ifle 30 + 26: iconst_1 + 27: goto 31 + 30: iconst_0 + 31: ireturn + + public static float getMovementMultiplier(); + Code: + 0: invokestatic #135 // Method getProgress:()F + 3: fconst_1 + 4: ldc #12 // float 0.58f + 6: invokestatic #60 // Method net/minecraft/util/Mth.m_14179_:(FFF)F + 9: freturn + + public static void reset(); + Code: + 0: fconst_0 + 1: putstatic #51 // Field progress:F + 4: lconst_0 + 5: putstatic #36 // Field lastUpdateNanos:J + 8: return +} + + +==================== com.ogaba.sa_combat.combat.weapon.NailGunItem ==================== +Compiled from "NailGunItem.java" +public class com.ogaba.sa_combat.combat.weapon.NailGunItem extends com.ogaba.sa_combat.combat.weapon.SAWeaponItem { + private static final java.lang.String NBT_MAGAZINE; + + private static final java.lang.String NBT_RELOADING; + + private static final java.lang.String NBT_RELOAD_TARGET; + + private static final java.lang.String NBT_RELOAD_END_TICK; + + private static final java.lang.String NBT_SERVER_NEXT_FIRE_SCALED; + + private static final int BASE_MAGAZINE_CAPACITY; + + private static final int EXTENDED_MAGAZINE_CAPACITY; + + public static final int RELOAD_TICKS; + + public static final float AUTO_FIRE_RATE_PER_SECOND; + + private static final long SHOOT_ANIM_DURATION_MS; + + private static final float BASE_INACCURACY; + + private static final float STOCK_INACCURACY; + + private static final float BASE_VOLUME; + + private static final float SILENCED_VOLUME; + + private static final float BASE_PITCH_MIN; + + private static final float BASE_PITCH_MAX; + + private static final float SILENCED_PITCH_MIN; + + private static final float SILENCED_PITCH_MAX; + + private static final float NAIL_VELOCITY; + + private static final float SILENCED_NAIL_VELOCITY; + + private static final double MUZZLE_FORWARD_HIP; + + private static final double MUZZLE_FORWARD_AIM; + + private static final double MUZZLE_RIGHT_HIP; + + private static final double MUZZLE_DOWN_HIP; + + private static final double MUZZLE_DOWN_AIM; + + private static final double MUZZLE_STRAFE_COMPENSATION; + + private static final double MUZZLE_STRAFE_COMPENSATION_LIMIT; + + private static final double AIM_CONVERGENCE_DISTANCE; + + private static final net.minecraft.resources.ResourceLocation NAIL_ITEM_ID; + + private static final software.bernie.geckolib.core.animation.RawAnimation ANIM_IDLE; + + private static final software.bernie.geckolib.core.animation.RawAnimation ANIM_DRAW; + + private static final software.bernie.geckolib.core.animation.RawAnimation ANIM_SHOOT; + + private static final software.bernie.geckolib.core.animation.RawAnimation ANIM_RELOAD; + + private static final java.util.Map CLIENT_SHOOT_ANIM_START; + + private static final java.util.Map CLIENT_LAST_HANDLED_SHOT; + + private static final java.util.Map CLIENT_LAST_HAND_RENDER; + + private static final java.util.Map CLIENT_DRAW_ANIM_START; + + private static final java.util.Map CLIENT_LAST_HANDLED_DRAW; + + private static final java.util.Map CLIENT_RELOAD_ANIM_START; + + private static final java.util.Map CLIENT_LAST_HANDLED_RELOAD; + + private static final long DRAW_ANIM_DURATION_MS; + + private static final long DRAW_REARM_GAP_MS; + + private static int reloadTicksForStack(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokestatic #131 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getSpeedBonus:(Lnet/minecraft/world/item/ItemStack;)D + 4: aload_0 + 5: invokestatic #134 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getSpeedBonus:(Lnet/minecraft/world/item/ItemStack;)D + 8: dadd + 9: dstore_1 + 10: dload_1 + 11: ldc2_w #135 // double 0.1d + 14: ddiv + 15: invokestatic #142 // Method java/lang/Math.round:(D)J + 18: l2i + 19: istore_3 + 20: iload_3 + 21: iconst_4 + 22: imul + 23: istore 4 + 25: bipush 15 + 27: bipush 37 + 29: iload 4 + 31: isub + 32: invokestatic #146 // Method java/lang/Math.max:(II)I + 35: ireturn + + public com.ogaba.sa_combat.combat.weapon.NailGunItem(com.ogaba.sa_combat.combat.weapon.WeaponDefinition); + Code: + 0: aload_0 + 1: aload_1 + 2: invokespecial #155 // Method com/ogaba/sa_combat/combat/weapon/SAWeaponItem."":(Lcom/ogaba/sa_combat/combat/weapon/WeaponDefinition;)V + 5: return + + public net.minecraft.world.item.UseAnim m_6164_(net.minecraft.world.item.ItemStack); + Code: + 0: getstatic #167 // Field net/minecraft/world/item/UseAnim.NONE:Lnet/minecraft/world/item/UseAnim; + 3: areturn + + public boolean shouldCauseReequipAnimation(net.minecraft.world.item.ItemStack, net.minecraft.world.item.ItemStack, boolean); + Code: + 0: iload_3 + 1: ifeq 6 + 4: iconst_1 + 5: ireturn + 6: aload_1 + 7: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 10: ifne 20 + 13: aload_2 + 14: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 17: ifeq 37 + 20: aload_1 + 21: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 24: aload_2 + 25: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 28: if_icmpeq 35 + 31: iconst_1 + 32: goto 36 + 35: iconst_0 + 36: ireturn + 37: aload_1 + 38: invokevirtual #179 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 41: aload_2 + 42: invokevirtual #179 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 45: if_acmpeq 52 + 48: iconst_1 + 49: goto 53 + 52: iconst_0 + 53: ireturn + + public boolean shouldCauseBlockBreakReset(net.minecraft.world.item.ItemStack, net.minecraft.world.item.ItemStack); + Code: + 0: aload_1 + 1: invokevirtual #179 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 4: aload_2 + 5: invokevirtual #179 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 8: if_acmpeq 15 + 11: iconst_1 + 12: goto 16 + 15: iconst_0 + 16: ireturn + + public com.google.common.collect.Multimap m_7167_(net.minecraft.world.entity.EquipmentSlot); + Code: + 0: invokestatic #194 // Method com/google/common/collect/ImmutableMultimap.of:()Lcom/google/common/collect/ImmutableMultimap; + 3: areturn + + public com.google.common.collect.Multimap getAttributeModifiers(net.minecraft.world.entity.EquipmentSlot, net.minecraft.world.item.ItemStack); + Code: + 0: invokestatic #194 // Method com/google/common/collect/ImmutableMultimap.of:()Lcom/google/common/collect/ImmutableMultimap; + 3: areturn + + public boolean m_7579_(net.minecraft.world.item.ItemStack, net.minecraft.world.entity.LivingEntity, net.minecraft.world.entity.LivingEntity); + Code: + 0: iconst_0 + 1: ireturn + + public net.minecraft.world.InteractionResultHolder m_7203_(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.InteractionHand); + Code: + 0: aload_2 + 1: aload_3 + 2: invokevirtual #213 // Method net/minecraft/world/entity/player/Player.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack; + 5: invokestatic #219 // Method net/minecraft/world/InteractionResultHolder.m_19100_:(Ljava/lang/Object;)Lnet/minecraft/world/InteractionResultHolder; + 8: areturn + + public void m_6883_(net.minecraft.world.item.ItemStack, net.minecraft.world.level.Level, net.minecraft.world.entity.Entity, int, boolean); + Code: + 0: aload_0 + 1: aload_1 + 2: aload_2 + 3: aload_3 + 4: iload 4 + 6: iload 5 + 8: invokespecial #229 // Method com/ogaba/sa_combat/combat/weapon/SAWeaponItem.m_6883_:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/Entity;IZ)V + 11: aload_2 + 12: instanceof #231 // class net/minecraft/server/level/ServerLevel + 15: ifeq 31 + 18: aload_2 + 19: checkcast #231 // class net/minecraft/server/level/ServerLevel + 22: astore 6 + 24: aload_1 + 25: aload 6 + 27: invokestatic #237 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getOrAssignId:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/server/level/ServerLevel;)J + 30: pop2 + 31: aload_2 + 32: invokevirtual #242 // Method net/minecraft/world/level/Level.m_5776_:()Z + 35: ifne 61 + 38: aload_1 + 39: invokestatic #246 // Method isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 42: ifeq 61 + 45: aload_3 + 46: instanceof #209 // class net/minecraft/world/entity/player/Player + 49: ifeq 61 + 52: aload_3 + 53: checkcast #209 // class net/minecraft/world/entity/player/Player + 56: astore 6 + 58: goto 62 + 61: return + 62: iload 5 + 64: ifne 78 + 67: aload_1 + 68: iconst_0 + 69: invokestatic #250 // Method setReloading:(Lnet/minecraft/world/item/ItemStack;Z)V + 72: aload_1 + 73: iconst_0 + 74: invokestatic #254 // Method setReloadTarget:(Lnet/minecraft/world/item/ItemStack;I)V + 77: return + 78: aload 6 + 80: invokevirtual #257 // Method net/minecraft/world/entity/player/Player.m_20142_:()Z + 83: ifeq 92 + 86: aload 6 + 88: iconst_0 + 89: invokevirtual #261 // Method net/minecraft/world/entity/player/Player.m_6858_:(Z)V + 92: aload_2 + 93: invokevirtual #265 // Method net/minecraft/world/level/Level.m_46467_:()J + 96: aload_1 + 97: invokestatic #269 // Method getReloadEndTick:(Lnet/minecraft/world/item/ItemStack;)J + 100: lcmp + 101: ifge 105 + 104: return + 105: aload_1 + 106: invokestatic #272 // Method getReloadTarget:(Lnet/minecraft/world/item/ItemStack;)I + 109: istore 7 + 111: aload 6 + 113: invokevirtual #276 // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities; + 116: getfield #281 // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z + 119: istore 8 + 121: iload 8 + 123: ifne 138 + 126: iload 7 + 128: ifle 138 + 131: aload 6 + 133: iload 7 + 135: invokestatic #285 // Method consumeReserveAmmo:(Lnet/minecraft/world/entity/player/Player;I)V + 138: aload_1 + 139: aload_1 + 140: invokestatic #288 // Method magazineCapacity:(Lnet/minecraft/world/item/ItemStack;)I + 143: aload_1 + 144: invokestatic #291 // Method getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 147: iload 7 + 149: iadd + 150: invokestatic #294 // Method java/lang/Math.min:(II)I + 153: invokestatic #297 // Method setMagazine:(Lnet/minecraft/world/item/ItemStack;I)V + 156: aload_1 + 157: iconst_0 + 158: invokestatic #250 // Method setReloading:(Lnet/minecraft/world/item/ItemStack;Z)V + 161: aload_1 + 162: iconst_0 + 163: invokestatic #254 // Method setReloadTarget:(Lnet/minecraft/world/item/ItemStack;I)V + 166: return + + public boolean attemptReload(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack); + Code: + 0: aload_3 + 1: invokestatic #246 // Method isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 4: ifeq 9 + 7: iconst_0 + 8: ireturn + 9: aload_3 + 10: invokestatic #291 // Method getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 13: istore 4 + 15: aload_3 + 16: invokestatic #288 // Method magazineCapacity:(Lnet/minecraft/world/item/ItemStack;)I + 19: istore 5 + 21: iload 4 + 23: iload 5 + 25: if_icmplt 30 + 28: iconst_0 + 29: ireturn + 30: aload_2 + 31: invokevirtual #276 // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities; + 34: getfield #281 // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z + 37: istore 6 + 39: aload_2 + 40: invokestatic #311 // Method countReserveAmmo:(Lnet/minecraft/world/entity/player/Player;)I + 43: istore 7 + 45: iload 7 + 47: ifgt 57 + 50: iload 6 + 52: ifne 57 + 55: iconst_0 + 56: ireturn + 57: aload_2 + 58: invokevirtual #257 // Method net/minecraft/world/entity/player/Player.m_20142_:()Z + 61: ifeq 69 + 64: aload_2 + 65: iconst_0 + 66: invokevirtual #261 // Method net/minecraft/world/entity/player/Player.m_6858_:(Z)V + 69: iload 6 + 71: ifeq 82 + 74: iload 5 + 76: iload 4 + 78: isub + 79: goto 92 + 82: iload 5 + 84: iload 4 + 86: isub + 87: iload 7 + 89: invokestatic #294 // Method java/lang/Math.min:(II)I + 92: istore 8 + 94: aload_3 + 95: iconst_1 + 96: invokestatic #250 // Method setReloading:(Lnet/minecraft/world/item/ItemStack;Z)V + 99: aload_3 + 100: iload 8 + 102: invokestatic #254 // Method setReloadTarget:(Lnet/minecraft/world/item/ItemStack;I)V + 105: aload_3 + 106: aload_1 + 107: invokevirtual #265 // Method net/minecraft/world/level/Level.m_46467_:()J + 110: aload_3 + 111: invokestatic #313 // Method reloadTicksForStack:(Lnet/minecraft/world/item/ItemStack;)I + 114: i2l + 115: ladd + 116: invokestatic #317 // Method setReloadEndTick:(Lnet/minecraft/world/item/ItemStack;J)V + 119: iconst_1 + 120: ireturn + + public void fire(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack, net.minecraft.world.InteractionHand); + Code: + 0: aload_0 + 1: aload_1 + 2: aload_2 + 3: aload_3 + 4: aload 4 + 6: fconst_0 + 7: invokevirtual #325 // Method fire:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/InteractionHand;F)V + 10: return + + public void fire(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack, net.minecraft.world.InteractionHand, float); + Code: + 0: aload_1 + 1: invokevirtual #242 // Method net/minecraft/world/level/Level.m_5776_:()Z + 4: ifeq 12 + 7: aload_3 + 8: invokestatic #329 // Method markShootAnimation:(Lnet/minecraft/world/item/ItemStack;)V + 11: return + 12: aload_0 + 13: aload_1 + 14: aload_2 + 15: aload_3 + 16: invokevirtual #333 // Method createNail:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;)Lcom/ogaba/sa_combat/entity/projectile/NailEntity; + 19: astore 6 + 21: fload 5 + 23: invokestatic #339 // Method java/lang/Float.isFinite:(F)Z + 26: ifeq 39 + 29: fload 5 + 31: fconst_0 + 32: fconst_1 + 33: invokestatic #345 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 36: goto 40 + 39: fconst_0 + 40: fstore 7 + 42: aload_2 + 43: aload 4 + 45: fload 7 + 47: invokestatic #351 // Method muzzlePosition:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;F)Lnet/minecraft/world/phys/Vec3; + 50: astore 8 + 52: aload_2 + 53: aload 8 + 55: invokestatic #355 // Method nailAimDirection:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3; + 58: astore 9 + 60: aload 6 + 62: aload 8 + 64: getfield #360 // Field net/minecraft/world/phys/Vec3.f_82479_:D + 67: aload 8 + 69: getfield #363 // Field net/minecraft/world/phys/Vec3.f_82480_:D + 72: aload 8 + 74: getfield #366 // Field net/minecraft/world/phys/Vec3.f_82481_:D + 77: invokevirtual #370 // Method com/ogaba/sa_combat/entity/projectile/NailEntity.m_6034_:(DDD)V + 80: aload_3 + 81: invokestatic #373 // Method hasSilencer:(Lnet/minecraft/world/item/ItemStack;)Z + 84: istore 10 + 86: aload_3 + 87: invokestatic #377 // Method projectileVelocity:(Lnet/minecraft/world/item/ItemStack;)F + 90: fstore 11 + 92: aload 6 + 94: aload 9 + 96: getfield #360 // Field net/minecraft/world/phys/Vec3.f_82479_:D + 99: aload 9 + 101: getfield #363 // Field net/minecraft/world/phys/Vec3.f_82480_:D + 104: aload 9 + 106: getfield #366 // Field net/minecraft/world/phys/Vec3.f_82481_:D + 109: fload 11 + 111: aload_3 + 112: invokestatic #380 // Method projectileInaccuracy:(Lnet/minecraft/world/item/ItemStack;)F + 115: invokevirtual #384 // Method com/ogaba/sa_combat/entity/projectile/NailEntity.m_6686_:(DDDFF)V + 118: aload_1 + 119: aload 6 + 121: invokevirtual #388 // Method net/minecraft/world/level/Level.m_7967_:(Lnet/minecraft/world/entity/Entity;)Z + 124: pop + 125: aload_3 + 126: iconst_0 + 127: aload_3 + 128: invokestatic #291 // Method getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 131: iconst_1 + 132: isub + 133: invokestatic #146 // Method java/lang/Math.max:(II)I + 136: invokestatic #297 // Method setMagazine:(Lnet/minecraft/world/item/ItemStack;I)V + 139: aload_3 + 140: iconst_1 + 141: aload_2 + 142: invokedynamic #410, 0 // InvokeDynamic #0:accept:()Ljava/util/function/Consumer; + 147: invokevirtual #414 // Method net/minecraft/world/item/ItemStack.m_41622_:(ILnet/minecraft/world/entity/LivingEntity;Ljava/util/function/Consumer;)V + 150: aload_2 + 151: getstatic #420 // Field net/minecraft/stats/Stats.f_12982_:Lnet/minecraft/stats/StatType; + 154: aload_0 + 155: invokevirtual #426 // Method net/minecraft/stats/StatType.m_12902_:(Ljava/lang/Object;)Lnet/minecraft/stats/Stat; + 158: invokevirtual #430 // Method net/minecraft/world/entity/player/Player.m_36246_:(Lnet/minecraft/stats/Stat;)V + 161: iload 10 + 163: ifeq 171 + 166: ldc #65 // float 0.75f + 168: goto 172 + 171: fconst_2 + 172: fstore 12 + 174: iload 10 + 176: ifeq 198 + 179: ldc #71 // float 1.08f + 181: aload_1 + 182: getfield #436 // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource; + 185: invokeinterface #442, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F + 190: ldc_w #443 // float 0.099999905f + 193: fmul + 194: fadd + 195: goto 214 + 198: ldc #67 // float 0.94f + 200: aload_1 + 201: getfield #436 // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource; + 204: invokeinterface #442, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F + 209: ldc_w #444 // float 0.119999945f + 212: fmul + 213: fadd + 214: fstore 13 + 216: aload_1 + 217: aload_2 + 218: aload_2 + 219: invokevirtual #448 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 222: aload_2 + 223: invokevirtual #451 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 226: aload_2 + 227: invokevirtual #454 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 230: getstatic #460 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_SHOOT:Lnet/minecraftforge/registries/RegistryObject; + 233: invokevirtual #466 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 236: checkcast #468 // class net/minecraft/sounds/SoundEvent + 239: getstatic #474 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 242: fload 12 + 244: fload 13 + 246: invokevirtual #478 // Method net/minecraft/world/level/Level.m_6263_:(Lnet/minecraft/world/entity/player/Player;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V + 249: return + + public static void playLocalShotSound(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: ifnull 19 + 4: aload_1 + 5: ifnull 19 + 8: aload_2 + 9: ifnull 19 + 12: aload_2 + 13: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 16: ifeq 20 + 19: return + 20: aload_2 + 21: invokestatic #373 // Method hasSilencer:(Lnet/minecraft/world/item/ItemStack;)Z + 24: istore_3 + 25: iload_3 + 26: ifeq 34 + 29: ldc #65 // float 0.75f + 31: goto 35 + 34: fconst_2 + 35: fstore 4 + 37: iload_3 + 38: ifeq 60 + 41: ldc #71 // float 1.08f + 43: aload_0 + 44: getfield #436 // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource; + 47: invokeinterface #442, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F + 52: ldc_w #443 // float 0.099999905f + 55: fmul + 56: fadd + 57: goto 76 + 60: ldc #67 // float 0.94f + 62: aload_0 + 63: getfield #436 // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource; + 66: invokeinterface #442, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F + 71: ldc_w #444 // float 0.119999945f + 74: fmul + 75: fadd + 76: fstore 5 + 78: aload_0 + 79: aload_1 + 80: invokevirtual #448 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 83: aload_1 + 84: invokevirtual #451 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 87: aload_1 + 88: invokevirtual #454 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 91: getstatic #460 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_SHOOT:Lnet/minecraftforge/registries/RegistryObject; + 94: invokevirtual #466 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 97: checkcast #468 // class net/minecraft/sounds/SoundEvent + 100: getstatic #474 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 103: fload 4 + 105: fload 5 + 107: iconst_0 + 108: invokevirtual #495 // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V + 111: return + + public static net.minecraft.world.phys.Vec3 muzzlePosition(net.minecraft.world.entity.player.Player, net.minecraft.world.InteractionHand); + Code: + 0: aload_0 + 1: aload_1 + 2: fconst_0 + 3: invokestatic #351 // Method muzzlePosition:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;F)Lnet/minecraft/world/phys/Vec3; + 6: areturn + + public static net.minecraft.world.phys.Vec3 muzzlePosition(net.minecraft.world.entity.player.Player, net.minecraft.world.InteractionHand, float); + Code: + 0: fload_2 + 1: fconst_0 + 2: fconst_1 + 3: invokestatic #345 // Method net/minecraft/util/Mth.m_14036_:(FFF)F + 6: fstore_3 + 7: aload_0 + 8: invokevirtual #500 // Method net/minecraft/world/entity/player/Player.m_146892_:()Lnet/minecraft/world/phys/Vec3; + 11: astore 4 + 13: aload_0 + 14: invokevirtual #503 // Method net/minecraft/world/entity/player/Player.m_146909_:()F + 17: aload_0 + 18: invokevirtual #506 // Method net/minecraft/world/entity/player/Player.m_146908_:()F + 21: invokestatic #510 // Method net/minecraft/world/phys/Vec3.m_82498_:(FF)Lnet/minecraft/world/phys/Vec3; + 24: astore 5 + 26: aload_0 + 27: invokevirtual #506 // Method net/minecraft/world/entity/player/Player.m_146908_:()F + 30: ldc_w #511 // float 0.017453292f + 33: fmul + 34: fstore 6 + 36: new #357 // class net/minecraft/world/phys/Vec3 + 39: dup + 40: fload 6 + 42: invokestatic #515 // Method net/minecraft/util/Mth.m_14089_:(F)F + 45: fneg + 46: f2d + 47: dconst_0 + 48: fload 6 + 50: invokestatic #518 // Method net/minecraft/util/Mth.m_14031_:(F)F + 53: fneg + 54: f2d + 55: invokespecial #520 // Method net/minecraft/world/phys/Vec3."":(DDD)V + 58: astore 7 + 60: aload_1 + 61: getstatic #523 // Field net/minecraft/world/InteractionHand.OFF_HAND:Lnet/minecraft/world/InteractionHand; + 64: if_acmpne 73 + 67: ldc2_w #524 // double -1.0d + 70: goto 74 + 73: dconst_1 + 74: dstore 8 + 76: fload_3 + 77: f2d + 78: ldc2_w #79 // double 1.16d + 81: ldc2_w #82 // double 1.3d + 84: invokestatic #529 // Method net/minecraft/util/Mth.m_14139_:(DDD)D + 87: dstore 10 + 89: fload_3 + 90: f2d + 91: ldc2_w #85 // double 0.24d + 94: dconst_0 + 95: invokestatic #529 // Method net/minecraft/util/Mth.m_14139_:(DDD)D + 98: dload 8 + 100: dmul + 101: dstore 12 + 103: fload_3 + 104: f2d + 105: ldc2_w #88 // double 0.2d + 108: ldc2_w #91 // double 0.11d + 111: invokestatic #529 // Method net/minecraft/util/Mth.m_14139_:(DDD)D + 114: dstore 14 + 116: aload_0 + 117: invokevirtual #532 // Method net/minecraft/world/entity/player/Player.m_20184_:()Lnet/minecraft/world/phys/Vec3; + 120: astore 16 + 122: aload 16 + 124: aload 7 + 126: invokevirtual #536 // Method net/minecraft/world/phys/Vec3.m_82526_:(Lnet/minecraft/world/phys/Vec3;)D + 129: dstore 17 + 131: dload 17 + 133: dneg + 134: ldc2_w #94 // double 0.55d + 137: dmul + 138: ldc2_w #537 // double -0.075d + 141: ldc2_w #97 // double 0.075d + 144: invokestatic #541 // Method net/minecraft/util/Mth.m_14008_:(DDD)D + 147: dconst_1 + 148: fload_3 + 149: f2d + 150: dsub + 151: dmul + 152: dstore 19 + 154: dload 12 + 156: dload 19 + 158: dadd + 159: dstore 12 + 161: aload 4 + 163: aload 5 + 165: dload 10 + 167: invokevirtual #545 // Method net/minecraft/world/phys/Vec3.m_82490_:(D)Lnet/minecraft/world/phys/Vec3; + 170: invokevirtual #549 // Method net/minecraft/world/phys/Vec3.m_82549_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3; + 173: aload 7 + 175: dload 12 + 177: invokevirtual #545 // Method net/minecraft/world/phys/Vec3.m_82490_:(D)Lnet/minecraft/world/phys/Vec3; + 180: invokevirtual #549 // Method net/minecraft/world/phys/Vec3.m_82549_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3; + 183: dconst_0 + 184: dload 14 + 186: dneg + 187: dconst_0 + 188: invokevirtual #553 // Method net/minecraft/world/phys/Vec3.m_82520_:(DDD)Lnet/minecraft/world/phys/Vec3; + 191: areturn + + private static net.minecraft.world.phys.Vec3 nailAimDirection(net.minecraft.world.entity.player.Player, net.minecraft.world.phys.Vec3); + Code: + 0: aload_0 + 1: invokevirtual #503 // Method net/minecraft/world/entity/player/Player.m_146909_:()F + 4: aload_0 + 5: invokevirtual #506 // Method net/minecraft/world/entity/player/Player.m_146908_:()F + 8: invokestatic #510 // Method net/minecraft/world/phys/Vec3.m_82498_:(FF)Lnet/minecraft/world/phys/Vec3; + 11: astore_2 + 12: aload_0 + 13: invokevirtual #500 // Method net/minecraft/world/entity/player/Player.m_146892_:()Lnet/minecraft/world/phys/Vec3; + 16: aload_2 + 17: ldc2_w #100 // double 12.0d + 20: invokevirtual #545 // Method net/minecraft/world/phys/Vec3.m_82490_:(D)Lnet/minecraft/world/phys/Vec3; + 23: invokevirtual #549 // Method net/minecraft/world/phys/Vec3.m_82549_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3; + 26: astore_3 + 27: aload_3 + 28: aload_1 + 29: invokevirtual #568 // Method net/minecraft/world/phys/Vec3.m_82546_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3; + 32: invokevirtual #571 // Method net/minecraft/world/phys/Vec3.m_82541_:()Lnet/minecraft/world/phys/Vec3; + 35: areturn + + private com.ogaba.sa_combat.entity.projectile.NailEntity createNail(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack); + Code: + 0: new #347 // class com/ogaba/sa_combat/entity/projectile/NailEntity + 3: dup + 4: aload_1 + 5: aload_2 + 6: invokespecial #575 // Method com/ogaba/sa_combat/entity/projectile/NailEntity."":(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/LivingEntity;)V + 9: astore 4 + 11: aload_0 + 12: invokevirtual #578 // Method definitionDamage:()D + 15: aload_3 + 16: invokestatic #581 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D + 19: dadd + 20: aload_3 + 21: invokestatic #582 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D + 24: dadd + 25: dstore 5 + 27: ldc2_w #583 // double 0.95d + 30: dconst_0 + 31: aload_3 + 32: invokestatic #587 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getCriticalChanceBonus:(Lnet/minecraft/world/item/ItemStack;)D + 35: invokestatic #590 // Method java/lang/Math.max:(DD)D + 38: invokestatic #592 // Method java/lang/Math.min:(DD)D + 41: dstore 7 + 43: dload 7 + 45: dconst_0 + 46: dcmpl + 47: ifle 80 + 50: aload_1 + 51: getfield #436 // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource; + 54: invokeinterface #595, 1 // InterfaceMethod net/minecraft/util/RandomSource.m_188500_:()D + 59: dload 7 + 61: dcmpg + 62: ifge 80 + 65: dload 5 + 67: dconst_1 + 68: dconst_0 + 69: aload_3 + 70: invokestatic #598 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getCriticalDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D + 73: invokestatic #590 // Method java/lang/Math.max:(DD)D + 76: dadd + 77: dmul + 78: dstore 5 + 80: dconst_1 + 81: dload 5 + 83: invokestatic #590 // Method java/lang/Math.max:(DD)D + 86: dstore 9 + 88: aload 4 + 90: dload 9 + 92: ldc2_w #599 // double 0.05d + 95: aload_3 + 96: invokestatic #377 // Method projectileVelocity:(Lnet/minecraft/world/item/ItemStack;)F + 99: f2d + 100: invokestatic #590 // Method java/lang/Math.max:(DD)D + 103: ddiv + 104: invokevirtual #604 // Method com/ogaba/sa_combat/entity/projectile/NailEntity.m_36781_:(D)V + 107: aload_2 + 108: invokevirtual #276 // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities; + 111: getfield #281 // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z + 114: ifeq 125 + 117: aload 4 + 119: getstatic #608 // Field net/minecraft/world/entity/projectile/AbstractArrow$Pickup.CREATIVE_ONLY:Lnet/minecraft/world/entity/projectile/AbstractArrow$Pickup; + 122: putfield #611 // Field com/ogaba/sa_combat/entity/projectile/NailEntity.f_36705_:Lnet/minecraft/world/entity/projectile/AbstractArrow$Pickup; + 125: aload 4 + 127: areturn + + private double definitionDamage(); + Code: + 0: aload_0 + 1: invokevirtual #619 // Method getDefinition:()Lcom/ogaba/sa_combat/combat/weapon/WeaponDefinition; + 4: astore_1 + 5: aload_1 + 6: ifnonnull 13 + 9: dconst_1 + 10: goto 22 + 13: dconst_1 + 14: aload_1 + 15: invokevirtual #625 // Method com/ogaba/sa_combat/combat/weapon/WeaponDefinition.attackDamage:()I + 18: i2d + 19: invokestatic #590 // Method java/lang/Math.max:(DD)D + 22: dreturn + + private static float projectileVelocity(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokestatic #628 // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getReachBonus:(Lnet/minecraft/world/item/ItemStack;)D + 4: aload_0 + 5: invokestatic #629 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getReachBonus:(Lnet/minecraft/world/item/ItemStack;)D + 8: dadd + 9: dstore_1 + 10: aload_0 + 11: invokestatic #373 // Method hasSilencer:(Lnet/minecraft/world/item/ItemStack;)Z + 14: ifeq 23 + 17: ldc2_w #630 // double 2.299999952316284d + 20: goto 26 + 23: ldc2_w #632 // double 2.0d + 26: dstore_3 + 27: ldc2_w #634 // double 3.2d + 30: dload_3 + 31: dload_1 + 32: ldc2_w #636 // double 1.1d + 35: dmul + 36: dadd + 37: invokestatic #592 // Method java/lang/Math.min:(DD)D + 40: d2f + 41: freturn + + private static float projectileInaccuracy(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokestatic #642 // Method hasStock:(Lnet/minecraft/world/item/ItemStack;)Z + 4: ifeq 11 + 7: fconst_2 + 8: goto 13 + 11: ldc #60 // float 8.5f + 13: freturn + + public static boolean hasStock(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: getstatic #648 // Field com/ogaba/sa_combat/combat/attachment/AttachmentSlot.STOCK:Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot; + 4: invokestatic #652 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAttachmentInSlot:(Lnet/minecraft/world/item/ItemStack;Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;)Z + 7: ireturn + + public static boolean hasSilencer(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: getstatic #655 // Field com/ogaba/sa_combat/combat/attachment/AttachmentSlot.SILENCER:Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot; + 4: invokestatic #652 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAttachmentInSlot:(Lnet/minecraft/world/item/ItemStack;Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;)Z + 7: ireturn + + public static boolean hasExtendedMag(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: getstatic #659 // Field com/ogaba/sa_combat/combat/attachment/AttachmentSlot.MAGAZINE:Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot; + 4: invokestatic #652 // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAttachmentInSlot:(Lnet/minecraft/world/item/ItemStack;Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;)Z + 7: ireturn + + public static int magazineCapacity(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokestatic #661 // Method hasExtendedMag:(Lnet/minecraft/world/item/ItemStack;)Z + 4: ifeq 12 + 7: bipush 32 + 9: goto 14 + 12: bipush 16 + 14: ireturn + + public static boolean consumeServerFirePermit(net.minecraft.world.item.ItemStack, long); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifeq 9 + 7: iconst_0 + 8: ireturn + 9: ldc2_w #664 // long 3l + 12: lstore_3 + 13: ldc2_w #666 // long 5l + 16: lstore 5 + 18: lload_1 + 19: ldc2_w #664 // long 3l + 22: lmul + 23: lstore 7 + 25: aload_0 + 26: invokevirtual #671 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 29: astore 9 + 31: aload 9 + 33: ldc #44 // String SACombatNailGunServerNextFireScaled + 35: invokevirtual #677 // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z + 38: ifne 56 + 41: aload 9 + 43: ldc #44 // String SACombatNailGunServerNextFireScaled + 45: lload 7 + 47: ldc2_w #666 // long 5l + 50: ladd + 51: invokevirtual #681 // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V + 54: iconst_1 + 55: ireturn + 56: aload 9 + 58: ldc #44 // String SACombatNailGunServerNextFireScaled + 60: invokevirtual #685 // Method net/minecraft/nbt/CompoundTag.m_128454_:(Ljava/lang/String;)J + 63: lstore 10 + 65: lload 10 + 67: lload 7 + 69: lsub + 70: ldc2_w #686 // long 60l + 73: lcmp + 74: ifle 92 + 77: aload 9 + 79: ldc #44 // String SACombatNailGunServerNextFireScaled + 81: lload 7 + 83: ldc2_w #666 // long 5l + 86: ladd + 87: invokevirtual #681 // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V + 90: iconst_1 + 91: ireturn + 92: lload 7 + 94: lload 10 + 96: lcmp + 97: ifge 102 + 100: iconst_0 + 101: ireturn + 102: lload 7 + 104: lload 10 + 106: lsub + 107: lstore 12 + 109: lload 12 + 111: ldc2_w #666 // long 5l + 114: lcmp + 115: iflt 127 + 118: lload 7 + 120: ldc2_w #666 // long 5l + 123: ladd + 124: goto 133 + 127: lload 10 + 129: ldc2_w #666 // long 5l + 132: ladd + 133: lstore 14 + 135: aload 9 + 137: ldc #44 // String SACombatNailGunServerNextFireScaled + 139: lload 14 + 141: invokevirtual #681 // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V + 144: iconst_1 + 145: ireturn + + public static int getMagazine(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifne 14 + 7: aload_0 + 8: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 11: ifnonnull 16 + 14: iconst_0 + 15: ireturn + 16: aload_0 + 17: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 20: ldc #32 // String SACombatNailGunMagazine + 22: invokevirtual #703 // Method net/minecraft/nbt/CompoundTag.m_128451_:(Ljava/lang/String;)I + 25: ireturn + + public static void setMagazine(net.minecraft.world.item.ItemStack, int); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifeq 8 + 7: return + 8: aload_0 + 9: invokevirtual #671 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 12: ldc #32 // String SACombatNailGunMagazine + 14: iconst_0 + 15: iload_1 + 16: invokestatic #146 // Method java/lang/Math.max:(II)I + 19: invokevirtual #707 // Method net/minecraft/nbt/CompoundTag.m_128405_:(Ljava/lang/String;I)V + 22: return + + public static boolean isReloading(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifne 30 + 7: aload_0 + 8: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 11: ifnull 30 + 14: aload_0 + 15: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 18: ldc #35 // String SACombatNailGunReloading + 20: invokevirtual #711 // Method net/minecraft/nbt/CompoundTag.m_128471_:(Ljava/lang/String;)Z + 23: ifeq 30 + 26: iconst_1 + 27: goto 31 + 30: iconst_0 + 31: ireturn + + private static void setReloading(net.minecraft.world.item.ItemStack, boolean); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifeq 8 + 7: return + 8: iload_1 + 9: ifeq 25 + 12: aload_0 + 13: invokevirtual #671 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 16: ldc #35 // String SACombatNailGunReloading + 18: iconst_1 + 19: invokevirtual #715 // Method net/minecraft/nbt/CompoundTag.m_128379_:(Ljava/lang/String;Z)V + 22: goto 41 + 25: aload_0 + 26: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 29: ifnull 41 + 32: aload_0 + 33: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 36: ldc #35 // String SACombatNailGunReloading + 38: invokevirtual #719 // Method net/minecraft/nbt/CompoundTag.m_128473_:(Ljava/lang/String;)V + 41: return + + private static int getReloadTarget(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifne 14 + 7: aload_0 + 8: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 11: ifnonnull 18 + 14: iconst_0 + 15: goto 27 + 18: aload_0 + 19: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 22: ldc #38 // String SACombatNailGunReloadTarget + 24: invokevirtual #703 // Method net/minecraft/nbt/CompoundTag.m_128451_:(Ljava/lang/String;)I + 27: ireturn + + private static void setReloadTarget(net.minecraft.world.item.ItemStack, int); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifeq 8 + 7: return + 8: iload_1 + 9: ifgt 31 + 12: aload_0 + 13: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 16: ifnull 41 + 19: aload_0 + 20: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 23: ldc #38 // String SACombatNailGunReloadTarget + 25: invokevirtual #719 // Method net/minecraft/nbt/CompoundTag.m_128473_:(Ljava/lang/String;)V + 28: goto 41 + 31: aload_0 + 32: invokevirtual #671 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 35: ldc #38 // String SACombatNailGunReloadTarget + 37: iload_1 + 38: invokevirtual #707 // Method net/minecraft/nbt/CompoundTag.m_128405_:(Ljava/lang/String;I)V + 41: return + + private static long getReloadEndTick(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifne 14 + 7: aload_0 + 8: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 11: ifnonnull 18 + 14: lconst_0 + 15: goto 27 + 18: aload_0 + 19: invokevirtual #699 // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag; + 22: ldc #41 // String SACombatNailGunReloadEndTick + 24: invokevirtual #685 // Method net/minecraft/nbt/CompoundTag.m_128454_:(Ljava/lang/String;)J + 27: lreturn + + private static void setReloadEndTick(net.minecraft.world.item.ItemStack, long); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifne 17 + 7: aload_0 + 8: invokevirtual #671 // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag; + 11: ldc #41 // String SACombatNailGunReloadEndTick + 13: lload_1 + 14: invokevirtual #681 // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V + 17: return + + private static void markShootAnimation(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifne 57 + 7: aload_0 + 8: invokestatic #724 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 11: lstore_1 + 12: getstatic #726 // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map; + 15: lload_1 + 16: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 19: invokestatic #737 // Method net/minecraft/Util.m_137550_:()J + 22: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 25: invokeinterface #743, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 30: pop + 31: getstatic #745 // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map; + 34: lload_1 + 35: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 38: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 43: pop + 44: getstatic #751 // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map; + 47: lload_1 + 48: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 51: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 56: pop + 57: return + + public static void markClientReloadAnimation(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: ifnull 11 + 4: aload_0 + 5: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 8: ifeq 12 + 11: return + 12: aload_0 + 13: invokestatic #724 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 16: lstore_1 + 17: getstatic #755 // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map; + 20: lload_1 + 21: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 24: invokestatic #737 // Method net/minecraft/Util.m_137550_:()J + 27: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 30: invokeinterface #743, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 35: pop + 36: getstatic #757 // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map; + 39: lload_1 + 40: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 43: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 48: pop + 49: getstatic #745 // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map; + 52: lload_1 + 53: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 56: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 61: pop + 62: getstatic #751 // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map; + 65: lload_1 + 66: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 69: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 74: pop + 75: getstatic #726 // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map; + 78: lload_1 + 79: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 82: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 87: pop + 88: getstatic #759 // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map; + 91: lload_1 + 92: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 95: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 100: pop + 101: return + + public static boolean isClientReloadAnimationActive(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: ifnull 11 + 4: aload_0 + 5: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 8: ifeq 13 + 11: iconst_0 + 12: ireturn + 13: aload_0 + 14: invokestatic #724 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 17: lstore_1 + 18: getstatic #755 // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map; + 21: lload_1 + 22: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 25: invokeinterface #762, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 30: checkcast #728 // class java/lang/Long + 33: astore_3 + 34: aload_3 + 35: ifnonnull 40 + 38: iconst_0 + 39: ireturn + 40: aload_0 + 41: invokestatic #313 // Method reloadTicksForStack:(Lnet/minecraft/world/item/ItemStack;)I + 44: i2l + 45: ldc2_w #763 // long 50l + 48: lmul + 49: ldc2_w #765 // long 100l + 52: ladd + 53: lstore 4 + 55: invokestatic #737 // Method net/minecraft/Util.m_137550_:()J + 58: aload_3 + 59: invokevirtual #769 // Method java/lang/Long.longValue:()J + 62: lsub + 63: lload 4 + 65: lcmp + 66: iflt 84 + 69: getstatic #755 // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map; + 72: lload_1 + 73: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 76: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 81: pop + 82: iconst_0 + 83: ireturn + 84: iconst_1 + 85: ireturn + + private static boolean isDrawAnimationActive(net.minecraft.world.item.ItemStack, long); + Code: + 0: aload_0 + 1: invokestatic #724 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 4: lstore_3 + 5: getstatic #745 // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map; + 8: lload_3 + 9: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 12: invokeinterface #762, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 17: checkcast #728 // class java/lang/Long + 20: astore 5 + 22: aload 5 + 24: ifnonnull 29 + 27: iconst_0 + 28: ireturn + 29: lload_1 + 30: aload 5 + 32: invokevirtual #769 // Method java/lang/Long.longValue:()J + 35: lsub + 36: ldc2_w #119 // long 925l + 39: lcmp + 40: iflt 71 + 43: getstatic #745 // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map; + 46: lload_3 + 47: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 50: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 55: pop + 56: getstatic #751 // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map; + 59: lload_3 + 60: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 63: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 68: pop + 69: iconst_0 + 70: ireturn + 71: iconst_1 + 72: ireturn + + private static void resetForNewStart(long, java.util.Map, java.util.Map, software.bernie.geckolib.core.animation.AnimationController); + Code: + 0: aload_2 + 1: lload_0 + 2: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 5: invokeinterface #762, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 10: checkcast #728 // class java/lang/Long + 13: astore 5 + 15: aload 5 + 17: ifnull 56 + 20: aload 5 + 22: aload_3 + 23: lload_0 + 24: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 27: invokeinterface #762, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 32: invokevirtual #781 // Method java/lang/Long.equals:(Ljava/lang/Object;)Z + 35: ifne 56 + 38: aload 4 + 40: invokevirtual #785 // Method software/bernie/geckolib/core/animation/AnimationController.forceAnimationReset:()V + 43: aload_3 + 44: lload_0 + 45: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 48: aload 5 + 50: invokeinterface #743, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 55: pop + 56: return + + private static boolean isShootAnimationActive(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifeq 9 + 7: iconst_0 + 8: ireturn + 9: getstatic #726 // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map; + 12: aload_0 + 13: invokestatic #724 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 16: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 19: invokeinterface #762, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 24: checkcast #728 // class java/lang/Long + 27: astore_1 + 28: aload_1 + 29: ifnonnull 34 + 32: iconst_0 + 33: ireturn + 34: invokestatic #737 // Method net/minecraft/Util.m_137550_:()J + 37: aload_1 + 38: invokevirtual #769 // Method java/lang/Long.longValue:()J + 41: lsub + 42: lstore_2 + 43: lload_2 + 44: ldc2_w #57 // long 390l + 47: lcmp + 48: iflt 87 + 51: aload_0 + 52: invokestatic #724 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 55: lstore 4 + 57: getstatic #726 // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map; + 60: lload 4 + 62: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 65: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 70: pop + 71: getstatic #759 // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map; + 74: lload 4 + 76: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 79: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 84: pop + 85: iconst_0 + 86: ireturn + 87: lload_2 + 88: lconst_0 + 89: lcmp + 90: iflt 97 + 93: iconst_1 + 94: goto 98 + 97: iconst_0 + 98: ireturn + + public static void clearClientAnimationState(); + Code: + 0: getstatic #726 // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map; + 3: invokeinterface #797, 1 // InterfaceMethod java/util/Map.clear:()V + 8: getstatic #759 // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map; + 11: invokeinterface #797, 1 // InterfaceMethod java/util/Map.clear:()V + 16: getstatic #799 // Field CLIENT_LAST_HAND_RENDER:Ljava/util/Map; + 19: invokeinterface #797, 1 // InterfaceMethod java/util/Map.clear:()V + 24: getstatic #745 // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map; + 27: invokeinterface #797, 1 // InterfaceMethod java/util/Map.clear:()V + 32: getstatic #751 // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map; + 35: invokeinterface #797, 1 // InterfaceMethod java/util/Map.clear:()V + 40: getstatic #755 // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map; + 43: invokeinterface #797, 1 // InterfaceMethod java/util/Map.clear:()V + 48: getstatic #757 // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map; + 51: invokeinterface #797, 1 // InterfaceMethod java/util/Map.clear:()V + 56: return + + private static boolean isNailAmmo(net.minecraft.world.item.ItemStack); + Code: + 0: aload_0 + 1: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 4: ifeq 9 + 7: iconst_0 + 8: ireturn + 9: getstatic #806 // Field net/minecraftforge/registries/ForgeRegistries.ITEMS:Lnet/minecraftforge/registries/IForgeRegistry; + 12: aload_0 + 13: invokevirtual #179 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 16: invokeinterface #812, 2 // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getKey:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation; + 21: astore_1 + 22: getstatic #814 // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation; + 25: aload_1 + 26: invokevirtual #817 // Method net/minecraft/resources/ResourceLocation.equals:(Ljava/lang/Object;)Z + 29: ireturn + + public static int countReserveAmmo(net.minecraft.world.entity.player.Player); + Code: + 0: iconst_0 + 1: istore_1 + 2: aload_0 + 3: invokevirtual #821 // Method net/minecraft/world/entity/player/Player.m_150109_:()Lnet/minecraft/world/entity/player/Inventory; + 6: getfield #827 // Field net/minecraft/world/entity/player/Inventory.f_35974_:Lnet/minecraft/core/NonNullList; + 9: invokevirtual #833 // Method net/minecraft/core/NonNullList.iterator:()Ljava/util/Iterator; + 12: astore_2 + 13: aload_2 + 14: invokeinterface #838, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 19: ifeq 49 + 22: aload_2 + 23: invokeinterface #841, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 28: checkcast #171 // class net/minecraft/world/item/ItemStack + 31: astore_3 + 32: aload_3 + 33: invokestatic #843 // Method isNailAmmo:(Lnet/minecraft/world/item/ItemStack;)Z + 36: ifeq 46 + 39: iload_1 + 40: aload_3 + 41: invokevirtual #846 // Method net/minecraft/world/item/ItemStack.m_41613_:()I + 44: iadd + 45: istore_1 + 46: goto 13 + 49: iload_1 + 50: ireturn + + private static void consumeReserveAmmo(net.minecraft.world.entity.player.Player, int); + Code: + 0: iload_1 + 1: istore_2 + 2: aload_0 + 3: invokevirtual #821 // Method net/minecraft/world/entity/player/Player.m_150109_:()Lnet/minecraft/world/entity/player/Inventory; + 6: getfield #827 // Field net/minecraft/world/entity/player/Inventory.f_35974_:Lnet/minecraft/core/NonNullList; + 9: invokevirtual #833 // Method net/minecraft/core/NonNullList.iterator:()Ljava/util/Iterator; + 12: astore_3 + 13: aload_3 + 14: invokeinterface #838, 1 // InterfaceMethod java/util/Iterator.hasNext:()Z + 19: ifeq 77 + 22: aload_3 + 23: invokeinterface #841, 1 // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object; + 28: checkcast #171 // class net/minecraft/world/item/ItemStack + 31: astore 4 + 33: iload_2 + 34: ifgt 40 + 37: goto 77 + 40: aload 4 + 42: invokestatic #843 // Method isNailAmmo:(Lnet/minecraft/world/item/ItemStack;)Z + 45: ifne 51 + 48: goto 13 + 51: iload_2 + 52: aload 4 + 54: invokevirtual #846 // Method net/minecraft/world/item/ItemStack.m_41613_:()I + 57: invokestatic #294 // Method java/lang/Math.min:(II)I + 60: istore 5 + 62: aload 4 + 64: iload 5 + 66: invokevirtual #851 // Method net/minecraft/world/item/ItemStack.m_41774_:(I)V + 69: iload_2 + 70: iload 5 + 72: isub + 73: istore_2 + 74: goto 13 + 77: return + + public void registerControllers(software.bernie.geckolib.core.animation.AnimatableManager$ControllerRegistrar); + Code: + 0: aload_1 + 1: iconst_1 + 2: anewarray #14 // class software/bernie/geckolib/core/animation/AnimationController + 5: dup + 6: iconst_0 + 7: new #14 // class software/bernie/geckolib/core/animation/AnimationController + 10: dup + 11: aload_0 + 12: ldc_w #857 // String nail_gun + 15: iconst_0 + 16: invokedynamic #867, 0 // InvokeDynamic #1:handle:()Lsoftware/bernie/geckolib/core/animation/AnimationController$AnimationStateHandler; + 21: invokespecial #870 // Method software/bernie/geckolib/core/animation/AnimationController."":(Lsoftware/bernie/geckolib/core/animatable/GeoAnimatable;Ljava/lang/String;ILsoftware/bernie/geckolib/core/animation/AnimationController$AnimationStateHandler;)V + 24: invokedynamic #879, 0 // InvokeDynamic #2:handle:()Lsoftware/bernie/geckolib/core/animation/AnimationController$SoundKeyframeHandler; + 29: invokevirtual #883 // Method software/bernie/geckolib/core/animation/AnimationController.setSoundKeyframeHandler:(Lsoftware/bernie/geckolib/core/animation/AnimationController$SoundKeyframeHandler;)Lsoftware/bernie/geckolib/core/animation/AnimationController; + 32: aastore + 33: invokevirtual #887 // Method software/bernie/geckolib/core/animation/AnimatableManager$ControllerRegistrar.add:([Lsoftware/bernie/geckolib/core/animation/AnimationController;)Lsoftware/bernie/geckolib/core/animation/AnimatableManager$ControllerRegistrar; + 36: pop + 37: return + + private static net.minecraft.sounds.SoundEvent nailGunKeyframeSound(java.lang.String); + Code: + 0: aload_0 + 1: ifnonnull 6 + 4: aconst_null + 5: areturn + 6: aload_0 + 7: astore_1 + 8: iconst_m1 + 9: istore_2 + 10: aload_1 + 11: invokevirtual #897 // Method java/lang/String.hashCode:()I + 14: lookupswitch { // 6 + + -1641162943: 87 + + 663556368: 102 + + 663556369: 117 + + 663556370: 132 + + 663556371: 147 + + 1186712812: 72 + default: 159 + } + 72: aload_1 + 73: ldc_w #899 // String nail_gun_draw + 76: invokevirtual #900 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 79: ifeq 159 + 82: iconst_0 + 83: istore_2 + 84: goto 159 + 87: aload_1 + 88: ldc_w #902 // String nail_gun_reload + 91: invokevirtual #900 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 94: ifeq 159 + 97: iconst_1 + 98: istore_2 + 99: goto 159 + 102: aload_1 + 103: ldc_w #904 // String nail_gun_reload1 + 106: invokevirtual #900 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 109: ifeq 159 + 112: iconst_2 + 113: istore_2 + 114: goto 159 + 117: aload_1 + 118: ldc_w #906 // String nail_gun_reload2 + 121: invokevirtual #900 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 124: ifeq 159 + 127: iconst_3 + 128: istore_2 + 129: goto 159 + 132: aload_1 + 133: ldc_w #908 // String nail_gun_reload3 + 136: invokevirtual #900 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 139: ifeq 159 + 142: iconst_4 + 143: istore_2 + 144: goto 159 + 147: aload_1 + 148: ldc_w #910 // String nail_gun_reload4 + 151: invokevirtual #900 // Method java/lang/String.equals:(Ljava/lang/Object;)Z + 154: ifeq 159 + 157: iconst_5 + 158: istore_2 + 159: iload_2 + 160: tableswitch { // 0 to 5 + + 0: 200 + + 1: 212 + + 2: 224 + + 3: 236 + + 4: 248 + + 5: 260 + default: 272 + } + 200: getstatic #913 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_DRAW:Lnet/minecraftforge/registries/RegistryObject; + 203: invokevirtual #466 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 206: checkcast #468 // class net/minecraft/sounds/SoundEvent + 209: goto 273 + 212: getstatic #916 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD:Lnet/minecraftforge/registries/RegistryObject; + 215: invokevirtual #466 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 218: checkcast #468 // class net/minecraft/sounds/SoundEvent + 221: goto 273 + 224: getstatic #919 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD1:Lnet/minecraftforge/registries/RegistryObject; + 227: invokevirtual #466 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 230: checkcast #468 // class net/minecraft/sounds/SoundEvent + 233: goto 273 + 236: getstatic #922 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD2:Lnet/minecraftforge/registries/RegistryObject; + 239: invokevirtual #466 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 242: checkcast #468 // class net/minecraft/sounds/SoundEvent + 245: goto 273 + 248: getstatic #925 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD3:Lnet/minecraftforge/registries/RegistryObject; + 251: invokevirtual #466 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 254: checkcast #468 // class net/minecraft/sounds/SoundEvent + 257: goto 273 + 260: getstatic #928 // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD4:Lnet/minecraftforge/registries/RegistryObject; + 263: invokevirtual #466 // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object; + 266: checkcast #468 // class net/minecraft/sounds/SoundEvent + 269: goto 273 + 272: aconst_null + 273: areturn + + private static boolean isHandRender(net.minecraft.world.item.ItemDisplayContext); + Code: + 0: aload_0 + 1: getstatic #937 // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_LEFT_HAND:Lnet/minecraft/world/item/ItemDisplayContext; + 4: if_acmpeq 14 + 7: aload_0 + 8: getstatic #940 // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_RIGHT_HAND:Lnet/minecraft/world/item/ItemDisplayContext; + 11: if_acmpne 18 + 14: iconst_1 + 15: goto 19 + 18: iconst_0 + 19: ireturn + + private static void lambda$registerControllers$1(software.bernie.geckolib.core.keyframe.event.SoundKeyframeEvent); + Code: + 0: invokestatic #947 // Method software/bernie/geckolib/util/ClientUtils.getClientPlayer:()Lnet/minecraft/world/entity/player/Player; + 3: astore_1 + 4: aload_1 + 5: ifnonnull 9 + 8: return + 9: aload_0 + 10: invokevirtual #953 // Method software/bernie/geckolib/core/keyframe/event/SoundKeyframeEvent.getKeyframeData:()Lsoftware/bernie/geckolib/core/keyframe/event/data/SoundKeyframeData; + 13: invokevirtual #959 // Method software/bernie/geckolib/core/keyframe/event/data/SoundKeyframeData.getSound:()Ljava/lang/String; + 16: invokestatic #961 // Method nailGunKeyframeSound:(Ljava/lang/String;)Lnet/minecraft/sounds/SoundEvent; + 19: astore_2 + 20: aload_2 + 21: ifnull 50 + 24: aload_1 + 25: invokevirtual #965 // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level; + 28: aload_1 + 29: invokevirtual #448 // Method net/minecraft/world/entity/player/Player.m_20185_:()D + 32: aload_1 + 33: invokevirtual #451 // Method net/minecraft/world/entity/player/Player.m_20186_:()D + 36: aload_1 + 37: invokevirtual #454 // Method net/minecraft/world/entity/player/Player.m_20189_:()D + 40: aload_2 + 41: getstatic #474 // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource; + 44: fconst_1 + 45: fconst_1 + 46: iconst_0 + 47: invokevirtual #495 // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V + 50: return + + private static software.bernie.geckolib.core.object.PlayState lambda$registerControllers$0(software.bernie.geckolib.core.animation.AnimationState); + Code: + 0: aload_0 + 1: getstatic #975 // Field software/bernie/geckolib/constant/DataTickets.ITEMSTACK:Lsoftware/bernie/geckolib/core/object/DataTicket; + 4: invokevirtual #981 // Method software/bernie/geckolib/core/animation/AnimationState.getData:(Lsoftware/bernie/geckolib/core/object/DataTicket;)Ljava/lang/Object; + 7: checkcast #171 // class net/minecraft/world/item/ItemStack + 10: astore_1 + 11: aload_1 + 12: ifnull 22 + 15: aload_1 + 16: invokevirtual #175 // Method net/minecraft/world/item/ItemStack.m_41619_:()Z + 19: ifeq 26 + 22: getstatic #987 // Field software/bernie/geckolib/core/object/PlayState.STOP:Lsoftware/bernie/geckolib/core/object/PlayState; + 25: areturn + 26: aload_0 + 27: getstatic #990 // Field software/bernie/geckolib/constant/DataTickets.ITEM_RENDER_PERSPECTIVE:Lsoftware/bernie/geckolib/core/object/DataTicket; + 30: invokevirtual #981 // Method software/bernie/geckolib/core/animation/AnimationState.getData:(Lsoftware/bernie/geckolib/core/object/DataTicket;)Ljava/lang/Object; + 33: checkcast #933 // class net/minecraft/world/item/ItemDisplayContext + 36: astore_2 + 37: aload_2 + 38: invokestatic #992 // Method isHandRender:(Lnet/minecraft/world/item/ItemDisplayContext;)Z + 41: istore_3 + 42: aload_1 + 43: invokestatic #724 // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J + 46: lstore 4 + 48: invokestatic #737 // Method net/minecraft/Util.m_137550_:()J + 51: lstore 6 + 53: iload_3 + 54: ifne 80 + 57: aload_0 + 58: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 61: dconst_1 + 62: invokevirtual #1000 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController; + 65: pop + 66: aload_0 + 67: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 70: getstatic #1002 // Field ANIM_IDLE:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 73: invokevirtual #1006 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V + 76: getstatic #1009 // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState; + 79: areturn + 80: getstatic #799 // Field CLIENT_LAST_HAND_RENDER:Ljava/util/Map; + 83: lload 4 + 85: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 88: lload 6 + 90: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 93: invokeinterface #743, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 98: checkcast #728 // class java/lang/Long + 101: astore 8 + 103: aload 8 + 105: ifnull 123 + 108: lload 6 + 110: aload 8 + 112: invokevirtual #769 // Method java/lang/Long.longValue:()J + 115: lsub + 116: ldc2_w #122 // long 700l + 119: lcmp + 120: ifle 156 + 123: getstatic #745 // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map; + 126: lload 4 + 128: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 131: lload 6 + 133: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 136: invokeinterface #743, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 141: pop + 142: getstatic #751 // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map; + 145: lload 4 + 147: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 150: invokeinterface #749, 2 // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object; + 155: pop + 156: aload_1 + 157: invokestatic #246 // Method isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 160: istore 9 + 162: aload_1 + 163: invokestatic #1011 // Method isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 166: istore 10 + 168: iload 9 + 170: ifeq 216 + 173: iload 10 + 175: ifne 216 + 178: getstatic #757 // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map; + 181: lload 4 + 183: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 186: invokeinterface #1014, 2 // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z + 191: ifne 216 + 194: getstatic #755 // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map; + 197: lload 4 + 199: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 202: lload 6 + 204: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 207: invokeinterface #1017, 3 // InterfaceMethod java/util/Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 212: pop + 213: iconst_1 + 214: istore 10 + 216: iload 9 + 218: ifne 226 + 221: iload 10 + 223: ifeq 280 + 226: lload 4 + 228: getstatic #755 // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map; + 231: getstatic #757 // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map; + 234: aload_0 + 235: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 238: invokestatic #1019 // Method resetForNewStart:(JLjava/util/Map;Ljava/util/Map;Lsoftware/bernie/geckolib/core/animation/AnimationController;)V + 241: ldc2_w #1020 // double 37.0d + 244: iconst_1 + 245: aload_1 + 246: invokestatic #313 // Method reloadTicksForStack:(Lnet/minecraft/world/item/ItemStack;)I + 249: invokestatic #146 // Method java/lang/Math.max:(II)I + 252: i2d + 253: ddiv + 254: dstore 11 + 256: aload_0 + 257: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 260: dload 11 + 262: invokevirtual #1000 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController; + 265: pop + 266: aload_0 + 267: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 270: getstatic #1023 // Field ANIM_RELOAD:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 273: invokevirtual #1006 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V + 276: getstatic #1009 // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState; + 279: areturn + 280: aload_1 + 281: invokestatic #1025 // Method isShootAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z + 284: ifeq 377 + 287: getstatic #726 // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map; + 290: lload 4 + 292: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 295: invokeinterface #762, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 300: checkcast #728 // class java/lang/Long + 303: astore 11 + 305: aload 11 + 307: ifnull 354 + 310: aload 11 + 312: getstatic #759 // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map; + 315: lload 4 + 317: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 320: invokeinterface #762, 2 // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object; + 325: invokevirtual #781 // Method java/lang/Long.equals:(Ljava/lang/Object;)Z + 328: ifne 354 + 331: aload_0 + 332: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 335: invokevirtual #785 // Method software/bernie/geckolib/core/animation/AnimationController.forceAnimationReset:()V + 338: getstatic #759 // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map; + 341: lload 4 + 343: invokestatic #732 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long; + 346: aload 11 + 348: invokeinterface #743, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; + 353: pop + 354: aload_0 + 355: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 358: dconst_1 + 359: invokevirtual #1000 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController; + 362: pop + 363: aload_0 + 364: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 367: getstatic #1027 // Field ANIM_SHOOT:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 370: invokevirtual #1006 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V + 373: getstatic #1009 // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState; + 376: areturn + 377: aload_1 + 378: lload 6 + 380: invokestatic #1029 // Method isDrawAnimationActive:(Lnet/minecraft/world/item/ItemStack;J)Z + 383: ifeq 424 + 386: lload 4 + 388: getstatic #745 // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map; + 391: getstatic #751 // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map; + 394: aload_0 + 395: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 398: invokestatic #1019 // Method resetForNewStart:(JLjava/util/Map;Ljava/util/Map;Lsoftware/bernie/geckolib/core/animation/AnimationController;)V + 401: aload_0 + 402: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 405: dconst_1 + 406: invokevirtual #1000 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController; + 409: pop + 410: aload_0 + 411: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 414: getstatic #1031 // Field ANIM_DRAW:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 417: invokevirtual #1006 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V + 420: getstatic #1009 // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState; + 423: areturn + 424: aload_0 + 425: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 428: dconst_1 + 429: invokevirtual #1000 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController; + 432: pop + 433: aload_0 + 434: invokevirtual #996 // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController; + 437: getstatic #1002 // Field ANIM_IDLE:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 440: invokevirtual #1006 // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V + 443: getstatic #1009 // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState; + 446: areturn + + static {}; + Code: + 0: new #816 // class net/minecraft/resources/ResourceLocation + 3: dup + 4: ldc_w #1044 // String sa_core + 7: ldc_w #1046 // String nails + 10: invokespecial #1049 // Method net/minecraft/resources/ResourceLocation."":(Ljava/lang/String;Ljava/lang/String;)V + 13: putstatic #814 // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation; + 16: invokestatic #1055 // Method software/bernie/geckolib/core/animation/RawAnimation.begin:()Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 19: ldc_w #1057 // String idle + 22: invokevirtual #1061 // Method software/bernie/geckolib/core/animation/RawAnimation.thenLoop:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 25: putstatic #1002 // Field ANIM_IDLE:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 28: invokestatic #1055 // Method software/bernie/geckolib/core/animation/RawAnimation.begin:()Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 31: ldc_w #1063 // String draw + 34: invokevirtual #1066 // Method software/bernie/geckolib/core/animation/RawAnimation.thenPlayAndHold:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 37: putstatic #1031 // Field ANIM_DRAW:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 40: invokestatic #1055 // Method software/bernie/geckolib/core/animation/RawAnimation.begin:()Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 43: ldc_w #1068 // String shoot_normal + 46: invokevirtual #1066 // Method software/bernie/geckolib/core/animation/RawAnimation.thenPlayAndHold:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 49: putstatic #1027 // Field ANIM_SHOOT:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 52: invokestatic #1055 // Method software/bernie/geckolib/core/animation/RawAnimation.begin:()Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 55: ldc_w #1070 // String reload + 58: invokevirtual #1066 // Method software/bernie/geckolib/core/animation/RawAnimation.thenPlayAndHold:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 61: putstatic #1023 // Field ANIM_RELOAD:Lsoftware/bernie/geckolib/core/animation/RawAnimation; + 64: new #1072 // class java/util/concurrent/ConcurrentHashMap + 67: dup + 68: invokespecial #1074 // Method java/util/concurrent/ConcurrentHashMap."":()V + 71: putstatic #726 // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map; + 74: new #1072 // class java/util/concurrent/ConcurrentHashMap + 77: dup + 78: invokespecial #1074 // Method java/util/concurrent/ConcurrentHashMap."":()V + 81: putstatic #759 // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map; + 84: new #1072 // class java/util/concurrent/ConcurrentHashMap + 87: dup + 88: invokespecial #1074 // Method java/util/concurrent/ConcurrentHashMap."":()V + 91: putstatic #799 // Field CLIENT_LAST_HAND_RENDER:Ljava/util/Map; + 94: new #1072 // class java/util/concurrent/ConcurrentHashMap + 97: dup + 98: invokespecial #1074 // Method java/util/concurrent/ConcurrentHashMap."":()V + 101: putstatic #745 // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map; + 104: new #1072 // class java/util/concurrent/ConcurrentHashMap + 107: dup + 108: invokespecial #1074 // Method java/util/concurrent/ConcurrentHashMap."":()V + 111: putstatic #751 // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map; + 114: new #1072 // class java/util/concurrent/ConcurrentHashMap + 117: dup + 118: invokespecial #1074 // Method java/util/concurrent/ConcurrentHashMap."":()V + 121: putstatic #755 // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map; + 124: new #1072 // class java/util/concurrent/ConcurrentHashMap + 127: dup + 128: invokespecial #1074 // Method java/util/concurrent/ConcurrentHashMap."":()V + 131: putstatic #757 // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map; + 134: return +} + + +==================== com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket ==================== +Compiled from "FireNailGunC2SPacket.java" +public class com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket { + private final net.minecraft.world.InteractionHand hand; + + private final float aimProgress; + + public com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket(net.minecraft.world.InteractionHand); + Code: + 0: aload_0 + 1: aload_1 + 2: fconst_0 + 3: invokespecial #24 // Method "":(Lnet/minecraft/world/InteractionHand;F)V + 6: return + + public com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket(net.minecraft.world.InteractionHand, float); + Code: + 0: aload_0 + 1: invokespecial #29 // Method java/lang/Object."":()V + 4: aload_0 + 5: aload_1 + 6: putfield #31 // Field hand:Lnet/minecraft/world/InteractionHand; + 9: aload_0 + 10: fload_2 + 11: putfield #33 // Field aimProgress:F + 14: return + + public static void encode(com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket, net.minecraft.network.FriendlyByteBuf); + Code: + 0: aload_1 + 1: aload_0 + 2: getfield #31 // Field hand:Lnet/minecraft/world/InteractionHand; + 5: invokevirtual #41 // Method net/minecraft/network/FriendlyByteBuf.m_130068_:(Ljava/lang/Enum;)Lnet/minecraft/network/FriendlyByteBuf; + 8: pop + 9: aload_1 + 10: aload_0 + 11: getfield #33 // Field aimProgress:F + 14: invokevirtual #45 // Method net/minecraft/network/FriendlyByteBuf.writeFloat:(F)Lio/netty/buffer/ByteBuf; + 17: pop + 18: return + + public static com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket decode(net.minecraft.network.FriendlyByteBuf); + Code: + 0: new #2 // class com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket + 3: dup + 4: aload_0 + 5: ldc #52 // class net/minecraft/world/InteractionHand + 7: invokevirtual #56 // Method net/minecraft/network/FriendlyByteBuf.m_130066_:(Ljava/lang/Class;)Ljava/lang/Enum; + 10: checkcast #52 // class net/minecraft/world/InteractionHand + 13: aload_0 + 14: invokevirtual #60 // Method net/minecraft/network/FriendlyByteBuf.readFloat:()F + 17: invokespecial #24 // Method "":(Lnet/minecraft/world/InteractionHand;F)V + 20: areturn + + public static void handle(com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket, java.util.function.Supplier); + Code: + 0: aload_1 + 1: invokeinterface #69, 1 // InterfaceMethod java/util/function/Supplier.get:()Ljava/lang/Object; + 6: checkcast #7 // class net/minecraftforge/network/NetworkEvent$Context + 9: astore_2 + 10: aload_2 + 11: aload_2 + 12: aload_0 + 13: invokedynamic #86, 0 // InvokeDynamic #0:run:(Lnet/minecraftforge/network/NetworkEvent$Context;Lcom/ogaba/sa_combat/network/packet/FireNailGunC2SPacket;)Ljava/lang/Runnable; + 18: invokevirtual #90 // Method net/minecraftforge/network/NetworkEvent$Context.enqueueWork:(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; + 21: pop + 22: aload_2 + 23: iconst_1 + 24: invokevirtual #94 // Method net/minecraftforge/network/NetworkEvent$Context.setPacketHandled:(Z)V + 27: return + + private static void lambda$handle$0(net.minecraftforge.network.NetworkEvent$Context, com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket); + Code: + 0: aload_0 + 1: invokevirtual #103 // Method net/minecraftforge/network/NetworkEvent$Context.getSender:()Lnet/minecraft/server/level/ServerPlayer; + 4: astore_2 + 5: aload_2 + 6: ifnonnull 10 + 9: return + 10: aload_1 + 11: getfield #31 // Field hand:Lnet/minecraft/world/InteractionHand; + 14: getstatic #108 // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand; + 17: if_acmpeq 21 + 20: return + 21: aload_2 + 22: aload_1 + 23: getfield #31 // Field hand:Lnet/minecraft/world/InteractionHand; + 26: invokevirtual #112 // Method net/minecraft/server/level/ServerPlayer.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack; + 29: astore_3 + 30: aload_3 + 31: invokevirtual #118 // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item; + 34: astore 5 + 36: aload 5 + 38: instanceof #120 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 41: ifeq 54 + 44: aload 5 + 46: checkcast #120 // class com/ogaba/sa_combat/combat/weapon/NailGunItem + 49: astore 4 + 51: goto 55 + 54: return + 55: aload_3 + 56: invokestatic #124 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z + 59: ifne 76 + 62: aload_2 + 63: invokevirtual #128 // Method net/minecraft/server/level/ServerPlayer.m_20142_:()Z + 66: ifne 76 + 69: aload_3 + 70: invokestatic #132 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I + 73: ifgt 77 + 76: return + 77: aload_2 + 78: invokevirtual #136 // Method net/minecraft/server/level/ServerPlayer.m_36335_:()Lnet/minecraft/world/item/ItemCooldowns; + 81: aload 4 + 83: invokevirtual #142 // Method net/minecraft/world/item/ItemCooldowns.m_41519_:(Lnet/minecraft/world/item/Item;)Z + 86: ifne 103 + 89: aload_3 + 90: aload_2 + 91: invokevirtual #146 // Method net/minecraft/server/level/ServerPlayer.m_9236_:()Lnet/minecraft/world/level/Level; + 94: invokevirtual #152 // Method net/minecraft/world/level/Level.m_46467_:()J + 97: invokestatic #156 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.consumeServerFirePermit:(Lnet/minecraft/world/item/ItemStack;J)Z + 100: ifne 104 + 103: return + 104: aload 4 + 106: aload_2 + 107: invokevirtual #146 // Method net/minecraft/server/level/ServerPlayer.m_9236_:()Lnet/minecraft/world/level/Level; + 110: aload_2 + 111: aload_3 + 112: aload_1 + 113: getfield #31 // Field hand:Lnet/minecraft/world/InteractionHand; + 116: aload_1 + 117: getfield #33 // Field aimProgress:F + 120: invokevirtual #160 // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.fire:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/InteractionHand;F)V + 123: aload_2 + 124: invokevirtual #136 // Method net/minecraft/server/level/ServerPlayer.m_36335_:()Lnet/minecraft/world/item/ItemCooldowns; + 127: aload 4 + 129: iconst_1 + 130: invokevirtual #164 // Method net/minecraft/world/item/ItemCooldowns.m_41524_:(Lnet/minecraft/world/item/Item;I)V + 133: return +} diff --git a/_sa_hanhua_out/_tmp/jianbing_gen.jpg b/_sa_hanhua_out/_tmp/jianbing_gen.jpg new file mode 100644 index 0000000..3377809 Binary files /dev/null and b/_sa_hanhua_out/_tmp/jianbing_gen.jpg differ diff --git a/_sa_hanhua_out/_tmp/list_strings_events.py b/_sa_hanhua_out/_tmp/list_strings_events.py new file mode 100644 index 0000000..52c2bc4 --- /dev/null +++ b/_sa_hanhua_out/_tmp/list_strings_events.py @@ -0,0 +1,26 @@ +import zipfile, os, subprocess, re + +jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +out = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\classes' + +t = 'com/ogaba/sa_combat/client/event/SACombatClientForgeEvents.class' +p = os.path.join(out, t.replace('/', os.sep)) +os.makedirs(os.path.dirname(p), exist_ok=True) +with zipfile.ZipFile(jar) as z: + with open(p, 'wb') as f: + f.write(z.read(t)) + +javap = r'D:\我的世界\bin\javap.EXE' +cname = t[:-6].replace('/', '.') +r = subprocess.run([javap, '-c', '-p', '-classpath', out, cname], capture_output=True, text=True, encoding='utf-8', errors='replace') +text = r.stdout if r.returncode == 0 else r.stderr +with open(r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\javap_events.txt', 'w', encoding='utf-8') as f: + f.write(text) +print('len:', len(text)) + +# 提取所有 String 常量(含上下文:前一行的方法归属很难,只列常量本身 + ldc 所在行) +print('\n===== 所有 String 常量 =====') +for line in text.splitlines(): + m = re.search(r'(?:ldc|ldc_w)\s+#\d+\s+// String (.+)', line.strip()) + if m: + print(' ', m.group(1)) diff --git a/_sa_hanhua_out/_tmp/make_jianbing.py b/_sa_hanhua_out/_tmp/make_jianbing.py new file mode 100644 index 0000000..7d1e0a2 --- /dev/null +++ b/_sa_hanhua_out/_tmp/make_jianbing.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +from PIL import Image +src = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\jianbing_gen.jpg" +dst = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\resource_pack_t7eJjrxY\textures\items\jianbing.png" +im = Image.open(src).convert("RGBA") +# 生成图为 JPG,无透明通道;先裁切到主体并缩放到16x16等比例,再把背景置为透明 +# 直接等比缩放整图到16x16(原图为方形,保持比例不变形) +resized = im.resize((16, 16), Image.LANCZOS) +# 对接近白色的背景擦除为透明(JPG无alpha) +pix = resized.load() +for y in range(16): + for x in range(16): + r, g, b, a = pix[x, y] + if r > 245 and g > 240 and b > 230: + pix[x, y] = (r, g, b, 0) +resized.save(dst) +print("saved", resized.size) \ No newline at end of file diff --git a/_sa_hanhua_out/_tmp/probe_attach.py b/_sa_hanhua_out/_tmp/probe_attach.py new file mode 100644 index 0000000..24510e6 --- /dev/null +++ b/_sa_hanhua_out/_tmp/probe_attach.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +import struct +src = r"c:\Users\30272\.trae-cn\attachments\6abd5dab88c975032f77b873\45664c29-17cf-4473-8de0-b4f99b618bb9_8d157aea-2a26-4cb5-8f07-a59b4c212fa5_Jianbing.png" +with open(src, "rb") as f: + head = f.read(16) +print("magic hex:", head[:16].hex()) +print("signature:", head[:8]) +# PNG: 89504e470d0a1a0a WEBP: 52494646....57454250 JPEG: ffd8ff GIF: 47494638 \ No newline at end of file diff --git a/_sa_hanhua_out/_tmp/read_blueprint.py b/_sa_hanhua_out/_tmp/read_blueprint.py new file mode 100644 index 0000000..f0b978d --- /dev/null +++ b/_sa_hanhua_out/_tmp/read_blueprint.py @@ -0,0 +1,8 @@ +import zipfile, json + +f = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +z = zipfile.ZipFile(f) +for n in ['data/sa_combat/sa_combat/blueprints/chainsaw_sword.json', + 'data/sa_combat/sa_combat/blueprints/brutalizer.json']: + print('===', n) + print(z.read(n).decode('utf-8')) diff --git a/_sa_hanhua_out/_tmp/read_modstoml.py b/_sa_hanhua_out/_tmp/read_modstoml.py new file mode 100644 index 0000000..4307795 --- /dev/null +++ b/_sa_hanhua_out/_tmp/read_modstoml.py @@ -0,0 +1,20 @@ +import zipfile + +base = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out' +jars = { + 'essentials': base + r'\sa_essentials-forge-1.20.1-1.0.0.jar', + 'lib': base + r'\sa_lib-forge-1.20.1-1.0.1.jar', + 'decor': base + r'\sa_decor-forge-1.20.1-1.0.3.jar', +} + +for name, jar in jars.items(): + print('='*30, name, '='*30) + with zipfile.ZipFile(jar) as z: + if 'META-INF/mods.toml' in z.namelist(): + print(z.read('META-INF/mods.toml').decode('utf-8')) + else: + for n in z.namelist(): + if n.endswith('mods.toml'): + print('found:', n) + print(z.read(n).decode('utf-8')) + print() diff --git a/_sa_hanhua_out/_tmp/scan_blueprint.py b/_sa_hanhua_out/_tmp/scan_blueprint.py new file mode 100644 index 0000000..f2136a3 --- /dev/null +++ b/_sa_hanhua_out/_tmp/scan_blueprint.py @@ -0,0 +1,13 @@ +import zipfile + +f = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +z = zipfile.ZipFile(f) +print('=== jar 顶层条目(data/ 相关) ===') +for n in z.namelist(): + if n.startswith('data/') and (n.endswith('.json')): + print(' ', n) +print() +print('=== Blueprint 相关类 ===') +for n in z.namelist(): + if n.endswith('.class') and 'blueprint' in n.lower(): + print(' ', n) diff --git a/_sa_hanhua_out/_tmp/scan_english_phrases.py b/_sa_hanhua_out/_tmp/scan_english_phrases.py new file mode 100644 index 0000000..307b0f5 --- /dev/null +++ b/_sa_hanhua_out/_tmp/scan_english_phrases.py @@ -0,0 +1,30 @@ +import zipfile, re + +base = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out' +jar = base + r'\sa_essentials-forge-1.20.1-1.0.0.jar' + +# 从 class 字节中提取含空格的英文短语(连续 ASCII 段内,含空格、多为字符串字面量而非标识符) +pat = re.compile(rb'[A-Za-z][A-Za-z ]{7,}') +results = {} +with zipfile.ZipFile(jar) as z: + for n in z.namelist(): + if not n.endswith('.class'): + continue + try: + b = z.read(n) + except Exception: + continue + # 只取 ASCII 区段(去掉高位字节,避免误连) + ascii_blob = bytes(c if 32 <= c < 127 else 0x20 for c in b) + for m in pat.finditer(ascii_blob): + s = m.group().decode('ascii') + if ' ' not in s: + continue + s = s.strip() + if len(s) < 8: + continue + results.setdefault(s, []).append(n) + +print('找到含空格的英文短语 %d 个(去重):' % len(results)) +for s in sorted(results): + print(' %-50s %s' % (s, results[s][0])) diff --git a/_sa_hanhua_out/_tmp/scan_keys.py b/_sa_hanhua_out/_tmp/scan_keys.py new file mode 100644 index 0000000..f779d98 --- /dev/null +++ b/_sa_hanhua_out/_tmp/scan_keys.py @@ -0,0 +1,30 @@ +import zipfile, json, re + +f = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +z = zipfile.ZipFile(f) +en = json.loads(z.read('assets/sa_combat/lang/en_us.json').decode('utf-8')) +zh = json.loads(z.read('assets/sa_combat/lang/zh_cn.json').decode('utf-8')) + +print('=== en_us 中所有 blueprint.* key(及其zh值) ===') +for k, v in en.items(): + if 'blueprint' in k: + print(f' {k} = {v!r} | zh: {zh.get(k, "<缺失>")!r}') + +print() +print('=== 运行时 class 引用的 lang key(sa_combat namespace) ===') +pat = re.compile(rb'(?:tooltip|gui|container|block|item|creativetab|key|menu|entity|description)\.[a-z0-9_]+\.[a-z0-9_.]+') +refs = {} +for n in z.namelist(): + if n.endswith('.class') and 'datagen' not in n: + data = z.read(n) + for m in pat.findall(data): + try: + s = m.decode() + except: + continue + if s.startswith('tooltip.') or s.startswith('gui.') or s.startswith('creativetab.') or s.startswith('key.') or s.startswith('menu.'): + refs.setdefault(s, set()).add(n) +for k in sorted(refs): + print(f' {k}') + for c in sorted(refs[k]): + print(f' <- {c}') diff --git a/_sa_hanhua_out/_tmp/scan_reload.py b/_sa_hanhua_out/_tmp/scan_reload.py new file mode 100644 index 0000000..1b9c93d --- /dev/null +++ b/_sa_hanhua_out/_tmp/scan_reload.py @@ -0,0 +1,32 @@ +import zipfile, re + +base = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out' +jars = { + 'essentials': base + r'\sa_essentials-forge-1.20.1-1.0.0.jar', + 'lib': base + r'\sa_lib-forge-1.20.1-1.0.1.jar', + 'decor': base + r'\sa_decor-forge-1.20.1-1.0.3.jar', +} + +pat = re.compile(r"Reloading", re.IGNORECASE) +for name, jar in jars.items(): + hits = [] + with zipfile.ZipFile(jar) as z: + for n in z.namelist(): + if n.endswith('/') or n.endswith('.png') or n.endswith('.jpg') or n.endswith('.ogg'): + continue + try: + b = z.read(n) + except Exception: + continue + if n.endswith('.class'): + s = ''.join(chr(c) for c in b if 32 <= c < 127 or c in (9, 10, 13)) + else: + try: + s = b.decode('utf-8', errors='ignore') + except Exception: + continue + if pat.search(s): + hits.append(n) + print(f'[{name}] Reloading 命中: {len(hits)}') + for h in hits: + print(' ', h) diff --git a/_sa_hanhua_out/_tmp/scan_render_consts.py b/_sa_hanhua_out/_tmp/scan_render_consts.py new file mode 100644 index 0000000..daa1139 --- /dev/null +++ b/_sa_hanhua_out/_tmp/scan_render_consts.py @@ -0,0 +1,48 @@ +import zipfile, os, subprocess, re, shutil + +jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar' +out = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\classes' + +# 候选:所有渲染/HUD/overlay 类 +cands = [] +with zipfile.ZipFile(jar) as z: + for n in z.namelist(): + if n.endswith('.class') and ('/render/' in n or '/renderer/' in n or '/event/' in n or '/tooltip/' in n or 'Overlay' in n or 'Hud' in n or 'HUD' in n or 'Gui' in n): + cands.append(n) + +javap = r'D:\我的世界\bin\javap.EXE' +if not os.path.exists(javap): + javap = shutil.which('javap') + +const_pat = re.compile(r'(?:ldc|ldc_w)\s+#\d+\s+// String (.+)') +skip = {'minecraft','sa_combat','sa_core','sa_survival','sa_decor','nails','textures/'} +report = [] +for t in sorted(cands): + p = os.path.join(out, t.replace('/', os.sep)) + os.makedirs(os.path.dirname(p), exist_ok=True) + with zipfile.ZipFile(jar) as z: + try: + with open(p, 'wb') as f: + f.write(z.read(t)) + except KeyError: + continue + cname = t[:-6].replace('/', '.') + r = subprocess.run([javap, '-c', '-p', '-classpath', out, cname], capture_output=True, text=True, encoding='utf-8', errors='replace') + text = r.stdout if r.returncode == 0 else r.stderr + consts = [m.group(1) for m in const_pat.finditer(text)] + # 过滤明显非显示文本 + interesting = [] + for s in consts: + if s in skip or s.startswith('textures/'): + continue + if s.isdigit() or (len(s) < 4): + continue + interesting.append(s) + if interesting: + report.append('== %s ==' % cname) + for s in interesting: + report.append(' ' + s) + +with open(r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\_tmp\consts_render.txt', 'w', encoding='utf-8') as f: + f.write('\n'.join(report)) +print('\n'.join(report[:400])) diff --git a/_sa_hanhua_out/_tmp/split_food_tab.py b/_sa_hanhua_out/_tmp/split_food_tab.py new file mode 100644 index 0000000..d3ee3d6 --- /dev/null +++ b/_sa_hanhua_out/_tmp/split_food_tab.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +"""把 44 个食物物品分到独立分页 dn_sa_food(食物),材料保留 dn_sa""" +import os, json, csv + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +DROP = {'box_of_nails', 'box_of_paperclips', 'box_of_screws', 'gunpowder_bottle', 'rope', + 'water_bottle', 'water_bottle2', 'blank', 'empty_glass_bottle', 'falsh_lights', + 'cellphone', 'jerry_can', 'dirty_water_bottle'} + +# 材料集合(63) +mats = set() +with open(os.path.join(BASE, '_sa_materials.csv'), encoding='utf-8-sig') as f: + for row in csv.reader(f): + if row and row[1].endswith('.png') and row[0].isdigit() and row[1][:-4] not in DROP: + mats.add(row[1][:-4]) + +BEHDIR = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_items_beh') +food_count, mat_count = 0, 0 +for fn in sorted(os.listdir(BEHDIR)): + if not fn.endswith('.json'): + continue + name = fn[len('dn_sa_'):-5] + p = os.path.join(BEHDIR, fn) + d = json.load(open(p, encoding='utf-8')) + if name in mats: + mat_count += 1 # 材料,保持 dn_sa + else: + d['minecraft:item']['description']['category'] = 'dn_sa_food' + json.dump(d, open(p, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) + food_count += 1 +print('食物 category 改为 dn_sa_food:', food_count, '| 材料保持 dn_sa:', mat_count) + +# tab.json 添加食物分页 +TP = os.path.join(BASE, 'behavior_pack_kcH4M5u0/netease_tab/tab.json') +t = json.load(open(TP, encoding='utf-8')) +t['category'].append({ + 'name': 'dn_sa_food', + 'labelText': 'dn_sa:tab_food', + 'icon': 'textures/items/burger' +}) +json.dump(t, open(TP, 'w', encoding='utf-8'), ensure_ascii=False, indent=4) +print('tab.json 分页数:', len(t['category'])) + +# lang 添加分页标题 +LP = os.path.join(BASE, 'resource_pack_t7eJjrxY/texts/zh_CN.lang') +lang = open(LP, encoding='utf-8').read() +if 'dn_sa:tab_food=' not in lang: + open(LP, 'a', encoding='utf-8').write('\ndn_sa:tab_food=食物\n') + print('lang 添加: dn_sa:tab_food=食物') +else: + print('lang 已有 tab_food') + +# 验证 +beh = [f for f in os.listdir(BEHDIR) if f.endswith('.json')] +print('beh json 总数:', len(beh)) diff --git a/_sa_hanhua_out/_tmp/sync_names.py b/_sa_hanhua_out/_tmp/sync_names.py new file mode 100644 index 0000000..2e699fb --- /dev/null +++ b/_sa_hanhua_out/_tmp/sync_names.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +"""对比 Java 模组 sa_core 汉化,统一网易版 66 个材料的中文名""" +import zipfile, json, os, csv + +BASE = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a' +DROP = {'box_of_nails', 'box_of_paperclips', 'box_of_screws', 'gunpowder_bottle', 'rope', + 'water_bottle', 'water_bottle2', 'blank', 'empty_glass_bottle', 'falsh_lights'} + +# 1) Java 版 sa_core 汉化物品名映射 +z = zipfile.ZipFile(os.path.join(BASE, '_sa_hanhua_out', 'sa_lib-forge-1.20.1-1.0.1.jar')) +zh = json.loads(z.read('assets/sa_core/lang/zh_cn.json')) +z.close() +jnames = {} +for k, v in zh.items(): + # 格式: item.sa_core.(无 .name 后缀) + if k.startswith('item.sa_core.') and '.' not in k[len('item.sa_core.'):]: + jnames[k[len('item.sa_core.'):]] = v +print('Java 版物品名条目:', len(jnames)) + +# 2) 66 个材料 +mats = [] +with open(os.path.join(BASE, '_sa_materials.csv'), encoding='utf-8-sig') as f: + for row in csv.reader(f): + if row and row[1].endswith('.png') and row[0].isdigit() and row[1][:-4] not in DROP: + mats.append(row[1][:-4]) +print('网易版材料数:', len(mats)) + +# 3) 对比 lang +LP = os.path.join(BASE, 'resource_pack_t7eJjrxY/texts/zh_CN.lang') +lang = open(LP, encoding='utf-8').read() +replaced, no_java, same = [], [], [] +lines = lang.splitlines() +new_lines = [] +for l in lines: + hit = None + for m in mats: + prefix = 'item.dn_sa:%s.name=' % m + if l.startswith(prefix): + hit = (m, l[len(prefix):]) + break + if hit: + m, cur = hit + if m in jnames: + jv = jnames[m] + if jv != cur: + new_lines.append('%s%s' % (prefix, jv)) + replaced.append((m, cur, jv)) + else: + new_lines.append(l) + same.append((m, jv)) + else: + new_lines.append(l) + no_java.append((m, cur)) + else: + new_lines.append(l) +open(LP, 'w', encoding='utf-8').write('\n'.join(new_lines) + ('\n' if new_lines else '')) +print('已替换(与Java版不一致):', len(replaced)) +for m, c, j in replaced: print(' 改:', m, '| 原:', c, '->', j) +print('一致未改:', len(same)) +print('Java版无此名称(保留网易名):', len(no_java)) +for m, c in no_java: print(' 保留:', m, '=', c) diff --git a/_sa_hanhua_out/_tmp/verify_matchbox.py b/_sa_hanhua_out/_tmp/verify_matchbox.py new file mode 100644 index 0000000..3b9aa6b --- /dev/null +++ b/_sa_hanhua_out/_tmp/verify_matchbox.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +import json, py_compile, os + +base = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\behavior_pack_kcH4M5u0" + +# 1. JSON 语法检查 +for jf in [ + os.path.join(base, "netease_items_beh", "dn_sa_matchbox.json"), + os.path.join(base, "manifest.json"), +]: + with open(jf, "r", encoding="utf-8") as f: + data = json.load(f) + print("JSON OK:", os.path.basename(jf), "->", data) + +# 2. Python 脚本语法检查(py_compile,本机为 Python3,语法为 py2/py3 兼容) +for pf in ["scripts/__init__.py", "scripts/modMain.py", "scripts/matchboxServer.py"]: + p = os.path.join(base, pf) + try: + py_compile.compile(p, doraise=True) + print("PY OK:", pf) + except py_compile.PyCompileError as e: + print("PY ERROR:", pf, e) diff --git a/_sa_hanhua_out/_tmp/verify_xlsx.py b/_sa_hanhua_out/_tmp/verify_xlsx.py new file mode 100644 index 0000000..9341715 --- /dev/null +++ b/_sa_hanhua_out/_tmp/verify_xlsx.py @@ -0,0 +1,10 @@ +import openpyxl, os +base = r"e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a" +wb = openpyxl.load_workbook(os.path.join(base, "幸存者军火库食物表.xlsx")) +ws = wb["全食物数据表"] +ids = ["taco","taco_rotten","coxinha","rotten_coxinha","coxinha_dough","raw_coxinha", + "pastel_dough","raw_cheese_pastel","raw_meat_pastel","raw_wind_pastel", + "meat_pastel","wind_pastel","pacoquita"] +for r in range(3, ws.max_row + 1): + if ws.cell(row=r, column=2).value in ids: + print(ws.cell(row=r, column=2).value, "->", ws.cell(row=r, column=3).value) diff --git a/_sa_hanhua_out/craft_button.png b/_sa_hanhua_out/craft_button.png new file mode 100644 index 0000000..2decc65 Binary files /dev/null and b/_sa_hanhua_out/craft_button.png differ diff --git a/_sa_hanhua_out/sa_decor-forge-1.20.1-1.0.3.jar b/_sa_hanhua_out/sa_decor-forge-1.20.1-1.0.3.jar new file mode 100644 index 0000000..dcdbe51 Binary files /dev/null and b/_sa_hanhua_out/sa_decor-forge-1.20.1-1.0.3.jar differ diff --git a/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar new file mode 100644 index 0000000..ad0c609 Binary files /dev/null and b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar differ diff --git a/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_24x13 b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_24x13 new file mode 100644 index 0000000..bb82e10 Binary files /dev/null and b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_24x13 differ diff --git a/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_40x22 b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_40x22 new file mode 100644 index 0000000..2c041cd Binary files /dev/null and b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_40x22 differ diff --git a/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_60x33 b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_60x33 new file mode 100644 index 0000000..4b4c29d Binary files /dev/null and b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_60x33 differ diff --git a/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_nametabs b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_nametabs new file mode 100644 index 0000000..bf45f72 Binary files /dev/null and b/_sa_hanhua_out/sa_essentials-forge-1.20.1-1.0.0.jar.bak_nametabs differ diff --git a/_sa_hanhua_out/sa_lib-forge-1.20.1-1.0.1.jar b/_sa_hanhua_out/sa_lib-forge-1.20.1-1.0.1.jar new file mode 100644 index 0000000..4897732 Binary files /dev/null and b/_sa_hanhua_out/sa_lib-forge-1.20.1-1.0.1.jar differ diff --git a/_sa_material_textures/adhesive_tape.png b/_sa_material_textures/adhesive_tape.png new file mode 100644 index 0000000..17e3b30 Binary files /dev/null and b/_sa_material_textures/adhesive_tape.png differ diff --git a/_sa_material_textures/alcohol.png b/_sa_material_textures/alcohol.png new file mode 100644 index 0000000..b0ae3d0 Binary files /dev/null and b/_sa_material_textures/alcohol.png differ diff --git a/_sa_material_textures/antiseptic.png b/_sa_material_textures/antiseptic.png new file mode 100644 index 0000000..7a17c72 Binary files /dev/null and b/_sa_material_textures/antiseptic.png differ diff --git a/_sa_material_textures/ashen_steel_ingot.png b/_sa_material_textures/ashen_steel_ingot.png new file mode 100644 index 0000000..4c32d25 Binary files /dev/null and b/_sa_material_textures/ashen_steel_ingot.png differ diff --git a/_sa_material_textures/ashen_steel_mixture.png b/_sa_material_textures/ashen_steel_mixture.png new file mode 100644 index 0000000..bc29313 Binary files /dev/null and b/_sa_material_textures/ashen_steel_mixture.png differ diff --git a/_sa_material_textures/ashen_steel_nugget.png b/_sa_material_textures/ashen_steel_nugget.png new file mode 100644 index 0000000..2784f4d Binary files /dev/null and b/_sa_material_textures/ashen_steel_nugget.png differ diff --git a/_sa_material_textures/ashen_steel_rod.png b/_sa_material_textures/ashen_steel_rod.png new file mode 100644 index 0000000..01f79d9 Binary files /dev/null and b/_sa_material_textures/ashen_steel_rod.png differ diff --git a/_sa_material_textures/battery.png b/_sa_material_textures/battery.png new file mode 100644 index 0000000..bd7c039 Binary files /dev/null and b/_sa_material_textures/battery.png differ diff --git a/_sa_material_textures/blank.png b/_sa_material_textures/blank.png new file mode 100644 index 0000000..33bfeab Binary files /dev/null and b/_sa_material_textures/blank.png differ diff --git a/_sa_material_textures/box_of_nails.png b/_sa_material_textures/box_of_nails.png new file mode 100644 index 0000000..78d6572 Binary files /dev/null and b/_sa_material_textures/box_of_nails.png differ diff --git a/_sa_material_textures/box_of_paperclips.png b/_sa_material_textures/box_of_paperclips.png new file mode 100644 index 0000000..990c274 Binary files /dev/null and b/_sa_material_textures/box_of_paperclips.png differ diff --git a/_sa_material_textures/box_of_screws.png b/_sa_material_textures/box_of_screws.png new file mode 100644 index 0000000..66b3194 Binary files /dev/null and b/_sa_material_textures/box_of_screws.png differ diff --git a/_sa_material_textures/camera.png b/_sa_material_textures/camera.png new file mode 100644 index 0000000..c27ed29 Binary files /dev/null and b/_sa_material_textures/camera.png differ diff --git a/_sa_material_textures/cardboard.png b/_sa_material_textures/cardboard.png new file mode 100644 index 0000000..a2988c7 Binary files /dev/null and b/_sa_material_textures/cardboard.png differ diff --git a/_sa_material_textures/cellphone.png b/_sa_material_textures/cellphone.png new file mode 100644 index 0000000..74722d0 Binary files /dev/null and b/_sa_material_textures/cellphone.png differ diff --git a/_sa_material_textures/charcoal_dust.png b/_sa_material_textures/charcoal_dust.png new file mode 100644 index 0000000..fac44fc Binary files /dev/null and b/_sa_material_textures/charcoal_dust.png differ diff --git a/_sa_material_textures/classic_watch.png b/_sa_material_textures/classic_watch.png new file mode 100644 index 0000000..f3b77e0 Binary files /dev/null and b/_sa_material_textures/classic_watch.png differ diff --git a/_sa_material_textures/cleaning_liquid.png b/_sa_material_textures/cleaning_liquid.png new file mode 100644 index 0000000..b237842 Binary files /dev/null and b/_sa_material_textures/cleaning_liquid.png differ diff --git a/_sa_material_textures/cloth.png b/_sa_material_textures/cloth.png new file mode 100644 index 0000000..ee47482 Binary files /dev/null and b/_sa_material_textures/cloth.png differ diff --git a/_sa_material_textures/copper_wire.png b/_sa_material_textures/copper_wire.png new file mode 100644 index 0000000..86bb5af Binary files /dev/null and b/_sa_material_textures/copper_wire.png differ diff --git a/_sa_material_textures/dented_can.png b/_sa_material_textures/dented_can.png new file mode 100644 index 0000000..c8b872d Binary files /dev/null and b/_sa_material_textures/dented_can.png differ diff --git a/_sa_material_textures/diamond_nugget.png b/_sa_material_textures/diamond_nugget.png new file mode 100644 index 0000000..eb3ad82 Binary files /dev/null and b/_sa_material_textures/diamond_nugget.png differ diff --git a/_sa_material_textures/dirty_rags.png b/_sa_material_textures/dirty_rags.png new file mode 100644 index 0000000..8454764 Binary files /dev/null and b/_sa_material_textures/dirty_rags.png differ diff --git a/_sa_material_textures/dirty_water_bottle.png b/_sa_material_textures/dirty_water_bottle.png new file mode 100644 index 0000000..9181767 Binary files /dev/null and b/_sa_material_textures/dirty_water_bottle.png differ diff --git a/_sa_material_textures/dish_towel.png b/_sa_material_textures/dish_towel.png new file mode 100644 index 0000000..7b1d20c Binary files /dev/null and b/_sa_material_textures/dish_towel.png differ diff --git a/_sa_material_textures/duct_tape.png b/_sa_material_textures/duct_tape.png new file mode 100644 index 0000000..d0bc505 Binary files /dev/null and b/_sa_material_textures/duct_tape.png differ diff --git a/_sa_material_textures/electric_scrap.png b/_sa_material_textures/electric_scrap.png new file mode 100644 index 0000000..1ccdff5 Binary files /dev/null and b/_sa_material_textures/electric_scrap.png differ diff --git a/_sa_material_textures/empty_can.png b/_sa_material_textures/empty_can.png new file mode 100644 index 0000000..82df584 Binary files /dev/null and b/_sa_material_textures/empty_can.png differ diff --git a/_sa_material_textures/empty_glass_bottle.png b/_sa_material_textures/empty_glass_bottle.png new file mode 100644 index 0000000..537b840 Binary files /dev/null and b/_sa_material_textures/empty_glass_bottle.png differ diff --git a/_sa_material_textures/fabric_patch.png b/_sa_material_textures/fabric_patch.png new file mode 100644 index 0000000..977d4c6 Binary files /dev/null and b/_sa_material_textures/fabric_patch.png differ diff --git a/_sa_material_textures/falsh_lights.png b/_sa_material_textures/falsh_lights.png new file mode 100644 index 0000000..175d9ef Binary files /dev/null and b/_sa_material_textures/falsh_lights.png differ diff --git a/_sa_material_textures/fermented_mash.png b/_sa_material_textures/fermented_mash.png new file mode 100644 index 0000000..bb32e11 Binary files /dev/null and b/_sa_material_textures/fermented_mash.png differ diff --git a/_sa_material_textures/fiber_fabric.png b/_sa_material_textures/fiber_fabric.png new file mode 100644 index 0000000..7727c68 Binary files /dev/null and b/_sa_material_textures/fiber_fabric.png differ diff --git a/_sa_material_textures/gasoline_bucket.png b/_sa_material_textures/gasoline_bucket.png new file mode 100644 index 0000000..137beff Binary files /dev/null and b/_sa_material_textures/gasoline_bucket.png differ diff --git a/_sa_material_textures/generator_manual.png b/_sa_material_textures/generator_manual.png new file mode 100644 index 0000000..3e2d1ad Binary files /dev/null and b/_sa_material_textures/generator_manual.png differ diff --git a/_sa_material_textures/glue.png b/_sa_material_textures/glue.png new file mode 100644 index 0000000..a59e127 Binary files /dev/null and b/_sa_material_textures/glue.png differ diff --git a/_sa_material_textures/gunpowder_bottle.png b/_sa_material_textures/gunpowder_bottle.png new file mode 100644 index 0000000..a03ec8d Binary files /dev/null and b/_sa_material_textures/gunpowder_bottle.png differ diff --git a/_sa_material_textures/hair_gel.png b/_sa_material_textures/hair_gel.png new file mode 100644 index 0000000..bddd9e4 Binary files /dev/null and b/_sa_material_textures/hair_gel.png differ diff --git a/_sa_material_textures/insulated_copper_wire.png b/_sa_material_textures/insulated_copper_wire.png new file mode 100644 index 0000000..11d3645 Binary files /dev/null and b/_sa_material_textures/insulated_copper_wire.png differ diff --git a/_sa_material_textures/jerry_can.png b/_sa_material_textures/jerry_can.png new file mode 100644 index 0000000..89dcfb8 Binary files /dev/null and b/_sa_material_textures/jerry_can.png differ diff --git a/_sa_material_textures/kevlar.png b/_sa_material_textures/kevlar.png new file mode 100644 index 0000000..3f7decc Binary files /dev/null and b/_sa_material_textures/kevlar.png differ diff --git a/_sa_material_textures/kevlar_thread.png b/_sa_material_textures/kevlar_thread.png new file mode 100644 index 0000000..6e60c3d Binary files /dev/null and b/_sa_material_textures/kevlar_thread.png differ diff --git a/_sa_material_textures/leather_strip.png b/_sa_material_textures/leather_strip.png new file mode 100644 index 0000000..859d31b Binary files /dev/null and b/_sa_material_textures/leather_strip.png differ diff --git a/_sa_material_textures/lunch_bag.png b/_sa_material_textures/lunch_bag.png new file mode 100644 index 0000000..4aba5d9 Binary files /dev/null and b/_sa_material_textures/lunch_bag.png differ diff --git a/_sa_material_textures/matchbox.png b/_sa_material_textures/matchbox.png new file mode 100644 index 0000000..730be99 Binary files /dev/null and b/_sa_material_textures/matchbox.png differ diff --git a/_sa_material_textures/medical_adhesive.png b/_sa_material_textures/medical_adhesive.png new file mode 100644 index 0000000..9f515e3 Binary files /dev/null and b/_sa_material_textures/medical_adhesive.png differ diff --git a/_sa_material_textures/metal_pipe.png b/_sa_material_textures/metal_pipe.png new file mode 100644 index 0000000..2c9e6e1 Binary files /dev/null and b/_sa_material_textures/metal_pipe.png differ diff --git a/_sa_material_textures/metal_scrap.png b/_sa_material_textures/metal_scrap.png new file mode 100644 index 0000000..d6f5841 Binary files /dev/null and b/_sa_material_textures/metal_scrap.png differ diff --git a/_sa_material_textures/metal_sheet.png b/_sa_material_textures/metal_sheet.png new file mode 100644 index 0000000..4aec7ab Binary files /dev/null and b/_sa_material_textures/metal_sheet.png differ diff --git a/_sa_material_textures/money.png b/_sa_material_textures/money.png new file mode 100644 index 0000000..a2f5d10 Binary files /dev/null and b/_sa_material_textures/money.png differ diff --git a/_sa_material_textures/money_bundle.png b/_sa_material_textures/money_bundle.png new file mode 100644 index 0000000..5402052 Binary files /dev/null and b/_sa_material_textures/money_bundle.png differ diff --git a/_sa_material_textures/nails.png b/_sa_material_textures/nails.png new file mode 100644 index 0000000..6d59224 Binary files /dev/null and b/_sa_material_textures/nails.png differ diff --git a/_sa_material_textures/netherite_nugget.png b/_sa_material_textures/netherite_nugget.png new file mode 100644 index 0000000..38ac617 Binary files /dev/null and b/_sa_material_textures/netherite_nugget.png differ diff --git a/_sa_material_textures/paperclip.png b/_sa_material_textures/paperclip.png new file mode 100644 index 0000000..509c3df Binary files /dev/null and b/_sa_material_textures/paperclip.png differ diff --git a/_sa_material_textures/plastic.png b/_sa_material_textures/plastic.png new file mode 100644 index 0000000..4b20862 Binary files /dev/null and b/_sa_material_textures/plastic.png differ diff --git a/_sa_material_textures/plastic_bag.png b/_sa_material_textures/plastic_bag.png new file mode 100644 index 0000000..0e88d5e Binary files /dev/null and b/_sa_material_textures/plastic_bag.png differ diff --git a/_sa_material_textures/plastic_plate.png b/_sa_material_textures/plastic_plate.png new file mode 100644 index 0000000..96298e0 Binary files /dev/null and b/_sa_material_textures/plastic_plate.png differ diff --git a/_sa_material_textures/polyester.png b/_sa_material_textures/polyester.png new file mode 100644 index 0000000..1b44810 Binary files /dev/null and b/_sa_material_textures/polyester.png differ diff --git a/_sa_material_textures/polyester_thread.png b/_sa_material_textures/polyester_thread.png new file mode 100644 index 0000000..a2d4849 Binary files /dev/null and b/_sa_material_textures/polyester_thread.png differ diff --git a/_sa_material_textures/rags.png b/_sa_material_textures/rags.png new file mode 100644 index 0000000..39cdedf Binary files /dev/null and b/_sa_material_textures/rags.png differ diff --git a/_sa_material_textures/rope.png b/_sa_material_textures/rope.png new file mode 100644 index 0000000..93e2de4 Binary files /dev/null and b/_sa_material_textures/rope.png differ diff --git a/_sa_material_textures/rubber.png b/_sa_material_textures/rubber.png new file mode 100644 index 0000000..90de6cf Binary files /dev/null and b/_sa_material_textures/rubber.png differ diff --git a/_sa_material_textures/rubbing_alcohol.png b/_sa_material_textures/rubbing_alcohol.png new file mode 100644 index 0000000..2bb78df Binary files /dev/null and b/_sa_material_textures/rubbing_alcohol.png differ diff --git a/_sa_material_textures/saw_blade.png b/_sa_material_textures/saw_blade.png new file mode 100644 index 0000000..f4062f0 Binary files /dev/null and b/_sa_material_textures/saw_blade.png differ diff --git a/_sa_material_textures/scrap_nugget.png b/_sa_material_textures/scrap_nugget.png new file mode 100644 index 0000000..bf652ae Binary files /dev/null and b/_sa_material_textures/scrap_nugget.png differ diff --git a/_sa_material_textures/scrap_wood.png b/_sa_material_textures/scrap_wood.png new file mode 100644 index 0000000..6001e30 Binary files /dev/null and b/_sa_material_textures/scrap_wood.png differ diff --git a/_sa_material_textures/screws.png b/_sa_material_textures/screws.png new file mode 100644 index 0000000..e130455 Binary files /dev/null and b/_sa_material_textures/screws.png differ diff --git a/_sa_material_textures/small_metal_sheet.png b/_sa_material_textures/small_metal_sheet.png new file mode 100644 index 0000000..ddc4948 Binary files /dev/null and b/_sa_material_textures/small_metal_sheet.png differ diff --git a/_sa_material_textures/sterilized_rags.png b/_sa_material_textures/sterilized_rags.png new file mode 100644 index 0000000..877fd79 Binary files /dev/null and b/_sa_material_textures/sterilized_rags.png differ diff --git a/_sa_material_textures/sulfur.png b/_sa_material_textures/sulfur.png new file mode 100644 index 0000000..e40cf5e Binary files /dev/null and b/_sa_material_textures/sulfur.png differ diff --git a/_sa_material_textures/sulfur_dust.png b/_sa_material_textures/sulfur_dust.png new file mode 100644 index 0000000..640f769 Binary files /dev/null and b/_sa_material_textures/sulfur_dust.png differ diff --git a/_sa_material_textures/thread.png b/_sa_material_textures/thread.png new file mode 100644 index 0000000..7d060d4 Binary files /dev/null and b/_sa_material_textures/thread.png differ diff --git a/_sa_material_textures/tin_can.png b/_sa_material_textures/tin_can.png new file mode 100644 index 0000000..96c6363 Binary files /dev/null and b/_sa_material_textures/tin_can.png differ diff --git a/_sa_material_textures/water_bottle.png b/_sa_material_textures/water_bottle.png new file mode 100644 index 0000000..037be93 Binary files /dev/null and b/_sa_material_textures/water_bottle.png differ diff --git a/_sa_material_textures/water_bottle2.png b/_sa_material_textures/water_bottle2.png new file mode 100644 index 0000000..f1a4c2d Binary files /dev/null and b/_sa_material_textures/water_bottle2.png differ diff --git a/_sa_material_textures/wire.png b/_sa_material_textures/wire.png new file mode 100644 index 0000000..f1dc05a Binary files /dev/null and b/_sa_material_textures/wire.png differ diff --git a/_sa_materials.csv b/_sa_materials.csv new file mode 100644 index 0000000..c2a6870 --- /dev/null +++ b/_sa_materials.csv @@ -0,0 +1,77 @@ +序号,贴图文件,物品ID,中文名,英文名,jar内路径 +1,adhesive_tape.png,item.sa_core.adhesive_tape,胶带,Adhesive Tape,assets/sa_core/textures/item/adhesive_tape.png +2,alcohol.png,item.sa_core.alcohol,酒精,Alcohol,assets/sa_core/textures/item/alcohol.png +3,antiseptic.png,item.sa_core.antiseptic,消毒剂,Antiseptic,assets/sa_core/textures/item/antiseptic.png +4,ashen_steel_ingot.png,item.sa_core.ashen_steel_ingot,灰烬钢锭,Ashen Steel Ingot,assets/sa_core/textures/item/ashen_steel_ingot.png +5,ashen_steel_mixture.png,item.sa_core.ashen_steel_mixture,灰烬钢混合物,Ashen Steel Mixture,assets/sa_core/textures/item/ashen_steel_mixture.png +6,ashen_steel_nugget.png,item.sa_core.ashen_steel_nugget,灰烬钢粒,Ashen Steel Nugget,assets/sa_core/textures/item/ashen_steel_nugget.png +7,ashen_steel_rod.png,item.sa_core.ashen_steel_rod,灰烬钢棒,Ashen Steel Rod,assets/sa_core/textures/item/ashen_steel_rod.png +8,battery.png,item.sa_core.battery,电池,Battery,assets/sa_core/textures/item/battery.png +9,blank.png,item.sa_core.blank,,,assets/sa_core/textures/item/blank.png +10,box_of_nails.png,item.sa_core.box_of_nails,一盒钉子,Box of Nails,assets/sa_core/textures/item/box_of_nails.png +11,box_of_paperclips.png,item.sa_core.box_of_paperclips,一盒回形针,Box of Paperclips,assets/sa_core/textures/item/box_of_paperclips.png +12,box_of_screws.png,item.sa_core.box_of_screws,一盒螺丝,Box of Screws,assets/sa_core/textures/item/box_of_screws.png +13,camera.png,item.sa_core.camera,相机,Camera,assets/sa_core/textures/item/camera.png +14,cardboard.png,item.sa_core.cardboard,纸板,Cardboard,assets/sa_core/textures/item/cardboard.png +15,cellphone.png,item.sa_core.cellphone,手机,Cellphone,assets/sa_core/textures/item/cellphone.png +16,charcoal_dust.png,item.sa_core.charcoal_dust,木炭粉,Charcoal Dust,assets/sa_core/textures/item/charcoal_dust.png +17,classic_watch.png,item.sa_core.classic_watch,经典手表,Classic Watch,assets/sa_core/textures/item/classic_watch.png +18,cleaning_liquid.png,item.sa_core.cleaning_liquid,清洁液,Cleaning Liquid,assets/sa_core/textures/item/cleaning_liquid.png +19,cloth.png,item.sa_core.cloth,布料,Cloth,assets/sa_core/textures/item/cloth.png +20,copper_wire.png,item.sa_core.copper_wire,铜线,Copper Wire,assets/sa_core/textures/item/copper_wire.png +21,dented_can.png,item.sa_core.dented_can,凹陷的罐子,Dented Can,assets/sa_core/textures/item/dented_can.png +22,diamond_nugget.png,item.sa_core.diamond_nugget,钻石粒,Diamond Nugget,assets/sa_core/textures/item/diamond_nugget.png +23,dirty_rags.png,item.sa_core.dirty_rags,脏抹布,Dirty Rags,assets/sa_core/textures/item/dirty_rags.png +24,dirty_water_bottle.png,item.sa_core.dirty_water_bottle,脏水瓶,Dirty Water Bottle,assets/sa_core/textures/item/dirty_water_bottle.png +25,dish_towel.png,item.sa_core.dish_towel,洗碗巾,Dish Towel,assets/sa_core/textures/item/dish_towel.png +26,duct_tape.png,item.sa_core.duct_tape,管道胶带,Duct Tape,assets/sa_core/textures/item/duct_tape.png +27,electric_scrap.png,item.sa_core.electric_scrap,电子废料,Electric Scrap,assets/sa_core/textures/item/electric_scrap.png +28,empty_can.png,item.sa_core.empty_can,空罐子,Empty Can,assets/sa_core/textures/item/empty_can.png +29,empty_glass_bottle.png,item.sa_core.empty_glass_bottle,空玻璃瓶,Empty Glass Bottle,assets/sa_core/textures/item/empty_glass_bottle.png +30,fabric_patch.png,item.sa_core.fabric_patch,布料补丁,Fabric Patch,assets/sa_core/textures/item/fabric_patch.png +31,falsh_lights.png,item.sa_core.falsh_lights,,,assets/sa_core/textures/item/falsh_lights.png +32,fermented_mash.png,item.sa_core.fermented_mash,发酵糊,Fermented Mash,assets/sa_core/textures/item/fermented_mash.png +33,fiber_fabric.png,item.sa_core.fiber_fabric,纤维织物,Fiber Fabric,assets/sa_core/textures/item/fiber_fabric.png +34,gasoline_bucket.png,item.sa_core.gasoline_bucket,汽油桶,Gasoline Bucket,assets/sa_core/textures/item/gasoline_bucket.png +35,generator_manual.png,item.sa_core.generator_manual,发电机手册,Generator Manual,assets/sa_core/textures/item/generator_manual.png +36,glue.png,item.sa_core.glue,胶水,Glue,assets/sa_core/textures/item/glue.png +37,gunpowder_bottle.png,item.sa_core.gunpowder_bottle,火药瓶,Gunpowder Bottle,assets/sa_core/textures/item/gunpowder_bottle.png +38,hair_gel.png,item.sa_core.hair_gel,发胶,Hair Gel,assets/sa_core/textures/item/hair_gel.png +39,insulated_copper_wire.png,item.sa_core.insulated_copper_wire,绝缘铜缆,Insulated Copper Cable,assets/sa_core/textures/item/insulated_copper_wire.png +40,jerry_can.png,item.sa_core.jerry_can,油桶,Jerry Can,assets/sa_core/textures/item/jerry_can.png +41,kevlar.png,item.sa_core.kevlar,凯夫拉纤维,Kevlar,assets/sa_core/textures/item/kevlar.png +42,kevlar_thread.png,item.sa_core.kevlar_thread,凯夫拉线,Kevlar Thread,assets/sa_core/textures/item/kevlar_thread.png +43,leather_strip.png,item.sa_core.leather_strip,皮革条,Leather Strip,assets/sa_core/textures/item/leather_strip.png +44,lunch_bag.png,item.sa_core.lunch_bag,午餐袋,Lunch Bag,assets/sa_core/textures/item/lunch_bag.png +45,matchbox.png,item.sa_core.matchbox,火柴盒,Matchbox,assets/sa_core/textures/item/matchbox.png +46,medical_adhesive.png,item.sa_core.medical_adhesive,医用胶,Medical Adhesive,assets/sa_core/textures/item/medical_adhesive.png +47,metal_pipe.png,item.sa_core.metal_pipe,金属管,Metal Pipe,assets/sa_core/textures/item/metal_pipe.png +48,metal_scrap.png,item.sa_core.metal_scrap,金属废料,Metal Scrap,assets/sa_core/textures/item/metal_scrap.png +49,metal_sheet.png,item.sa_core.metal_sheet,金属板,Metal Sheet,assets/sa_core/textures/item/metal_sheet.png +50,money.png,item.sa_core.money,钞票,Money,assets/sa_core/textures/item/money.png +51,money_bundle.png,item.sa_core.money_bundle,一捆钞票,Money Bundle,assets/sa_core/textures/item/money_bundle.png +52,nails.png,item.sa_core.nails,钉子,Nails,assets/sa_core/textures/item/nails.png +53,netherite_nugget.png,item.sa_core.netherite_nugget,下界合金粒,Netherite Nugget,assets/sa_core/textures/item/netherite_nugget.png +54,paperclip.png,item.sa_core.paperclip,回形针,Paperclip,assets/sa_core/textures/item/paperclip.png +55,plastic.png,item.sa_core.plastic,塑料,Plastic,assets/sa_core/textures/item/plastic.png +56,plastic_bag.png,item.sa_core.plastic_bag,塑料袋,Plastic Bag,assets/sa_core/textures/item/plastic_bag.png +57,plastic_plate.png,item.sa_core.plastic_plate,塑料盘,Plastic Plate,assets/sa_core/textures/item/plastic_plate.png +58,polyester.png,item.sa_core.polyester,涤纶,Polyester,assets/sa_core/textures/item/polyester.png +59,polyester_thread.png,item.sa_core.polyester_thread,涤纶线,Polyester Thread,assets/sa_core/textures/item/polyester_thread.png +60,rags.png,item.sa_core.rags,抹布,Rags,assets/sa_core/textures/item/rags.png +61,rope.png,item.sa_core.rope,绳索,Rope,assets/sa_core/textures/item/rope.png +62,rubber.png,item.sa_core.rubber,橡胶,Rubber,assets/sa_core/textures/item/rubber.png +63,rubbing_alcohol.png,item.sa_core.rubbing_alcohol,外用酒精,Rubbing Alcohol,assets/sa_core/textures/item/rubbing_alcohol.png +64,saw_blade.png,item.sa_core.saw_blade,锯片,Saw Blade,assets/sa_core/textures/item/saw_blade.png +65,scrap_nugget.png,item.sa_core.scrap_nugget,废料粒,Scrap Nugget,assets/sa_core/textures/item/scrap_nugget.png +66,scrap_wood.png,item.sa_core.scrap_wood,废木料,Scrap Wood,assets/sa_core/textures/item/scrap_wood.png +67,screws.png,item.sa_core.screws,螺丝,Screws,assets/sa_core/textures/item/screws.png +68,small_metal_sheet.png,item.sa_core.small_metal_sheet,小金属板,Small Metal Sheet,assets/sa_core/textures/item/small_metal_sheet.png +69,sterilized_rags.png,item.sa_core.sterilized_rags,消毒抹布,Sterilized Rags,assets/sa_core/textures/item/sterilized_rags.png +70,sulfur.png,item.sa_core.sulfur,硫磺,Sulfur,assets/sa_core/textures/item/sulfur.png +71,sulfur_dust.png,item.sa_core.sulfur_dust,硫磺粉,Sulfur Dust,assets/sa_core/textures/item/sulfur_dust.png +72,thread.png,item.sa_core.thread,线,Thread,assets/sa_core/textures/item/thread.png +73,tin_can.png,item.sa_core.tin_can,锡罐,Tin Can,assets/sa_core/textures/item/tin_can.png +74,water_bottle.png,item.sa_core.water_bottle,水瓶,Water Bottle,assets/sa_core/textures/item/water_bottle.png +75,water_bottle2.png,item.sa_core.water_bottle2,,,assets/sa_core/textures/item/water_bottle2.png +76,wire.png,item.sa_core.wire,电线,Wire,assets/sa_core/textures/item/wire.png diff --git a/_sa_materials.md b/_sa_materials.md new file mode 100644 index 0000000..41c484c --- /dev/null +++ b/_sa_materials.md @@ -0,0 +1,80 @@ +# 幸存者军火库 材料清单(sa_core) + +| 序号 | 贴图文件 | 物品ID | 中文名 | 英文名 | jar内路径 | +|---|---|---|---|---|---| +| 1 | adhesive_tape.png | item.sa_core.adhesive_tape | 胶带 | Adhesive Tape | assets/sa_core/textures/item/adhesive_tape.png | +| 2 | alcohol.png | item.sa_core.alcohol | 酒精 | Alcohol | assets/sa_core/textures/item/alcohol.png | +| 3 | antiseptic.png | item.sa_core.antiseptic | 消毒剂 | Antiseptic | assets/sa_core/textures/item/antiseptic.png | +| 4 | ashen_steel_ingot.png | item.sa_core.ashen_steel_ingot | 灰烬钢锭 | Ashen Steel Ingot | assets/sa_core/textures/item/ashen_steel_ingot.png | +| 5 | ashen_steel_mixture.png | item.sa_core.ashen_steel_mixture | 灰烬钢混合物 | Ashen Steel Mixture | assets/sa_core/textures/item/ashen_steel_mixture.png | +| 6 | ashen_steel_nugget.png | item.sa_core.ashen_steel_nugget | 灰烬钢粒 | Ashen Steel Nugget | assets/sa_core/textures/item/ashen_steel_nugget.png | +| 7 | ashen_steel_rod.png | item.sa_core.ashen_steel_rod | 灰烬钢棒 | Ashen Steel Rod | assets/sa_core/textures/item/ashen_steel_rod.png | +| 8 | battery.png | item.sa_core.battery | 电池 | Battery | assets/sa_core/textures/item/battery.png | +| 9 | blank.png | item.sa_core.blank | | | assets/sa_core/textures/item/blank.png | +| 10 | box_of_nails.png | item.sa_core.box_of_nails | 一盒钉子 | Box of Nails | assets/sa_core/textures/item/box_of_nails.png | +| 11 | box_of_paperclips.png | item.sa_core.box_of_paperclips | 一盒回形针 | Box of Paperclips | assets/sa_core/textures/item/box_of_paperclips.png | +| 12 | box_of_screws.png | item.sa_core.box_of_screws | 一盒螺丝 | Box of Screws | assets/sa_core/textures/item/box_of_screws.png | +| 13 | camera.png | item.sa_core.camera | 相机 | Camera | assets/sa_core/textures/item/camera.png | +| 14 | cardboard.png | item.sa_core.cardboard | 纸板 | Cardboard | assets/sa_core/textures/item/cardboard.png | +| 15 | cellphone.png | item.sa_core.cellphone | 手机 | Cellphone | assets/sa_core/textures/item/cellphone.png | +| 16 | charcoal_dust.png | item.sa_core.charcoal_dust | 木炭粉 | Charcoal Dust | assets/sa_core/textures/item/charcoal_dust.png | +| 17 | classic_watch.png | item.sa_core.classic_watch | 经典手表 | Classic Watch | assets/sa_core/textures/item/classic_watch.png | +| 18 | cleaning_liquid.png | item.sa_core.cleaning_liquid | 清洁液 | Cleaning Liquid | assets/sa_core/textures/item/cleaning_liquid.png | +| 19 | cloth.png | item.sa_core.cloth | 布料 | Cloth | assets/sa_core/textures/item/cloth.png | +| 20 | copper_wire.png | item.sa_core.copper_wire | 铜线 | Copper Wire | assets/sa_core/textures/item/copper_wire.png | +| 21 | dented_can.png | item.sa_core.dented_can | 凹陷的罐子 | Dented Can | assets/sa_core/textures/item/dented_can.png | +| 22 | diamond_nugget.png | item.sa_core.diamond_nugget | 钻石粒 | Diamond Nugget | assets/sa_core/textures/item/diamond_nugget.png | +| 23 | dirty_rags.png | item.sa_core.dirty_rags | 脏抹布 | Dirty Rags | assets/sa_core/textures/item/dirty_rags.png | +| 24 | dirty_water_bottle.png | item.sa_core.dirty_water_bottle | 脏水瓶 | Dirty Water Bottle | assets/sa_core/textures/item/dirty_water_bottle.png | +| 25 | dish_towel.png | item.sa_core.dish_towel | 洗碗巾 | Dish Towel | assets/sa_core/textures/item/dish_towel.png | +| 26 | duct_tape.png | item.sa_core.duct_tape | 管道胶带 | Duct Tape | assets/sa_core/textures/item/duct_tape.png | +| 27 | electric_scrap.png | item.sa_core.electric_scrap | 电子废料 | Electric Scrap | assets/sa_core/textures/item/electric_scrap.png | +| 28 | empty_can.png | item.sa_core.empty_can | 空罐子 | Empty Can | assets/sa_core/textures/item/empty_can.png | +| 29 | empty_glass_bottle.png | item.sa_core.empty_glass_bottle | 空玻璃瓶 | Empty Glass Bottle | assets/sa_core/textures/item/empty_glass_bottle.png | +| 30 | fabric_patch.png | item.sa_core.fabric_patch | 布料补丁 | Fabric Patch | assets/sa_core/textures/item/fabric_patch.png | +| 31 | falsh_lights.png | item.sa_core.falsh_lights | | | assets/sa_core/textures/item/falsh_lights.png | +| 32 | fermented_mash.png | item.sa_core.fermented_mash | 发酵糊 | Fermented Mash | assets/sa_core/textures/item/fermented_mash.png | +| 33 | fiber_fabric.png | item.sa_core.fiber_fabric | 纤维织物 | Fiber Fabric | assets/sa_core/textures/item/fiber_fabric.png | +| 34 | gasoline_bucket.png | item.sa_core.gasoline_bucket | 汽油桶 | Gasoline Bucket | assets/sa_core/textures/item/gasoline_bucket.png | +| 35 | generator_manual.png | item.sa_core.generator_manual | 发电机手册 | Generator Manual | assets/sa_core/textures/item/generator_manual.png | +| 36 | glue.png | item.sa_core.glue | 胶水 | Glue | assets/sa_core/textures/item/glue.png | +| 37 | gunpowder_bottle.png | item.sa_core.gunpowder_bottle | 火药瓶 | Gunpowder Bottle | assets/sa_core/textures/item/gunpowder_bottle.png | +| 38 | hair_gel.png | item.sa_core.hair_gel | 发胶 | Hair Gel | assets/sa_core/textures/item/hair_gel.png | +| 39 | insulated_copper_wire.png | item.sa_core.insulated_copper_wire | 绝缘铜缆 | Insulated Copper Cable | assets/sa_core/textures/item/insulated_copper_wire.png | +| 40 | jerry_can.png | item.sa_core.jerry_can | 油桶 | Jerry Can | assets/sa_core/textures/item/jerry_can.png | +| 41 | kevlar.png | item.sa_core.kevlar | 凯夫拉纤维 | Kevlar | assets/sa_core/textures/item/kevlar.png | +| 42 | kevlar_thread.png | item.sa_core.kevlar_thread | 凯夫拉线 | Kevlar Thread | assets/sa_core/textures/item/kevlar_thread.png | +| 43 | leather_strip.png | item.sa_core.leather_strip | 皮革条 | Leather Strip | assets/sa_core/textures/item/leather_strip.png | +| 44 | lunch_bag.png | item.sa_core.lunch_bag | 午餐袋 | Lunch Bag | assets/sa_core/textures/item/lunch_bag.png | +| 45 | matchbox.png | item.sa_core.matchbox | 火柴盒 | Matchbox | assets/sa_core/textures/item/matchbox.png | +| 46 | medical_adhesive.png | item.sa_core.medical_adhesive | 医用胶 | Medical Adhesive | assets/sa_core/textures/item/medical_adhesive.png | +| 47 | metal_pipe.png | item.sa_core.metal_pipe | 金属管 | Metal Pipe | assets/sa_core/textures/item/metal_pipe.png | +| 48 | metal_scrap.png | item.sa_core.metal_scrap | 金属废料 | Metal Scrap | assets/sa_core/textures/item/metal_scrap.png | +| 49 | metal_sheet.png | item.sa_core.metal_sheet | 金属板 | Metal Sheet | assets/sa_core/textures/item/metal_sheet.png | +| 50 | money.png | item.sa_core.money | 钞票 | Money | assets/sa_core/textures/item/money.png | +| 51 | money_bundle.png | item.sa_core.money_bundle | 一捆钞票 | Money Bundle | assets/sa_core/textures/item/money_bundle.png | +| 52 | nails.png | item.sa_core.nails | 钉子 | Nails | assets/sa_core/textures/item/nails.png | +| 53 | netherite_nugget.png | item.sa_core.netherite_nugget | 下界合金粒 | Netherite Nugget | assets/sa_core/textures/item/netherite_nugget.png | +| 54 | paperclip.png | item.sa_core.paperclip | 回形针 | Paperclip | assets/sa_core/textures/item/paperclip.png | +| 55 | plastic.png | item.sa_core.plastic | 塑料 | Plastic | assets/sa_core/textures/item/plastic.png | +| 56 | plastic_bag.png | item.sa_core.plastic_bag | 塑料袋 | Plastic Bag | assets/sa_core/textures/item/plastic_bag.png | +| 57 | plastic_plate.png | item.sa_core.plastic_plate | 塑料盘 | Plastic Plate | assets/sa_core/textures/item/plastic_plate.png | +| 58 | polyester.png | item.sa_core.polyester | 涤纶 | Polyester | assets/sa_core/textures/item/polyester.png | +| 59 | polyester_thread.png | item.sa_core.polyester_thread | 涤纶线 | Polyester Thread | assets/sa_core/textures/item/polyester_thread.png | +| 60 | rags.png | item.sa_core.rags | 抹布 | Rags | assets/sa_core/textures/item/rags.png | +| 61 | rope.png | item.sa_core.rope | 绳索 | Rope | assets/sa_core/textures/item/rope.png | +| 62 | rubber.png | item.sa_core.rubber | 橡胶 | Rubber | assets/sa_core/textures/item/rubber.png | +| 63 | rubbing_alcohol.png | item.sa_core.rubbing_alcohol | 外用酒精 | Rubbing Alcohol | assets/sa_core/textures/item/rubbing_alcohol.png | +| 64 | saw_blade.png | item.sa_core.saw_blade | 锯片 | Saw Blade | assets/sa_core/textures/item/saw_blade.png | +| 65 | scrap_nugget.png | item.sa_core.scrap_nugget | 废料粒 | Scrap Nugget | assets/sa_core/textures/item/scrap_nugget.png | +| 66 | scrap_wood.png | item.sa_core.scrap_wood | 废木料 | Scrap Wood | assets/sa_core/textures/item/scrap_wood.png | +| 67 | screws.png | item.sa_core.screws | 螺丝 | Screws | assets/sa_core/textures/item/screws.png | +| 68 | small_metal_sheet.png | item.sa_core.small_metal_sheet | 小金属板 | Small Metal Sheet | assets/sa_core/textures/item/small_metal_sheet.png | +| 69 | sterilized_rags.png | item.sa_core.sterilized_rags | 消毒抹布 | Sterilized Rags | assets/sa_core/textures/item/sterilized_rags.png | +| 70 | sulfur.png | item.sa_core.sulfur | 硫磺 | Sulfur | assets/sa_core/textures/item/sulfur.png | +| 71 | sulfur_dust.png | item.sa_core.sulfur_dust | 硫磺粉 | Sulfur Dust | assets/sa_core/textures/item/sulfur_dust.png | +| 72 | thread.png | item.sa_core.thread | 线 | Thread | assets/sa_core/textures/item/thread.png | +| 73 | tin_can.png | item.sa_core.tin_can | 锡罐 | Tin Can | assets/sa_core/textures/item/tin_can.png | +| 74 | water_bottle.png | item.sa_core.water_bottle | 水瓶 | Water Bottle | assets/sa_core/textures/item/water_bottle.png | +| 75 | water_bottle2.png | item.sa_core.water_bottle2 | | | assets/sa_core/textures/item/water_bottle2.png | +| 76 | wire.png | item.sa_core.wire | 电线 | Wire | assets/sa_core/textures/item/wire.png | \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/manifest.json b/behavior_pack_kcH4M5u0/manifest.json new file mode 100644 index 0000000..ffaff09 --- /dev/null +++ b/behavior_pack_kcH4M5u0/manifest.json @@ -0,0 +1,29 @@ +{ + "format_version": 2, + "header": { + "description": "", + "min_engine_version": [ + 1, + 18, + 0 + ], + "name": "behavior_pack", + "uuid": "0237fab9-2af6-43e6-9c46-257a1801d90b", + "version": [ + 0, + 0, + 1 + ] + }, + "modules": [ + { + "type": "data", + "uuid": "574dd82c-83e8-48b6-a63f-43717893939c", + "version": [ + 0, + 0, + 1 + ] + } + ] +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_blocks/generator.json b/behavior_pack_kcH4M5u0/netease_blocks/generator.json new file mode 100644 index 0000000..f1ea502 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_blocks/generator.json @@ -0,0 +1,39 @@ +{ + "format_version": "1.10.0", + "minecraft:block": { + "description": { + "identifier": "dn_sa:generator", + "register_to_creative_menu": true, + "is_experimental": false, + "category": "dn_sa" + }, + "components": { + "netease:block_entity": { + "tick": false, + "movable": false + }, + "netease:solid": { + "value": true + }, + "netease:face_directional": { + "type": "direction" + }, + "minecraft:destroy_time": { + "value": 1.5 + }, + "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] + } + } + } + } +} diff --git a/behavior_pack_kcH4M5u0/netease_blocks/salvage_bin.json b/behavior_pack_kcH4M5u0/netease_blocks/salvage_bin.json new file mode 100644 index 0000000..3d695d7 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_blocks/salvage_bin.json @@ -0,0 +1,39 @@ +{ + "format_version": "1.10.0", + "minecraft:block": { + "description": { + "identifier": "dn_sa:salvage_bin", + "register_to_creative_menu": true, + "is_experimental": false, + "category": "dn_sa" + }, + "components": { + "netease:block_entity": { + "tick": false, + "movable": false + }, + "netease:solid": { + "value": true + }, + "netease:face_directional": { + "type": "direction" + }, + "minecraft:destroy_time": { + "value": 1.5 + }, + "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] + } + } + } + } +} diff --git a/behavior_pack_kcH4M5u0/netease_group/group_config.json b/behavior_pack_kcH4M5u0/netease_group/group_config.json new file mode 100644 index 0000000..9e9f0fe --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_group/group_config.json @@ -0,0 +1,18 @@ +{ + "groups": [ + { + "group_name": "itemGroup.name.dn_sa_generator", + "icon": "dn_sa:generator", + "list": [ + "dn_sa:generator" + ] + }, + { + "group_name": "itemGroup.name.dn_sa_salvage_bin", + "icon": "dn_sa:salvage_bin", + "list": [ + "dn_sa:salvage_bin" + ] + } + ] +} diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_adhesive_tape.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_adhesive_tape.json new file mode 100644 index 0000000..ca7dc49 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_adhesive_tape.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "修复与组装的粘合材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:adhesive_tape" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_alcohol.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_alcohol.json new file mode 100644 index 0000000..f75833c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_alcohol.json @@ -0,0 +1,35 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "装有液体的容器。" + }, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "low", + "can_always_eat": true, + "effects": [ + { + "name": "poison", + "chance": 1.0, + "duration": 10, + "amplifier": 1 + }, + { + "name": "nausea", + "chance": 1.0, + "duration": 15, + "amplifier": 0 + } + ] + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:alcohol" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_antiseptic.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_antiseptic.json new file mode 100644 index 0000000..615d584 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_antiseptic.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "合成与回收材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:antiseptic" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_apple_juice_box.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_apple_juice_box.json new file mode 100644 index 0000000..715d9a2 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_apple_juice_box.json @@ -0,0 +1,19 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 40, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "low", + "can_always_eat": true, + "using_converts_to": "dn_sa:empty_juice_box" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:apple_juice_box" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_ingot.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_ingot.json new file mode 100644 index 0000000..853fca3 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_ingot.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:ashen_steel_ingot" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_mixture.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_mixture.json new file mode 100644 index 0000000..f896711 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_mixture.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:ashen_steel_mixture" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_nugget.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_nugget.json new file mode 100644 index 0000000..f76a1c6 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_nugget.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:ashen_steel_nugget" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_rod.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_rod.json new file mode 100644 index 0000000..c36d81e --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_ashen_steel_rod.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:ashen_steel_rod" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_battery.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_battery.json new file mode 100644 index 0000000..d0b636d --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_battery.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可拆解的电子元件。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:battery" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_berry_juice_box.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_berry_juice_box.json new file mode 100644 index 0000000..0ba9c1d --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_berry_juice_box.json @@ -0,0 +1,19 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 40, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "low", + "can_always_eat": true, + "using_converts_to": "dn_sa:empty_juice_box" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:berry_juice_box" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_big_burger.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_big_burger.json new file mode 100644 index 0000000..98203d3 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_big_burger.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 10, + "saturation_modifier": "good" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:big_burger" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_big_burger_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_big_burger_rotten.json new file mode 100644 index 0000000..b5b882c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_big_burger_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 4, + "saturation_modifier": "low", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:big_burger_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_biscuit.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_biscuit.json new file mode 100644 index 0000000..ec41cca --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_biscuit.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:biscuit" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_biscuit_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_biscuit_rotten.json new file mode 100644 index 0000000..0f587a5 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_biscuit_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:biscuit_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_brigadeiro.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_brigadeiro.json new file mode 100644 index 0000000..d45a71c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_brigadeiro.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:brigadeiro" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burger.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burger.json new file mode 100644 index 0000000..41c9529 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burger.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 7, + "saturation_modifier": "normal" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:burger" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burger_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burger_rotten.json new file mode 100644 index 0000000..a004020 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burger_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:burger_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burrito.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burrito.json new file mode 100644 index 0000000..1ec8eee --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burrito.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 6, + "saturation_modifier": "normal" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:burrito" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burrito_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burrito_rotten.json new file mode 100644 index 0000000..2b75c22 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_burrito_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:burrito_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_butter.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_butter.json new file mode 100644 index 0000000..0125af0 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_butter.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:butter" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_camera.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_camera.json new file mode 100644 index 0000000..90d6724 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_camera.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可拆解的电子元件。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:camera" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_candys.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_candys.json new file mode 100644 index 0000000..08df48b --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_candys.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "poor" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:candys" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cardboard.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cardboard.json new file mode 100644 index 0000000..6f38d5a --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cardboard.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可用于制作物品的塑料材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:cardboard" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cereal_fruit_loops_flakes.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cereal_fruit_loops_flakes.json new file mode 100644 index 0000000..8183df6 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cereal_fruit_loops_flakes.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:cereal_fruit_loops_flakes" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cereal_kelloggys_flakes.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cereal_kelloggys_flakes.json new file mode 100644 index 0000000..1877723 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cereal_kelloggys_flakes.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:cereal_kelloggys_flakes" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_charcoal_dust.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_charcoal_dust.json new file mode 100644 index 0000000..515ee2c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_charcoal_dust.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可用于制作的化学材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:charcoal_dust" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese.json new file mode 100644 index 0000000..ad96fd9 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:cheese" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_bread.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_bread.json new file mode 100644 index 0000000..05d6679 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_bread.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 4, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:cheese_bread" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_burger.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_burger.json new file mode 100644 index 0000000..e96b4b9 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_burger.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 8, + "saturation_modifier": "good" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:cheese_burger" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_burger_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_burger_rotten.json new file mode 100644 index 0000000..918e84b --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cheese_burger_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:cheese_burger_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_chips.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_chips.json new file mode 100644 index 0000000..c385ed3 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_chips.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "poor" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:chips" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_classic_watch.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_classic_watch.json new file mode 100644 index 0000000..3d056bd --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_classic_watch.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可拆解的电子元件。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:classic_watch" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cleaning_liquid.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cleaning_liquid.json new file mode 100644 index 0000000..0db7fb2 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cleaning_liquid.json @@ -0,0 +1,35 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "装有液体的容器。" + }, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "low", + "can_always_eat": true, + "effects": [ + { + "name": "poison", + "chance": 1.0, + "duration": 10, + "amplifier": 1 + }, + { + "name": "nausea", + "chance": 1.0, + "duration": 15, + "amplifier": 0 + } + ] + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:cleaning_liquid" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cloth.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cloth.json new file mode 100644 index 0000000..9158f1b --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_cloth.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:cloth" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_copper_wire.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_copper_wire.json new file mode 100644 index 0000000..477854d --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_copper_wire.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于制作与缝合的线材。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:copper_wire" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_coxinha.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_coxinha.json new file mode 100644 index 0000000..e5a8f31 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_coxinha.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 6, + "saturation_modifier": "normal" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:coxinha" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dented_can.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dented_can.json new file mode 100644 index 0000000..d836d5f --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dented_can.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "空容器,可回收利用。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:dented_can" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_diamond_nugget.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_diamond_nugget.json new file mode 100644 index 0000000..d4e5ace --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_diamond_nugget.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:diamond_nugget" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dirty_rags.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dirty_rags.json new file mode 100644 index 0000000..9448ca4 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dirty_rags.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:dirty_rags" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dish_towel.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dish_towel.json new file mode 100644 index 0000000..19d05a2 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_dish_towel.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:dish_towel" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_donut.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_donut.json new file mode 100644 index 0000000..d639cad --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_donut.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 4, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:donut" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_donut_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_donut_rotten.json new file mode 100644 index 0000000..d30e349 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_donut_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:donut_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_duct_tape.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_duct_tape.json new file mode 100644 index 0000000..cadcc6b --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_duct_tape.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "修复与组装的粘合材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:duct_tape" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_electric_scrap.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_electric_scrap.json new file mode 100644 index 0000000..df81130 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_electric_scrap.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可回收利用的材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:electric_scrap" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_empty_can.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_empty_can.json new file mode 100644 index 0000000..90ef90c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_empty_can.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "空容器,可回收利用。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:empty_can" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_empty_juice_box.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_empty_juice_box.json new file mode 100644 index 0000000..13cf1ed --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_empty_juice_box.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64 + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:empty_juice_box" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fabric_patch.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fabric_patch.json new file mode 100644 index 0000000..94bed2e --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fabric_patch.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:fabric_patch" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fermented_mash.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fermented_mash.json new file mode 100644 index 0000000..6d7c417 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fermented_mash.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "装有液体的容器。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:fermented_mash" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fiber_fabric.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fiber_fabric.json new file mode 100644 index 0000000..58f989f --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_fiber_fabric.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:fiber_fabric" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_gasoline_bucket.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_gasoline_bucket.json new file mode 100644 index 0000000..965ac3b --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_gasoline_bucket.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "装有液体的容器。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:gasoline_bucket" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_generator_manual.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_generator_manual.json new file mode 100644 index 0000000..dd4850d --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_generator_manual.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "学习手册并完成实践训练以操作汽油发电机。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:generator_manual" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_glue.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_glue.json new file mode 100644 index 0000000..4c5e1fe --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_glue.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "修复与组装的粘合材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:glue" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_grape_juice_box.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_grape_juice_box.json new file mode 100644 index 0000000..ee9f019 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_grape_juice_box.json @@ -0,0 +1,19 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 40, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "low", + "can_always_eat": true, + "using_converts_to": "dn_sa:empty_juice_box" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:grape_juice_box" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hair_gel.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hair_gel.json new file mode 100644 index 0000000..2ca3e07 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hair_gel.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "装有液体的容器。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:hair_gel" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hot_dog.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hot_dog.json new file mode 100644 index 0000000..b3a9037 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hot_dog.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 6, + "saturation_modifier": "normal" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:hot_dog" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hot_dog_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hot_dog_rotten.json new file mode 100644 index 0000000..b04615c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_hot_dog_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:hot_dog_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_insulated_copper_wire.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_insulated_copper_wire.json new file mode 100644 index 0000000..581ea40 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_insulated_copper_wire.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于制作与缝合的线材。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:insulated_copper_wire" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_jianbing.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_jianbing.json new file mode 100644 index 0000000..e95ba68 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_jianbing.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 6, + "saturation_modifier": "normal" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:jianbing" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_jianbing_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_jianbing_rotten.json new file mode 100644 index 0000000..188b26f --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_jianbing_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:jianbing_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_kevlar.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_kevlar.json new file mode 100644 index 0000000..e509bad --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_kevlar.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:kevlar" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_kevlar_thread.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_kevlar_thread.json new file mode 100644 index 0000000..6b7f9c4 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_kevlar_thread.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于制作与缝合的线材。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:kevlar_thread" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_leather_strip.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_leather_strip.json new file mode 100644 index 0000000..43cc398 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_leather_strip.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:leather_strip" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_lunch_bag.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_lunch_bag.json new file mode 100644 index 0000000..d0e3952 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_lunch_bag.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "存放食物的袋子。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:lunch_bag" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_matchbox.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_matchbox.json new file mode 100644 index 0000000..060d6a9 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_matchbox.json @@ -0,0 +1,16 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 1, + "minecraft:max_damage": 20, + "netease:customtips": { + "value": "点燃方块和火焰" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:matchbox" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_meat_pastel.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_meat_pastel.json new file mode 100644 index 0000000..6309ec7 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_meat_pastel.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 6, + "saturation_modifier": "normal" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:meat_pastel" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_medical_adhesive.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_medical_adhesive.json new file mode 100644 index 0000000..b8b8332 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_medical_adhesive.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "修复与组装的粘合材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:medical_adhesive" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_pipe.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_pipe.json new file mode 100644 index 0000000..ff4742c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_pipe.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:metal_pipe" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_scrap.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_scrap.json new file mode 100644 index 0000000..d4f1d96 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_scrap.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可回收利用的材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:metal_scrap" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_sheet.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_sheet.json new file mode 100644 index 0000000..b8265bd --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_metal_sheet.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:metal_sheet" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_money.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_money.json new file mode 100644 index 0000000..2ababab --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_money.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "战利品货币" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:money" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_money_bundle.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_money_bundle.json new file mode 100644 index 0000000..dc2b797 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_money_bundle.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "一捆货币" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:money_bundle" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_nails.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_nails.json new file mode 100644 index 0000000..daf27c0 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_nails.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于组装的紧固件。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:nails" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_netherite_nugget.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_netherite_nugget.json new file mode 100644 index 0000000..fca4d95 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_netherite_nugget.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:netherite_nugget" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_orange_juice_box.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_orange_juice_box.json new file mode 100644 index 0000000..96cbaf8 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_orange_juice_box.json @@ -0,0 +1,19 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 40, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "normal", + "can_always_eat": true, + "using_converts_to": "dn_sa:empty_juice_box" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:orange_juice_box" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_pacoquita.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_pacoquita.json new file mode 100644 index 0000000..311dc8b --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_pacoquita.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:pacoquita" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_paperclip.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_paperclip.json new file mode 100644 index 0000000..d125bd2 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_paperclip.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于组装的紧固件。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:paperclip" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_pizza.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_pizza.json new file mode 100644 index 0000000..38c95ec --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_pizza.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 4, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:pizza" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic.json new file mode 100644 index 0000000..18ea6ca --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可用于制作物品的塑料材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:plastic" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic_bag.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic_bag.json new file mode 100644 index 0000000..11a8ec5 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic_bag.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可用于制作物品的塑料材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:plastic_bag" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic_plate.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic_plate.json new file mode 100644 index 0000000..883e70d --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_plastic_plate.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可用于制作物品的塑料材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:plastic_plate" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_polyester.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_polyester.json new file mode 100644 index 0000000..b857d18 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_polyester.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:polyester" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_polyester_thread.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_polyester_thread.json new file mode 100644 index 0000000..176b38e --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_polyester_thread.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于制作与缝合的线材。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:polyester_thread" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rags.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rags.json new file mode 100644 index 0000000..83a575f --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rags.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于缝制、修复与回收的织物材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:rags" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_cheese_pastel.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_cheese_pastel.json new file mode 100644 index 0000000..03378ac --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_cheese_pastel.json @@ -0,0 +1,25 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor", + "effects": [ + { + "name": "poison", + "duration": 160, + "amplifier": 0, + "chance": 1.0 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:raw_cheese_pastel" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_coxinha.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_coxinha.json new file mode 100644 index 0000000..bd97f51 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_coxinha.json @@ -0,0 +1,25 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor", + "effects": [ + { + "name": "poison", + "duration": 160, + "amplifier": 0, + "chance": 1.0 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:raw_coxinha" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_meat_pastel.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_meat_pastel.json new file mode 100644 index 0000000..5aff839 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_meat_pastel.json @@ -0,0 +1,25 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor", + "effects": [ + { + "name": "poison", + "duration": 160, + "amplifier": 0, + "chance": 1.0 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:raw_meat_pastel" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_wind_pastel.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_wind_pastel.json new file mode 100644 index 0000000..b14b9bb --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_raw_wind_pastel.json @@ -0,0 +1,25 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor", + "effects": [ + { + "name": "poison", + "duration": 160, + "amplifier": 0, + "chance": 1.0 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:raw_wind_pastel" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rotten_coxinha.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rotten_coxinha.json new file mode 100644 index 0000000..7a4dbc1 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rotten_coxinha.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:rotten_coxinha" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rubber.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rubber.json new file mode 100644 index 0000000..17b2b5c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rubber.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "合成与回收材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:rubber" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rubbing_alcohol.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rubbing_alcohol.json new file mode 100644 index 0000000..05c9642 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_rubbing_alcohol.json @@ -0,0 +1,35 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "装有液体的容器。" + }, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "low", + "can_always_eat": true, + "effects": [ + { + "name": "poison", + "chance": 1.0, + "duration": 10, + "amplifier": 1 + }, + { + "name": "nausea", + "chance": 1.0, + "duration": 15, + "amplifier": 0 + } + ] + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:rubbing_alcohol" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_saltine_cracker.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_saltine_cracker.json new file mode 100644 index 0000000..75792b3 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_saltine_cracker.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "poor" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:saltine_cracker" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_saw_blade.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_saw_blade.json new file mode 100644 index 0000000..fee8a23 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_saw_blade.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "锯子部件,用于制作工具" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:saw_blade" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_scrap_nugget.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_scrap_nugget.json new file mode 100644 index 0000000..94ac142 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_scrap_nugget.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:scrap_nugget" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_scrap_wood.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_scrap_wood.json new file mode 100644 index 0000000..4ec685d --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_scrap_wood.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可回收利用的材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:scrap_wood" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_screws.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_screws.json new file mode 100644 index 0000000..59d1d77 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_screws.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于组装的紧固件。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:screws" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_small_metal_sheet.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_small_metal_sheet.json new file mode 100644 index 0000000..f0130a6 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_small_metal_sheet.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于锻造与回收的金属材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:small_metal_sheet" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sterilized_rags.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sterilized_rags.json new file mode 100644 index 0000000..450562d --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sterilized_rags.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "清洁医用布。使用后返还脏抹布" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:sterilized_rags" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sulfur.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sulfur.json new file mode 100644 index 0000000..329fef3 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sulfur.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可用于制作的化学材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:sulfur" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sulfur_dust.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sulfur_dust.json new file mode 100644 index 0000000..839969c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_sulfur_dust.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "可用于制作的化学材料。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:sulfur_dust" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_taco.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_taco.json new file mode 100644 index 0000000..ac56783 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_taco.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 5, + "saturation_modifier": "normal" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:taco" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_taco_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_taco_rotten.json new file mode 100644 index 0000000..3417814 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_taco_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:taco_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_thread.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_thread.json new file mode 100644 index 0000000..4f388cd --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_thread.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于制作与缝合的线材。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:thread" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_tin_can.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_tin_can.json new file mode 100644 index 0000000..c4ee0d4 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_tin_can.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "空容器,可回收利用。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:tin_can" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_toast.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_toast.json new file mode 100644 index 0000000..50092a3 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_toast.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 3, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:toast" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_toast_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_toast_rotten.json new file mode 100644 index 0000000..ec8131c --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_toast_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 1, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:toast_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_waffles.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_waffles.json new file mode 100644 index 0000000..44a3bbc --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_waffles.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 5, + "saturation_modifier": "normal" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:waffles" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_waffles_rotten.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_waffles_rotten.json new file mode 100644 index 0000000..f094af5 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_waffles_rotten.json @@ -0,0 +1,31 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 2, + "saturation_modifier": "poor", + "effects": [ + { + "name": "hunger", + "duration": 300, + "amplifier": 0, + "chance": 0.85 + }, + { + "name": "nausea", + "duration": 120, + "amplifier": 0, + "chance": 0.2 + } + ] + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:waffles_rotten" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_wind_pastel.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_wind_pastel.json new file mode 100644 index 0000000..53c1bac --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_wind_pastel.json @@ -0,0 +1,17 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "minecraft:use_duration": 32, + "minecraft:food": { + "nutrition": 4, + "saturation_modifier": "low" + } + }, + "description": { + "category": "dn_sa_food", + "identifier": "dn_sa:wind_pastel" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_wire.json b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_wire.json new file mode 100644 index 0000000..b76f10e --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_items_beh/dn_sa_wire.json @@ -0,0 +1,15 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:max_stack_size": 64, + "netease:customtips": { + "value": "用于制作与缝合的线材。" + } + }, + "description": { + "category": "dn_sa", + "identifier": "dn_sa:wire" + } + } +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/netease_tab/tab.json b/behavior_pack_kcH4M5u0/netease_tab/tab.json new file mode 100644 index 0000000..99b5a23 --- /dev/null +++ b/behavior_pack_kcH4M5u0/netease_tab/tab.json @@ -0,0 +1,14 @@ +{ + "category": [ + { + "name": "dn_sa", + "labelText": "dn_sa:tab_description", + "icon": "textures/blocks/generator" + }, + { + "name": "dn_sa_food", + "labelText": "dn_sa:tab_food", + "icon": "textures/items/burger" + } + ] +} \ No newline at end of file diff --git a/behavior_pack_kcH4M5u0/scripts/__init__.py b/behavior_pack_kcH4M5u0/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/behavior_pack_kcH4M5u0/scripts/matchboxServer.py b/behavior_pack_kcH4M5u0/scripts/matchboxServer.py new file mode 100644 index 0000000..b8bfa64 --- /dev/null +++ b/behavior_pack_kcH4M5u0/scripts/matchboxServer.py @@ -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 diff --git a/behavior_pack_kcH4M5u0/scripts/modMain.py b/behavior_pack_kcH4M5u0/scripts/modMain.py new file mode 100644 index 0000000..8a5bcc9 --- /dev/null +++ b/behavior_pack_kcH4M5u0/scripts/modMain.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from mod.common.mod import Mod +import mod.server.extraServerApi as serverApi + + +@Mod.Binding(name="dn_sa", version="1.0") +class DnSaMod(object): + + def __init__(self): + pass + + @Mod.InitServer() + def DnSaServerInit(self): + serverApi.RegisterSystem("dn_sa", "MatchboxServer", "scripts.matchboxServer.MatchboxServer") + + @Mod.DestroyServer() + def DnSaServerDestroy(self): + pass diff --git a/resource_pack_t7eJjrxY/blocks.json b/resource_pack_t7eJjrxY/blocks.json new file mode 100644 index 0000000..c87e639 --- /dev/null +++ b/resource_pack_t7eJjrxY/blocks.json @@ -0,0 +1,25 @@ +{ + "format_version": [ + 1, + 1, + 0 + ], + "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" + } + }, + "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" + } + } +} diff --git a/resource_pack_t7eJjrxY/entity/generator_block_entity.json b/resource_pack_t7eJjrxY/entity/generator_block_entity.json new file mode 100644 index 0000000..34ff107 --- /dev/null +++ b/resource_pack_t7eJjrxY/entity/generator_block_entity.json @@ -0,0 +1,27 @@ +{ + "format_version": "1.10.0", + "minecraft:client_entity": { + "description": { + "identifier": "dn_sa:generator", + "geometry": { + "default": "geometry.dn_sa_generator" + }, + "textures": { + "default": "textures/blocks/generator" + }, + "materials": { + "default": "entity_alphatest" + }, + "render_controllers": [ + { + "controller.render.dn_sa_generator": "variable.variant == 0" + } + ], + "scripts": { + "initialize": [ + "variable.variant = 0;" + ] + } + } + } +} diff --git a/resource_pack_t7eJjrxY/entity/salvage_bin_block_entity.json b/resource_pack_t7eJjrxY/entity/salvage_bin_block_entity.json new file mode 100644 index 0000000..dee2d3c --- /dev/null +++ b/resource_pack_t7eJjrxY/entity/salvage_bin_block_entity.json @@ -0,0 +1,27 @@ +{ + "format_version": "1.10.0", + "minecraft:client_entity": { + "description": { + "identifier": "dn_sa:salvage_bin", + "geometry": { + "default": "geometry.dn_sa_salvage_bin" + }, + "textures": { + "default": "textures/blocks/salvage_bin" + }, + "materials": { + "default": "entity_alphatest" + }, + "render_controllers": [ + { + "controller.render.dn_sa_salvage_bin": "variable.variant == 0" + } + ], + "scripts": { + "initialize": [ + "variable.variant = 0;" + ] + } + } + } +} diff --git a/resource_pack_t7eJjrxY/manifest.json b/resource_pack_t7eJjrxY/manifest.json new file mode 100644 index 0000000..ffd46df --- /dev/null +++ b/resource_pack_t7eJjrxY/manifest.json @@ -0,0 +1,29 @@ +{ + "format_version": 2, + "header": { + "description": "", + "min_engine_version": [ + 1, + 18, + 0 + ], + "name": "resource_pack", + "uuid": "14129e44-874a-4d2d-a63e-24184b8fef6c", + "version": [ + 0, + 0, + 1 + ] + }, + "modules": [ + { + "type": "resources", + "uuid": "766f5889-ff80-4dbb-97d8-9908ecbfb4b8", + "version": [ + 0, + 0, + 1 + ] + } + ] +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/models/entity/generator_geo.json b/resource_pack_t7eJjrxY/models/entity/generator_geo.json new file mode 100644 index 0000000..9f70b87 --- /dev/null +++ b/resource_pack_t7eJjrxY/models/entity/generator_geo.json @@ -0,0 +1,390 @@ +{ + "format_version": "1.21.110", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.dn_sa_generator", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 3, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "bone2", + "pivot": [-1, 0, 0] + }, + { + "name": "group2", + "parent": "bone2", + "pivot": [-1, 0, 0], + "cubes": [ + { + "origin": [-15, 1, 0], + "size": [14, 2, 2], + "uv": { + "north": {"uv": [46, 24], "uv_size": [14, 2]}, + "east": {"uv": [44, 24], "uv_size": [2, 2]}, + "south": {"uv": [62, 24], "uv_size": [14, 2]}, + "west": {"uv": [60, 24], "uv_size": [2, 2]}, + "up": {"uv": [46, 22], "uv_size": [14, 2]}, + "down": {"uv": [60, 24], "uv_size": [14, -2]} + } + }, + { + "origin": [-15, 1, 14], + "size": [14, 2, 2], + "uv": { + "north": {"uv": [46, 24], "uv_size": [14, 2]}, + "east": {"uv": [44, 24], "uv_size": [2, 2]}, + "south": {"uv": [62, 24], "uv_size": [14, 2]}, + "west": {"uv": [60, 24], "uv_size": [2, 2]}, + "up": {"uv": [46, 22], "uv_size": [14, 2]}, + "down": {"uv": [60, 24], "uv_size": [14, -2]} + } + }, + { + "origin": [-15, 3, 0], + "size": [2, 10, 2], + "uv": { + "north": {"uv": [52, 6], "uv_size": [2, 10]}, + "east": {"uv": [50, 6], "uv_size": [2, 10]}, + "south": {"uv": [56, 6], "uv_size": [2, 10]}, + "west": {"uv": [54, 6], "uv_size": [2, 10]}, + "up": {"uv": [52, 4], "uv_size": [2, 2]}, + "down": {"uv": [54, 6], "uv_size": [2, -2]} + } + }, + { + "origin": [-13, 13, 0], + "size": [10, 2, 2], + "uv": { + "north": {"uv": [46, 32], "uv_size": [10, 2]}, + "east": {"uv": [44, 32], "uv_size": [2, 2]}, + "south": {"uv": [58, 32], "uv_size": [10, 2]}, + "west": {"uv": [56, 32], "uv_size": [2, 2]}, + "up": {"uv": [46, 30], "uv_size": [10, 2]}, + "down": {"uv": [56, 32], "uv_size": [10, -2]} + } + }, + { + "origin": [-15, 13, 0.025], + "size": [2, 2.825, 1.95], + "pivot": [-15, 13, 0], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [53, 35], "uv_size": [2, 2]}, + "east": {"uv": [52, 35], "uv_size": [1, 2]}, + "south": {"uv": [56, 35], "uv_size": [2, 2]}, + "west": {"uv": [55, 35], "uv_size": [1, 2]}, + "up": {"uv": [53, 34], "uv_size": [2, 1]}, + "down": {"uv": [55, 35], "uv_size": [2, -1]} + } + }, + { + "origin": [-3, 13, 0.025], + "size": [2, 2.825, 1.95], + "pivot": [-1, 13, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [53, 52], "uv_size": [2, 2]}, + "east": {"uv": [52, 52], "uv_size": [1, 2]}, + "south": {"uv": [56, 52], "uv_size": [2, 2]}, + "west": {"uv": [55, 52], "uv_size": [1, 2]}, + "up": {"uv": [53, 51], "uv_size": [2, 1]}, + "down": {"uv": [55, 52], "uv_size": [2, -1]} + } + }, + { + "origin": [-3, 3, 0], + "size": [2, 10, 2], + "uv": { + "north": {"uv": [2, 53], "uv_size": [2, 10]}, + "east": {"uv": [0, 53], "uv_size": [2, 10]}, + "south": {"uv": [6, 53], "uv_size": [2, 10]}, + "west": {"uv": [4, 53], "uv_size": [2, 10]}, + "up": {"uv": [2, 51], "uv_size": [2, 2]}, + "down": {"uv": [4, 53], "uv_size": [2, -2]} + } + } + ] + }, + { + "name": "group3", + "parent": "bone2", + "pivot": [-1, 0, 0], + "cubes": [ + { + "origin": [-15, 3, 14], + "size": [2, 10, 2], + "uv": { + "north": {"uv": [52, 6], "uv_size": [2, 10]}, + "east": {"uv": [50, 6], "uv_size": [2, 10]}, + "south": {"uv": [56, 6], "uv_size": [2, 10]}, + "west": {"uv": [54, 6], "uv_size": [2, 10]}, + "up": {"uv": [52, 4], "uv_size": [2, 2]}, + "down": {"uv": [54, 6], "uv_size": [2, -2]} + } + }, + { + "origin": [-13, 13, 14], + "size": [10, 2, 2], + "uv": { + "north": {"uv": [46, 32], "uv_size": [10, 2]}, + "east": {"uv": [44, 32], "uv_size": [2, 2]}, + "south": {"uv": [58, 32], "uv_size": [10, 2]}, + "west": {"uv": [56, 32], "uv_size": [2, 2]}, + "up": {"uv": [46, 30], "uv_size": [10, 2]}, + "down": {"uv": [56, 32], "uv_size": [10, -2]} + } + }, + { + "origin": [-15, 13, 14.025], + "size": [2, 2.825, 1.95], + "pivot": [-15, 13, 16], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [53, 35], "uv_size": [2, 2]}, + "east": {"uv": [52, 35], "uv_size": [1, 2]}, + "south": {"uv": [56, 35], "uv_size": [2, 2]}, + "west": {"uv": [55, 35], "uv_size": [1, 2]}, + "up": {"uv": [53, 34], "uv_size": [2, 1]}, + "down": {"uv": [55, 35], "uv_size": [2, -1]} + } + }, + { + "origin": [-3, 13, 14.025], + "size": [2, 2.825, 1.95], + "pivot": [-1, 13, 16], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [53, 52], "uv_size": [2, 2]}, + "east": {"uv": [52, 52], "uv_size": [1, 2]}, + "south": {"uv": [56, 52], "uv_size": [2, 2]}, + "west": {"uv": [55, 52], "uv_size": [1, 2]}, + "up": {"uv": [53, 51], "uv_size": [2, 1]}, + "down": {"uv": [55, 52], "uv_size": [2, -1]} + } + }, + { + "origin": [-3, 3, 14], + "size": [2, 10, 2], + "uv": { + "north": {"uv": [2, 53], "uv_size": [2, 10]}, + "east": {"uv": [0, 53], "uv_size": [2, 10]}, + "south": {"uv": [6, 53], "uv_size": [2, 10]}, + "west": {"uv": [4, 53], "uv_size": [2, 10]}, + "up": {"uv": [2, 51], "uv_size": [2, 2]}, + "down": {"uv": [4, 53], "uv_size": [2, -2]} + } + } + ] + }, + { + "name": "bone", + "parent": "bone2", + "pivot": [0, 0, 0], + "cubes": [ + { + "origin": [-3, 1, 2], + "size": [2, 2, 12], + "uv": { + "north": {"uv": [12, 49], "uv_size": [2, 2]}, + "east": {"uv": [0, 49], "uv_size": [12, 2]}, + "south": {"uv": [26, 49], "uv_size": [2, 2]}, + "west": {"uv": [14, 49], "uv_size": [12, 2]}, + "up": {"uv": [12, 37], "uv_size": [2, 12]}, + "down": {"uv": [14, 49], "uv_size": [2, -12]} + } + }, + { + "origin": [-3, 0, 13], + "size": [2, 1, 2], + "uv": { + "north": {"uv": [46, 36], "uv_size": [2, 1]}, + "east": {"uv": [44, 36], "uv_size": [2, 1]}, + "south": {"uv": [50, 36], "uv_size": [2, 1]}, + "west": {"uv": [48, 36], "uv_size": [2, 1]}, + "up": {"uv": [46, 34], "uv_size": [2, 2]}, + "down": {"uv": [48, 36], "uv_size": [2, -2]} + } + }, + { + "origin": [-15, 0, 13], + "size": [2, 1, 2], + "uv": { + "north": {"uv": [46, 53], "uv_size": [2, 1]}, + "east": {"uv": [44, 53], "uv_size": [2, 1]}, + "south": {"uv": [50, 53], "uv_size": [2, 1]}, + "west": {"uv": [48, 53], "uv_size": [2, 1]}, + "up": {"uv": [46, 51], "uv_size": [2, 2]}, + "down": {"uv": [48, 53], "uv_size": [2, -2]} + } + }, + { + "origin": [-1, 0, 1], + "size": [1, 4, 4], + "uv": { + "north": {"uv": [28, 55], "uv_size": [1, 4]}, + "east": {"uv": [24, 55], "uv_size": [4, 4]}, + "south": {"uv": [33, 55], "uv_size": [1, 4]}, + "west": {"uv": [29, 55], "uv_size": [4, 4]}, + "up": {"uv": [28, 51], "uv_size": [1, 4]}, + "down": {"uv": [29, 55], "uv_size": [1, -4]} + } + }, + { + "origin": [-15, 1, 2], + "size": [2, 2, 12], + "uv": { + "north": {"uv": [40, 49], "uv_size": [2, 2]}, + "east": {"uv": [28, 49], "uv_size": [12, 2]}, + "south": {"uv": [54, 49], "uv_size": [2, 2]}, + "west": {"uv": [42, 49], "uv_size": [12, 2]}, + "up": {"uv": [40, 37], "uv_size": [2, 12]}, + "down": {"uv": [42, 49], "uv_size": [2, -12]} + } + }, + { + "origin": [-16, 0, 1], + "size": [1, 4, 4], + "uv": { + "north": {"uv": [38, 55], "uv_size": [1, 4]}, + "east": {"uv": [34, 55], "uv_size": [4, 4]}, + "south": {"uv": [43, 55], "uv_size": [1, 4]}, + "west": {"uv": [39, 55], "uv_size": [4, 4]}, + "up": {"uv": [38, 51], "uv_size": [1, 4]}, + "down": {"uv": [39, 55], "uv_size": [1, -4]} + } + }, + { + "origin": [-13, 5, 0], + "size": [10, 7, 15], + "uv": { + "north": {"uv": [15, 15], "uv_size": [10, 7]}, + "east": {"uv": [0, 15], "uv_size": [15, 7]}, + "south": {"uv": [40, 15], "uv_size": [10, 7]}, + "west": {"uv": [25, 15], "uv_size": [15, 7]}, + "up": {"uv": [15, 0], "uv_size": [10, 15]}, + "down": {"uv": [25, 15], "uv_size": [10, -15]} + } + }, + { + "origin": [-2.8, 6, 9], + "size": [0, 3, 4], + "uv": { + "north": {"uv": [38, 26], "uv_size": [0, 3]}, + "east": {"uv": [34, 26], "uv_size": [4, 3]}, + "south": {"uv": [42, 26], "uv_size": [0, 3]}, + "west": {"uv": [38, 26], "uv_size": [4, 3]}, + "up": {"uv": [38, 22], "uv_size": [0, 4]}, + "down": {"uv": [38, 26], "uv_size": [0, -4]} + } + }, + { + "origin": [-13, 2, 3], + "size": [10, 3, 12], + "uv": { + "north": {"uv": [12, 34], "uv_size": [10, 3]}, + "east": {"uv": [0, 34], "uv_size": [12, 3]}, + "south": {"uv": [34, 34], "uv_size": [10, 3]}, + "west": {"uv": [22, 34], "uv_size": [12, 3]}, + "up": {"uv": [12, 22], "uv_size": [10, 12]}, + "down": {"uv": [22, 34], "uv_size": [10, -12]} + } + }, + { + "origin": [-9.5, 12, 3], + "size": [3, 1, 3], + "uv": { + "north": {"uv": [53, 19], "uv_size": [3, 1]}, + "east": {"uv": [50, 19], "uv_size": [3, 1]}, + "south": {"uv": [59, 19], "uv_size": [3, 1]}, + "west": {"uv": [56, 19], "uv_size": [3, 1]}, + "up": {"uv": [53, 16], "uv_size": [3, 3]}, + "down": {"uv": [56, 19], "uv_size": [3, -3]} + } + }, + { + "origin": [-14.2, 7, 1], + "size": [12.4, 7, 14], + "uv": { + "north": {"uv": [86, 46], "uv_size": [12, 7]}, + "east": {"uv": [98, 46], "uv_size": [14, 7]}, + "south": {"uv": [112, 46], "uv_size": [12, 7]}, + "west": {"uv": [98, 46], "uv_size": [14, 7]}, + "up": {"uv": [86, 32], "uv_size": [12, 14]}, + "down": {"uv": [98, 46], "uv_size": [12, -14]} + } + }, + { + "origin": [-14.2, 0, 1], + "size": [12.4, 7, 14], + "uv": { + "north": {"uv": [86, 46], "uv_size": [12, 7]}, + "east": {"uv": [98, 46], "uv_size": [14, 7]}, + "south": {"uv": [112, 46], "uv_size": [12, 7]}, + "west": {"uv": [98, 46], "uv_size": [14, 7]}, + "up": {"uv": [86, 32], "uv_size": [12, 14]}, + "down": {"uv": [98, 46], "uv_size": [12, -14]} + } + } + ] + } + ], + "item_display_transforms": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "translation": [0, 0, 0], + "scale": [0.4, 0.4, 0.4], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "firstperson_lefthand": { + "rotation": [0, -135, 0], + "translation": [0, 0, 0], + "scale": [0.4, 0.4, 0.4], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "ground": { + "rotation": [0, 0, 0], + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "gui": { + "rotation": [30, -135, 0], + "translation": [0, 0, 0], + "scale": [0.625, 0.625, 0.625], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0], + "fit_to_frame": false + }, + "fixed": { + "rotation": [0, 0, 0], + "translation": [0, 0, 0], + "scale": [0.5, 0.5, 0.5], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + } + } + } + ] +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/models/entity/salvage_bin_geo.json b/resource_pack_t7eJjrxY/models/entity/salvage_bin_geo.json new file mode 100644 index 0000000..aaef067 --- /dev/null +++ b/resource_pack_t7eJjrxY/models/entity/salvage_bin_geo.json @@ -0,0 +1,224 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.dn_sa_salvage_bin", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 3, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "group", + "pivot": [-13, 0, 15] + }, + { + "name": "group2", + "parent": "group", + "pivot": [-13, 0, 15], + "cubes": [ + { + "origin": [-2, 16, 14], + "size": [-12, -13, -12], + "uv": { + "north": {"uv": [0, 32], "uv_size": [12, 13]}, + "east": {"uv": [12, 42], "uv_size": [12, 13]}, + "south": {"uv": [24, 42], "uv_size": [12, 13]}, + "west": {"uv": [36, 42], "uv_size": [12, 13]}, + "up": {"uv": [12, 57], "uv_size": [-12, -12]}, + "down": {"uv": [60, 56], "uv_size": [-12, -12]} + } + }, + { + "origin": [-15, 2, 1], + "size": [14, 11, 14], + "uv": { + "north": {"uv": [44, 0], "uv_size": [14, 11]}, + "east": {"uv": [44, 11], "uv_size": [14, 11]}, + "south": {"uv": [44, 22], "uv_size": [14, 11]}, + "west": {"uv": [48, 33], "uv_size": [14, 11]}, + "up": {"uv": [30, 14], "uv_size": [-14, -14]}, + "down": {"uv": [30, 28], "uv_size": [-14, -14]} + } + }, + { + "origin": [-15.2, 9.8, 0.8], + "size": [14.4, 3.4, 14.4], + "uv": { + "north": {"uv": [58, 3], "uv_size": [14, 3]}, + "east": {"uv": [58, 6], "uv_size": [14, 3]}, + "south": {"uv": [58, 9], "uv_size": [14, 3]}, + "west": {"uv": [58, 12], "uv_size": [14, 3]}, + "up": {"uv": [30, 42], "uv_size": [-14, -14]}, + "down": {"uv": [44, 14], "uv_size": [-14, -14]} + } + }, + { + "origin": [-15.2, 1.8, 0.8], + "size": [14.4, 3.4, 14.4], + "uv": { + "north": {"uv": [58, 15], "uv_size": [14, 3]}, + "east": {"uv": [58, 18], "uv_size": [14, 3]}, + "south": {"uv": [58, 21], "uv_size": [14, 3]}, + "west": {"uv": [22, 58], "uv_size": [14, 3]}, + "up": {"uv": [44, 28], "uv_size": [-14, -14]}, + "down": {"uv": [44, 42], "uv_size": [-14, -14]} + } + }, + { + "origin": [-16, 13, 0], + "size": [16, 3, 16], + "uv": { + "north": {"uv": [22, 55], "uv_size": [16, 3]}, + "east": {"uv": [38, 56], "uv_size": [16, 3]}, + "south": {"uv": [54, 56], "uv_size": [16, 3]}, + "west": {"uv": [58, 0], "uv_size": [16, 3]}, + "up": {"uv": [16, 16], "uv_size": [-16, -16]}, + "down": {"uv": [16, 32], "uv_size": [-16, -16]} + } + }, + { + "origin": [-15, 0, 12], + "size": [3, 2, 3], + "uv": { + "north": {"uv": [6, 57], "uv_size": [3, 2]}, + "east": {"uv": [9, 57], "uv_size": [3, 2]}, + "south": {"uv": [58, 24], "uv_size": [3, 2]}, + "west": {"uv": [58, 26], "uv_size": [3, 2]}, + "up": {"uv": [15, 35], "uv_size": [-3, -3]}, + "down": {"uv": [15, 38], "uv_size": [-3, -3]} + } + }, + { + "origin": [-15, 0, 1], + "size": [3, 2, 3], + "uv": { + "north": {"uv": [58, 28], "uv_size": [3, 2]}, + "east": {"uv": [58, 30], "uv_size": [3, 2]}, + "south": {"uv": [6, 59], "uv_size": [3, 2]}, + "west": {"uv": [9, 59], "uv_size": [3, 2]}, + "up": {"uv": [15, 41], "uv_size": [-3, -3]}, + "down": {"uv": [47, 36], "uv_size": [-3, -3]} + } + }, + { + "origin": [-4, 0, 12], + "size": [3, 2, 3], + "uv": { + "north": {"uv": [36, 59], "uv_size": [3, 2]}, + "east": {"uv": [39, 59], "uv_size": [3, 2]}, + "south": {"uv": [42, 59], "uv_size": [3, 2]}, + "west": {"uv": [45, 59], "uv_size": [3, 2]}, + "up": {"uv": [47, 39], "uv_size": [-3, -3]}, + "down": {"uv": [47, 42], "uv_size": [-3, -3]} + } + }, + { + "origin": [-4, 0, 1], + "size": [3, 2, 3], + "uv": { + "north": {"uv": [48, 59], "uv_size": [3, 2]}, + "east": {"uv": [51, 59], "uv_size": [3, 2]}, + "south": {"uv": [54, 59], "uv_size": [3, 2]}, + "west": {"uv": [57, 59], "uv_size": [3, 2]}, + "up": {"uv": [3, 60], "uv_size": [-3, -3]}, + "down": {"uv": [6, 60], "uv_size": [-3, -3]} + } + } + ] + }, + { + "name": "group3", + "parent": "group2", + "pivot": [-14, 18, 14] + }, + { + "name": "group4", + "parent": "group", + "pivot": [-2, 16, 8], + "cubes": [ + { + "origin": [-7.12811, 13.17004, 2], + "size": [5, 0, 12], + "uv": { + "north": {"uv": [0, 0], "uv_size": [5, 0]}, + "east": {"uv": [0, 0], "uv_size": [12, 0]}, + "south": {"uv": [0, 0], "uv_size": [5, 0]}, + "west": {"uv": [0, 0], "uv_size": [12, 0]}, + "up": {"uv": [17, 67], "uv_size": [-5, -12]}, + "down": {"uv": [72, 43], "uv_size": [-5, -12]} + } + }, + { + "origin": [-13.87189, 13.17004, 2], + "size": [5, 0, 12], + "uv": { + "north": {"uv": [5, 0], "uv_size": [-5, 0]}, + "east": {"uv": [12, 0], "uv_size": [-12, 0]}, + "south": {"uv": [5, 0], "uv_size": [-5, 0]}, + "west": {"uv": [12, 0], "uv_size": [-12, 0]}, + "up": {"uv": [12, 67], "uv_size": [5, -12]}, + "down": {"uv": [64, 41], "uv_size": [5, -12]} + } + } + ] + } + ], + "item_display_transforms": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "translation": [0, 0, 0], + "scale": [0.4, 0.4, 0.4], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "firstperson_lefthand": { + "rotation": [0, -135, 0], + "translation": [0, 0, 0], + "scale": [0.4, 0.4, 0.4], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "ground": { + "rotation": [0, 0, 0], + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + }, + "gui": { + "rotation": [30, -135, 0], + "translation": [0, 0, 0], + "scale": [0.625, 0.625, 0.625], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0], + "fit_to_frame": false + }, + "fixed": { + "rotation": [0, 0, 0], + "translation": [0, 0, 0], + "scale": [0.5, 0.5, 0.5], + "rotation_pivot": [0, 0, 0], + "scale_pivot": [0, 0, 0] + } + } + } + ] +} diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_adhesive_tape.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_adhesive_tape.json new file mode 100644 index 0000000..4f27e9c --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_adhesive_tape.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:adhesive_tape" + }, + "description": { + "identifier": "dn_sa:adhesive_tape" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_alcohol.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_alcohol.json new file mode 100644 index 0000000..3b398a8 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_alcohol.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:alcohol", + "minecraft:use_animation": "drink" + }, + "description": { + "identifier": "dn_sa:alcohol" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_antiseptic.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_antiseptic.json new file mode 100644 index 0000000..f58121b --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_antiseptic.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:antiseptic" + }, + "description": { + "identifier": "dn_sa:antiseptic" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_apple_juice_box.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_apple_juice_box.json new file mode 100644 index 0000000..adff68a --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_apple_juice_box.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:apple_juice_box", + "minecraft:use_animation": "drink" + }, + "description": { + "identifier": "dn_sa:apple_juice_box" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_ingot.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_ingot.json new file mode 100644 index 0000000..57daaa5 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_ingot.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:ashen_steel_ingot" + }, + "description": { + "identifier": "dn_sa:ashen_steel_ingot" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_mixture.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_mixture.json new file mode 100644 index 0000000..802d387 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_mixture.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:ashen_steel_mixture" + }, + "description": { + "identifier": "dn_sa:ashen_steel_mixture" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_nugget.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_nugget.json new file mode 100644 index 0000000..b1300ff --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_nugget.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:ashen_steel_nugget" + }, + "description": { + "identifier": "dn_sa:ashen_steel_nugget" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_rod.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_rod.json new file mode 100644 index 0000000..4125187 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_ashen_steel_rod.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:ashen_steel_rod" + }, + "description": { + "identifier": "dn_sa:ashen_steel_rod" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_battery.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_battery.json new file mode 100644 index 0000000..6ee2fb2 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_battery.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:battery" + }, + "description": { + "identifier": "dn_sa:battery" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_berry_juice_box.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_berry_juice_box.json new file mode 100644 index 0000000..bc7ec0e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_berry_juice_box.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:berry_juice_box", + "minecraft:use_animation": "drink" + }, + "description": { + "identifier": "dn_sa:berry_juice_box" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_big_burger.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_big_burger.json new file mode 100644 index 0000000..1028c90 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_big_burger.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:big_burger", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:big_burger" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_big_burger_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_big_burger_rotten.json new file mode 100644 index 0000000..a952934 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_big_burger_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:big_burger_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:big_burger_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_biscuit.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_biscuit.json new file mode 100644 index 0000000..a03cbb9 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_biscuit.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:biscuit", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:biscuit" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_biscuit_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_biscuit_rotten.json new file mode 100644 index 0000000..18d44b0 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_biscuit_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:biscuit_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:biscuit_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_brigadeiro.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_brigadeiro.json new file mode 100644 index 0000000..7ca4892 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_brigadeiro.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:brigadeiro", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:brigadeiro" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burger.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burger.json new file mode 100644 index 0000000..500c733 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burger.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:burger", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:burger" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burger_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burger_rotten.json new file mode 100644 index 0000000..544ee0c --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burger_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:burger_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:burger_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burrito.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burrito.json new file mode 100644 index 0000000..f957660 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burrito.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:burrito", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:burrito" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burrito_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burrito_rotten.json new file mode 100644 index 0000000..2f86cd1 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_burrito_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:burrito_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:burrito_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_butter.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_butter.json new file mode 100644 index 0000000..1658c5e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_butter.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:butter", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:butter" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_camera.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_camera.json new file mode 100644 index 0000000..21110a6 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_camera.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:camera" + }, + "description": { + "identifier": "dn_sa:camera" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_candys.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_candys.json new file mode 100644 index 0000000..f5b9d7e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_candys.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:candys", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:candys" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cardboard.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cardboard.json new file mode 100644 index 0000000..638ba7a --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cardboard.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cardboard" + }, + "description": { + "identifier": "dn_sa:cardboard" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cereal_fruit_loops_flakes.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cereal_fruit_loops_flakes.json new file mode 100644 index 0000000..207d9ce --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cereal_fruit_loops_flakes.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cereal_fruit_loops_flakes", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:cereal_fruit_loops_flakes" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cereal_kelloggys_flakes.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cereal_kelloggys_flakes.json new file mode 100644 index 0000000..21cc4dc --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cereal_kelloggys_flakes.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cereal_kelloggys_flakes", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:cereal_kelloggys_flakes" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_charcoal_dust.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_charcoal_dust.json new file mode 100644 index 0000000..da81fc3 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_charcoal_dust.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:charcoal_dust" + }, + "description": { + "identifier": "dn_sa:charcoal_dust" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese.json new file mode 100644 index 0000000..a731bd5 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cheese", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:cheese" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_bread.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_bread.json new file mode 100644 index 0000000..aa4dd61 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_bread.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cheese_bread", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:cheese_bread" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_burger.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_burger.json new file mode 100644 index 0000000..7a6d6d0 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_burger.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cheese_burger", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:cheese_burger" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_burger_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_burger_rotten.json new file mode 100644 index 0000000..2c3c329 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cheese_burger_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cheese_burger_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:cheese_burger_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_chips.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_chips.json new file mode 100644 index 0000000..781ebe5 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_chips.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:chips", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:chips" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_classic_watch.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_classic_watch.json new file mode 100644 index 0000000..18c4850 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_classic_watch.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:classic_watch" + }, + "description": { + "identifier": "dn_sa:classic_watch" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cleaning_liquid.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cleaning_liquid.json new file mode 100644 index 0000000..99d6e97 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cleaning_liquid.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cleaning_liquid", + "minecraft:use_animation": "drink" + }, + "description": { + "identifier": "dn_sa:cleaning_liquid" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cloth.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cloth.json new file mode 100644 index 0000000..b52844b --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_cloth.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:cloth" + }, + "description": { + "identifier": "dn_sa:cloth" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_copper_wire.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_copper_wire.json new file mode 100644 index 0000000..6feda67 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_copper_wire.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:copper_wire" + }, + "description": { + "identifier": "dn_sa:copper_wire" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_coxinha.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_coxinha.json new file mode 100644 index 0000000..bdfa706 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_coxinha.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:coxinha", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:coxinha" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dented_can.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dented_can.json new file mode 100644 index 0000000..00a6158 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dented_can.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:dented_can" + }, + "description": { + "identifier": "dn_sa:dented_can" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_diamond_nugget.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_diamond_nugget.json new file mode 100644 index 0000000..a90f1a2 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_diamond_nugget.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:diamond_nugget" + }, + "description": { + "identifier": "dn_sa:diamond_nugget" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dirty_rags.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dirty_rags.json new file mode 100644 index 0000000..2bbdb86 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dirty_rags.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:dirty_rags" + }, + "description": { + "identifier": "dn_sa:dirty_rags" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dish_towel.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dish_towel.json new file mode 100644 index 0000000..c73aad5 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_dish_towel.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:dish_towel" + }, + "description": { + "identifier": "dn_sa:dish_towel" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_donut.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_donut.json new file mode 100644 index 0000000..bdb00be --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_donut.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:donut", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:donut" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_donut_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_donut_rotten.json new file mode 100644 index 0000000..723d341 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_donut_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:donut_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:donut_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_duct_tape.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_duct_tape.json new file mode 100644 index 0000000..874bcfb --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_duct_tape.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:duct_tape" + }, + "description": { + "identifier": "dn_sa:duct_tape" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_electric_scrap.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_electric_scrap.json new file mode 100644 index 0000000..24d4eb1 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_electric_scrap.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:electric_scrap" + }, + "description": { + "identifier": "dn_sa:electric_scrap" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_empty_can.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_empty_can.json new file mode 100644 index 0000000..6d5667c --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_empty_can.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:empty_can" + }, + "description": { + "identifier": "dn_sa:empty_can" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_empty_juice_box.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_empty_juice_box.json new file mode 100644 index 0000000..0dd0a37 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_empty_juice_box.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:empty_juice_box" + }, + "description": { + "identifier": "dn_sa:empty_juice_box" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fabric_patch.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fabric_patch.json new file mode 100644 index 0000000..c44380c --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fabric_patch.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:fabric_patch" + }, + "description": { + "identifier": "dn_sa:fabric_patch" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fermented_mash.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fermented_mash.json new file mode 100644 index 0000000..e9952fa --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fermented_mash.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:fermented_mash" + }, + "description": { + "identifier": "dn_sa:fermented_mash" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fiber_fabric.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fiber_fabric.json new file mode 100644 index 0000000..a3313ed --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_fiber_fabric.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:fiber_fabric" + }, + "description": { + "identifier": "dn_sa:fiber_fabric" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_gasoline_bucket.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_gasoline_bucket.json new file mode 100644 index 0000000..4461d54 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_gasoline_bucket.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:gasoline_bucket" + }, + "description": { + "identifier": "dn_sa:gasoline_bucket" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_generator_manual.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_generator_manual.json new file mode 100644 index 0000000..179dd51 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_generator_manual.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:generator_manual" + }, + "description": { + "identifier": "dn_sa:generator_manual" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_glue.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_glue.json new file mode 100644 index 0000000..da3d47d --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_glue.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:glue" + }, + "description": { + "identifier": "dn_sa:glue" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_grape_juice_box.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_grape_juice_box.json new file mode 100644 index 0000000..01398e3 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_grape_juice_box.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:grape_juice_box", + "minecraft:use_animation": "drink" + }, + "description": { + "identifier": "dn_sa:grape_juice_box" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hair_gel.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hair_gel.json new file mode 100644 index 0000000..b544b50 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hair_gel.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:hair_gel" + }, + "description": { + "identifier": "dn_sa:hair_gel" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hot_dog.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hot_dog.json new file mode 100644 index 0000000..a7e01fd --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hot_dog.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:hot_dog", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:hot_dog" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hot_dog_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hot_dog_rotten.json new file mode 100644 index 0000000..eb4ded3 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_hot_dog_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:hot_dog_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:hot_dog_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_insulated_copper_wire.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_insulated_copper_wire.json new file mode 100644 index 0000000..831155e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_insulated_copper_wire.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:insulated_copper_wire" + }, + "description": { + "identifier": "dn_sa:insulated_copper_wire" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_jianbing.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_jianbing.json new file mode 100644 index 0000000..8698692 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_jianbing.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:jianbing", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:jianbing" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_jianbing_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_jianbing_rotten.json new file mode 100644 index 0000000..015851e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_jianbing_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:jianbing_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:jianbing_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_kevlar.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_kevlar.json new file mode 100644 index 0000000..fb7d109 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_kevlar.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:kevlar" + }, + "description": { + "identifier": "dn_sa:kevlar" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_kevlar_thread.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_kevlar_thread.json new file mode 100644 index 0000000..04149a2 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_kevlar_thread.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:kevlar_thread" + }, + "description": { + "identifier": "dn_sa:kevlar_thread" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_leather_strip.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_leather_strip.json new file mode 100644 index 0000000..72b11fd --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_leather_strip.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:leather_strip" + }, + "description": { + "identifier": "dn_sa:leather_strip" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_lunch_bag.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_lunch_bag.json new file mode 100644 index 0000000..662db28 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_lunch_bag.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:lunch_bag" + }, + "description": { + "identifier": "dn_sa:lunch_bag" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_matchbox.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_matchbox.json new file mode 100644 index 0000000..a0dea9e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_matchbox.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:matchbox" + }, + "description": { + "identifier": "dn_sa:matchbox" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_meat_pastel.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_meat_pastel.json new file mode 100644 index 0000000..233cdda --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_meat_pastel.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:meat_pastel", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:meat_pastel" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_medical_adhesive.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_medical_adhesive.json new file mode 100644 index 0000000..a6cee51 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_medical_adhesive.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:medical_adhesive" + }, + "description": { + "identifier": "dn_sa:medical_adhesive" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_pipe.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_pipe.json new file mode 100644 index 0000000..439d900 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_pipe.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:metal_pipe" + }, + "description": { + "identifier": "dn_sa:metal_pipe" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_scrap.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_scrap.json new file mode 100644 index 0000000..ad79f63 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_scrap.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:metal_scrap" + }, + "description": { + "identifier": "dn_sa:metal_scrap" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_sheet.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_sheet.json new file mode 100644 index 0000000..e372386 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_metal_sheet.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:metal_sheet" + }, + "description": { + "identifier": "dn_sa:metal_sheet" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_money.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_money.json new file mode 100644 index 0000000..e306055 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_money.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:money" + }, + "description": { + "identifier": "dn_sa:money" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_money_bundle.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_money_bundle.json new file mode 100644 index 0000000..d549717 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_money_bundle.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:money_bundle" + }, + "description": { + "identifier": "dn_sa:money_bundle" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_nails.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_nails.json new file mode 100644 index 0000000..a31624e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_nails.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:nails" + }, + "description": { + "identifier": "dn_sa:nails" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_netherite_nugget.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_netherite_nugget.json new file mode 100644 index 0000000..ec82723 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_netherite_nugget.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:netherite_nugget" + }, + "description": { + "identifier": "dn_sa:netherite_nugget" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_orange_juice_box.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_orange_juice_box.json new file mode 100644 index 0000000..beab53f --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_orange_juice_box.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:orange_juice_box", + "minecraft:use_animation": "drink" + }, + "description": { + "identifier": "dn_sa:orange_juice_box" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_pacoquita.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_pacoquita.json new file mode 100644 index 0000000..938df80 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_pacoquita.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:pacoquita", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:pacoquita" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_paperclip.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_paperclip.json new file mode 100644 index 0000000..1e3d901 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_paperclip.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:paperclip" + }, + "description": { + "identifier": "dn_sa:paperclip" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_pizza.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_pizza.json new file mode 100644 index 0000000..f5d24c4 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_pizza.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:pizza", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:pizza" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic.json new file mode 100644 index 0000000..08db8a6 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:plastic" + }, + "description": { + "identifier": "dn_sa:plastic" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic_bag.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic_bag.json new file mode 100644 index 0000000..15dd15d --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic_bag.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:plastic_bag" + }, + "description": { + "identifier": "dn_sa:plastic_bag" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic_plate.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic_plate.json new file mode 100644 index 0000000..bc5692e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_plastic_plate.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:plastic_plate" + }, + "description": { + "identifier": "dn_sa:plastic_plate" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_polyester.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_polyester.json new file mode 100644 index 0000000..904ad71 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_polyester.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:polyester" + }, + "description": { + "identifier": "dn_sa:polyester" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_polyester_thread.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_polyester_thread.json new file mode 100644 index 0000000..3cc883f --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_polyester_thread.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:polyester_thread" + }, + "description": { + "identifier": "dn_sa:polyester_thread" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rags.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rags.json new file mode 100644 index 0000000..1345f82 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rags.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:rags" + }, + "description": { + "identifier": "dn_sa:rags" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_cheese_pastel.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_cheese_pastel.json new file mode 100644 index 0000000..33a1c9e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_cheese_pastel.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:raw_cheese_pastel", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:raw_cheese_pastel" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_coxinha.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_coxinha.json new file mode 100644 index 0000000..7399327 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_coxinha.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:raw_coxinha", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:raw_coxinha" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_meat_pastel.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_meat_pastel.json new file mode 100644 index 0000000..12ccc83 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_meat_pastel.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:raw_meat_pastel", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:raw_meat_pastel" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_wind_pastel.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_wind_pastel.json new file mode 100644 index 0000000..bbc066f --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_raw_wind_pastel.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:raw_wind_pastel", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:raw_wind_pastel" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rotten_coxinha.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rotten_coxinha.json new file mode 100644 index 0000000..6a430bc --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rotten_coxinha.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:rotten_coxinha", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:rotten_coxinha" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rubber.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rubber.json new file mode 100644 index 0000000..9cae65f --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rubber.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:rubber" + }, + "description": { + "identifier": "dn_sa:rubber" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rubbing_alcohol.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rubbing_alcohol.json new file mode 100644 index 0000000..31f07ab --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_rubbing_alcohol.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:rubbing_alcohol", + "minecraft:use_animation": "drink" + }, + "description": { + "identifier": "dn_sa:rubbing_alcohol" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_saltine_cracker.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_saltine_cracker.json new file mode 100644 index 0000000..1febb3e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_saltine_cracker.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:saltine_cracker", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:saltine_cracker" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_saw_blade.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_saw_blade.json new file mode 100644 index 0000000..94dfbff --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_saw_blade.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:saw_blade" + }, + "description": { + "identifier": "dn_sa:saw_blade" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_scrap_nugget.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_scrap_nugget.json new file mode 100644 index 0000000..015b39f --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_scrap_nugget.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:scrap_nugget" + }, + "description": { + "identifier": "dn_sa:scrap_nugget" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_scrap_wood.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_scrap_wood.json new file mode 100644 index 0000000..b205f4f --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_scrap_wood.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:scrap_wood" + }, + "description": { + "identifier": "dn_sa:scrap_wood" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_screws.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_screws.json new file mode 100644 index 0000000..12d1d01 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_screws.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:screws" + }, + "description": { + "identifier": "dn_sa:screws" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_small_metal_sheet.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_small_metal_sheet.json new file mode 100644 index 0000000..91fbe19 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_small_metal_sheet.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:small_metal_sheet" + }, + "description": { + "identifier": "dn_sa:small_metal_sheet" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sterilized_rags.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sterilized_rags.json new file mode 100644 index 0000000..9b71cff --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sterilized_rags.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:sterilized_rags" + }, + "description": { + "identifier": "dn_sa:sterilized_rags" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sulfur.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sulfur.json new file mode 100644 index 0000000..58e5337 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sulfur.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:sulfur" + }, + "description": { + "identifier": "dn_sa:sulfur" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sulfur_dust.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sulfur_dust.json new file mode 100644 index 0000000..74bfdf1 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_sulfur_dust.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:sulfur_dust" + }, + "description": { + "identifier": "dn_sa:sulfur_dust" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_taco.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_taco.json new file mode 100644 index 0000000..5eab528 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_taco.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:taco", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:taco" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_taco_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_taco_rotten.json new file mode 100644 index 0000000..b35c872 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_taco_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:taco_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:taco_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_thread.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_thread.json new file mode 100644 index 0000000..8aa1aba --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_thread.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:thread" + }, + "description": { + "identifier": "dn_sa:thread" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_tin_can.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_tin_can.json new file mode 100644 index 0000000..66efa5e --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_tin_can.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:tin_can" + }, + "description": { + "identifier": "dn_sa:tin_can" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_toast.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_toast.json new file mode 100644 index 0000000..4091a55 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_toast.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:toast", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:toast" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_toast_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_toast_rotten.json new file mode 100644 index 0000000..f8d8af7 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_toast_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:toast_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:toast_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_waffles.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_waffles.json new file mode 100644 index 0000000..57cb71b --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_waffles.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:waffles", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:waffles" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_waffles_rotten.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_waffles_rotten.json new file mode 100644 index 0000000..e89abe1 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_waffles_rotten.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:waffles_rotten", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:waffles_rotten" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_wind_pastel.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_wind_pastel.json new file mode 100644 index 0000000..5430d57 --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_wind_pastel.json @@ -0,0 +1,12 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:wind_pastel", + "minecraft:use_animation": "eat" + }, + "description": { + "identifier": "dn_sa:wind_pastel" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/netease_items_res/dn_sa_wire.json b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_wire.json new file mode 100644 index 0000000..665297f --- /dev/null +++ b/resource_pack_t7eJjrxY/netease_items_res/dn_sa_wire.json @@ -0,0 +1,11 @@ +{ + "format_version": "1.10", + "minecraft:item": { + "components": { + "minecraft:icon": "dn_sa:wire" + }, + "description": { + "identifier": "dn_sa:wire" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/render_controllers/dn_sa_render_controllers.json b/resource_pack_t7eJjrxY/render_controllers/dn_sa_render_controllers.json new file mode 100644 index 0000000..2efeeb5 --- /dev/null +++ b/resource_pack_t7eJjrxY/render_controllers/dn_sa_render_controllers.json @@ -0,0 +1,27 @@ +{ + "format_version": "1.8.0", + "render_controllers": { + "controller.render.dn_sa_generator": { + "geometry": "Geometry.default", + "materials": [ + { + "*": "Material.default" + } + ], + "textures": [ + "Texture.default" + ] + }, + "controller.render.dn_sa_salvage_bin": { + "geometry": "Geometry.default", + "materials": [ + { + "*": "Material.default" + } + ], + "textures": [ + "Texture.default" + ] + } + } +} diff --git a/resource_pack_t7eJjrxY/texts/zh_CN.lang b/resource_pack_t7eJjrxY/texts/zh_CN.lang new file mode 100644 index 0000000..6a6c79f --- /dev/null +++ b/resource_pack_t7eJjrxY/texts/zh_CN.lang @@ -0,0 +1,118 @@ +tile.dn_sa:generator.name=发电机 +tile.dn_sa:salvage_bin.name=回收箱 +itemGroup.name.dn_sa_generator=汽油发电机 +itemGroup.name.dn_sa_salvage_bin=回收箱 +dn_sa:tab_description=幸存者军火库 + +item.dn_sa:empty_juice_box.name=空果汁盒 +item.dn_sa:grape_juice_box.name=葡萄汁盒 +item.dn_sa:berry_juice_box.name=浆果汁盒 +item.dn_sa:apple_juice_box.name=苹果汁盒 +item.dn_sa:orange_juice_box.name=橙汁盒 +item.dn_sa:big_burger.name=大汉堡 +item.dn_sa:big_burger_rotten.name=腐烂的大汉堡 +item.dn_sa:burger.name=汉堡 +item.dn_sa:burger_rotten.name=腐烂的汉堡 +item.dn_sa:cheese_burger.name=芝士汉堡 +item.dn_sa:cheese_burger_rotten.name=腐烂的芝士汉堡 +item.dn_sa:burrito.name=卷饼 +item.dn_sa:jianbing.name=煎饼果子 +item.dn_sa:jianbing_rotten.name=腐烂的煎饼果子 +item.dn_sa:burrito_rotten.name=腐烂的卷饼 +item.dn_sa:hot_dog.name=热狗 +item.dn_sa:hot_dog_rotten.name=腐烂的热狗 +item.dn_sa:taco.name=玉米卷 +item.dn_sa:taco_rotten.name=腐烂的玉米卷 +item.dn_sa:toast.name=吐司 +item.dn_sa:toast_rotten.name=腐烂的吐司 +item.dn_sa:waffles.name=华夫饼 +item.dn_sa:waffles_rotten.name=腐烂的华夫饼 +item.dn_sa:biscuit.name=饼干 +item.dn_sa:biscuit_rotten.name=腐烂的饼干 +item.dn_sa:donut.name=甜甜圈 +item.dn_sa:donut_rotten.name=腐烂的甜甜圈 +item.dn_sa:candys.name=糖果 +item.dn_sa:butter.name=黄油 +item.dn_sa:cheese.name=奶酪 +item.dn_sa:cheese_bread.name=芝士面包 +item.dn_sa:chips.name=薯片 +item.dn_sa:brigadeiro.name=巴西巧克力球 +item.dn_sa:coxinha.name=巴西炸鸡肉饺 +item.dn_sa:rotten_coxinha.name=腐烂的炸鸡肉饺 +item.dn_sa:raw_coxinha.name=生炸鸡肉饺 +item.dn_sa:meat_pastel.name=肉馅炸饺 +item.dn_sa:raw_meat_pastel.name=生肉馅炸饺 +item.dn_sa:raw_cheese_pastel.name=生芝士炸饺 +item.dn_sa:raw_wind_pastel.name=生空心炸饺 +item.dn_sa:wind_pastel.name=空心炸饺 +item.dn_sa:pacoquita.name=巴西花生糖 +item.dn_sa:saltine_cracker.name=苏打饼干 +item.dn_sa:pizza.name=披萨片 +item.dn_sa:cereal_fruit_loops_flakes.name=水果圈麦片 +item.dn_sa:cereal_kelloggys_flakes.name=家乐氏麦片 + +item.dn_sa:adhesive_tape.name=胶带 +item.dn_sa:alcohol.name=酒精 +item.dn_sa:antiseptic.name=消毒剂 +item.dn_sa:ashen_steel_ingot.name=灰烬钢锭 +item.dn_sa:ashen_steel_mixture.name=灰烬钢混合物 +item.dn_sa:ashen_steel_nugget.name=灰烬钢粒 +item.dn_sa:ashen_steel_rod.name=灰烬钢棒 +item.dn_sa:battery.name=电池 +item.dn_sa:camera.name=相机 +item.dn_sa:cardboard.name=纸板 +item.dn_sa:charcoal_dust.name=木炭粉 +item.dn_sa:classic_watch.name=经典手表 +item.dn_sa:cleaning_liquid.name=清洁液 +item.dn_sa:cloth.name=布料 +item.dn_sa:copper_wire.name=铜线 +item.dn_sa:dented_can.name=凹陷的罐子 +item.dn_sa:diamond_nugget.name=钻石粒 +item.dn_sa:dirty_rags.name=脏抹布 +item.dn_sa:dish_towel.name=洗碗巾 +item.dn_sa:duct_tape.name=管道胶带 +item.dn_sa:electric_scrap.name=电子废料 +item.dn_sa:empty_can.name=空罐子 +item.dn_sa:fabric_patch.name=布料补丁 +item.dn_sa:fermented_mash.name=发酵糊 +item.dn_sa:fiber_fabric.name=纤维织物 +item.dn_sa:gasoline_bucket.name=汽油桶 +item.dn_sa:generator_manual.name=发电机手册 +item.dn_sa:glue.name=胶水 +item.dn_sa:hair_gel.name=发胶 +item.dn_sa:insulated_copper_wire.name=绝缘铜缆 +item.dn_sa:kevlar.name=凯夫拉纤维 +item.dn_sa:kevlar_thread.name=凯夫拉线 +item.dn_sa:leather_strip.name=皮革条 +item.dn_sa:lunch_bag.name=午餐袋 +item.dn_sa:matchbox.name=火柴盒 +item.dn_sa:medical_adhesive.name=医用胶 +item.dn_sa:metal_pipe.name=金属管 +item.dn_sa:metal_scrap.name=金属废料 +item.dn_sa:metal_sheet.name=金属板 +item.dn_sa:money.name=钞票 +item.dn_sa:money_bundle.name=一捆钞票 +item.dn_sa:nails.name=钉子 +item.dn_sa:netherite_nugget.name=下界合金粒 +item.dn_sa:paperclip.name=回形针 +item.dn_sa:plastic.name=塑料 +item.dn_sa:plastic_bag.name=塑料袋 +item.dn_sa:plastic_plate.name=塑料盘 +item.dn_sa:polyester.name=涤纶 +item.dn_sa:polyester_thread.name=涤纶线 +item.dn_sa:rags.name=抹布 +item.dn_sa:rubber.name=橡胶 +item.dn_sa:rubbing_alcohol.name=外用酒精 +item.dn_sa:saw_blade.name=锯片 +item.dn_sa:scrap_nugget.name=废料粒 +item.dn_sa:scrap_wood.name=废木料 +item.dn_sa:screws.name=螺丝 +item.dn_sa:small_metal_sheet.name=小金属板 +item.dn_sa:sterilized_rags.name=消毒抹布 +item.dn_sa:sulfur.name=硫磺 +item.dn_sa:sulfur_dust.name=硫磺粉 +item.dn_sa:thread.name=线 +item.dn_sa:tin_can.name=锡罐 +item.dn_sa:wire.name=电线 + +dn_sa:tab_food=食物 diff --git a/resource_pack_t7eJjrxY/textures/blocks/generator.png b/resource_pack_t7eJjrxY/textures/blocks/generator.png new file mode 100644 index 0000000..49a04c8 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/blocks/generator.png differ diff --git a/resource_pack_t7eJjrxY/textures/blocks/salvage_bin.png b/resource_pack_t7eJjrxY/textures/blocks/salvage_bin.png new file mode 100644 index 0000000..3f97130 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/blocks/salvage_bin.png differ diff --git a/resource_pack_t7eJjrxY/textures/item_texture.json b/resource_pack_t7eJjrxY/textures/item_texture.json new file mode 100644 index 0000000..765ce03 --- /dev/null +++ b/resource_pack_t7eJjrxY/textures/item_texture.json @@ -0,0 +1,339 @@ +{ + "resource_pack_name": "vanilla", + "texture_name": "atlas.items", + "texture_data": { + "dn_sa:generator_icon": { + "textures": "textures/blocks/generator" + }, + "dn_sa:salvage_bin_icon": { + "textures": "textures/blocks/salvage_bin" + }, + "dn_sa:empty_juice_box": { + "textures": "textures/items/empty_juice_box" + }, + "dn_sa:grape_juice_box": { + "textures": "textures/items/grape_juice_box" + }, + "dn_sa:berry_juice_box": { + "textures": "textures/items/berry_juice_box" + }, + "dn_sa:apple_juice_box": { + "textures": "textures/items/apple_juice_box" + }, + "dn_sa:orange_juice_box": { + "textures": "textures/items/orange_juice_box" + }, + "dn_sa:big_burger": { + "textures": "textures/items/big_burger" + }, + "dn_sa:big_burger_rotten": { + "textures": "textures/items/big_burger_rotten" + }, + "dn_sa:burger": { + "textures": "textures/items/burger" + }, + "dn_sa:burger_rotten": { + "textures": "textures/items/burger_rotten" + }, + "dn_sa:cheese_burger": { + "textures": "textures/items/cheese_burger" + }, + "dn_sa:cheese_burger_rotten": { + "textures": "textures/items/cheese_burger_rotten" + }, + "dn_sa:burrito": { + "textures": "textures/items/burrito" + }, + "dn_sa:jianbing": { + "textures": "textures/items/jianbing" + }, + "dn_sa:jianbing_rotten": { + "textures": "textures/items/jianbing_rotten" + }, + "dn_sa:burrito_rotten": { + "textures": "textures/items/burrito_rotten" + }, + "dn_sa:hot_dog": { + "textures": "textures/items/hot_dog" + }, + "dn_sa:hot_dog_rotten": { + "textures": "textures/items/hot_dog_rotten" + }, + "dn_sa:taco": { + "textures": "textures/items/taco" + }, + "dn_sa:taco_rotten": { + "textures": "textures/items/taco_rotten" + }, + "dn_sa:toast": { + "textures": "textures/items/toast" + }, + "dn_sa:toast_rotten": { + "textures": "textures/items/toast_rotten" + }, + "dn_sa:waffles": { + "textures": "textures/items/waffles" + }, + "dn_sa:waffles_rotten": { + "textures": "textures/items/waffles_rotten" + }, + "dn_sa:biscuit": { + "textures": "textures/items/biscuit" + }, + "dn_sa:biscuit_rotten": { + "textures": "textures/items/biscuit_rotten" + }, + "dn_sa:donut": { + "textures": "textures/items/donut" + }, + "dn_sa:donut_rotten": { + "textures": "textures/items/donut_rotten" + }, + "dn_sa:candys": { + "textures": "textures/items/candys" + }, + "dn_sa:butter": { + "textures": "textures/items/butter" + }, + "dn_sa:cheese": { + "textures": "textures/items/cheese" + }, + "dn_sa:cheese_bread": { + "textures": "textures/items/cheese_bread" + }, + "dn_sa:chips": { + "textures": "textures/items/chips" + }, + "dn_sa:brigadeiro": { + "textures": "textures/items/brigadeiro" + }, + "dn_sa:coxinha": { + "textures": "textures/items/coxinha" + }, + "dn_sa:rotten_coxinha": { + "textures": "textures/items/rotten_coxinha" + }, + "dn_sa:raw_coxinha": { + "textures": "textures/items/raw_coxinha" + }, + "dn_sa:meat_pastel": { + "textures": "textures/items/meat_pastel" + }, + "dn_sa:raw_meat_pastel": { + "textures": "textures/items/raw_meat_pastel" + }, + "dn_sa:raw_cheese_pastel": { + "textures": "textures/items/raw_cheese_pastel" + }, + "dn_sa:raw_wind_pastel": { + "textures": "textures/items/raw_wind_pastel" + }, + "dn_sa:wind_pastel": { + "textures": "textures/items/wind_pastel" + }, + "dn_sa:pacoquita": { + "textures": "textures/items/pacoquita" + }, + "dn_sa:saltine_cracker": { + "textures": "textures/items/saltine_cracker" + }, + "dn_sa:pizza": { + "textures": "textures/items/pizza" + }, + "dn_sa:cereal_fruit_loops_flakes": { + "textures": "textures/items/cereal_fruit_loops_flakes" + }, + "dn_sa:cereal_kelloggys_flakes": { + "textures": "textures/items/cereal_kelloggys_flakes" + }, + "dn_sa:adhesive_tape": { + "textures": "textures/items/adhesive_tape" + }, + "dn_sa:alcohol": { + "textures": "textures/items/alcohol" + }, + "dn_sa:antiseptic": { + "textures": "textures/items/antiseptic" + }, + "dn_sa:ashen_steel_ingot": { + "textures": "textures/items/ashen_steel_ingot" + }, + "dn_sa:ashen_steel_mixture": { + "textures": "textures/items/ashen_steel_mixture" + }, + "dn_sa:ashen_steel_nugget": { + "textures": "textures/items/ashen_steel_nugget" + }, + "dn_sa:ashen_steel_rod": { + "textures": "textures/items/ashen_steel_rod" + }, + "dn_sa:battery": { + "textures": "textures/items/battery" + }, + "dn_sa:camera": { + "textures": "textures/items/camera" + }, + "dn_sa:cardboard": { + "textures": "textures/items/cardboard" + }, + "dn_sa:charcoal_dust": { + "textures": "textures/items/charcoal_dust" + }, + "dn_sa:classic_watch": { + "textures": "textures/items/classic_watch" + }, + "dn_sa:cleaning_liquid": { + "textures": "textures/items/cleaning_liquid" + }, + "dn_sa:cloth": { + "textures": "textures/items/cloth" + }, + "dn_sa:copper_wire": { + "textures": "textures/items/copper_wire" + }, + "dn_sa:dented_can": { + "textures": "textures/items/dented_can" + }, + "dn_sa:diamond_nugget": { + "textures": "textures/items/diamond_nugget" + }, + "dn_sa:dirty_rags": { + "textures": "textures/items/dirty_rags" + }, + "dn_sa:dish_towel": { + "textures": "textures/items/dish_towel" + }, + "dn_sa:duct_tape": { + "textures": "textures/items/duct_tape" + }, + "dn_sa:electric_scrap": { + "textures": "textures/items/electric_scrap" + }, + "dn_sa:empty_can": { + "textures": "textures/items/empty_can" + }, + "dn_sa:fabric_patch": { + "textures": "textures/items/fabric_patch" + }, + "dn_sa:fermented_mash": { + "textures": "textures/items/fermented_mash" + }, + "dn_sa:fiber_fabric": { + "textures": "textures/items/fiber_fabric" + }, + "dn_sa:gasoline_bucket": { + "textures": "textures/items/gasoline_bucket" + }, + "dn_sa:generator_manual": { + "textures": "textures/items/generator_manual" + }, + "dn_sa:glue": { + "textures": "textures/items/glue" + }, + "dn_sa:hair_gel": { + "textures": "textures/items/hair_gel" + }, + "dn_sa:insulated_copper_wire": { + "textures": "textures/items/insulated_copper_wire" + }, + "dn_sa:kevlar": { + "textures": "textures/items/kevlar" + }, + "dn_sa:kevlar_thread": { + "textures": "textures/items/kevlar_thread" + }, + "dn_sa:leather_strip": { + "textures": "textures/items/leather_strip" + }, + "dn_sa:lunch_bag": { + "textures": "textures/items/lunch_bag" + }, + "dn_sa:matchbox": { + "textures": "textures/items/matchbox" + }, + "dn_sa:medical_adhesive": { + "textures": "textures/items/medical_adhesive" + }, + "dn_sa:metal_pipe": { + "textures": "textures/items/metal_pipe" + }, + "dn_sa:metal_scrap": { + "textures": "textures/items/metal_scrap" + }, + "dn_sa:metal_sheet": { + "textures": "textures/items/metal_sheet" + }, + "dn_sa:money": { + "textures": "textures/items/money" + }, + "dn_sa:money_bundle": { + "textures": "textures/items/money_bundle" + }, + "dn_sa:nails": { + "textures": "textures/items/nails" + }, + "dn_sa:netherite_nugget": { + "textures": "textures/items/netherite_nugget" + }, + "dn_sa:paperclip": { + "textures": "textures/items/paperclip" + }, + "dn_sa:plastic": { + "textures": "textures/items/plastic" + }, + "dn_sa:plastic_bag": { + "textures": "textures/items/plastic_bag" + }, + "dn_sa:plastic_plate": { + "textures": "textures/items/plastic_plate" + }, + "dn_sa:polyester": { + "textures": "textures/items/polyester" + }, + "dn_sa:polyester_thread": { + "textures": "textures/items/polyester_thread" + }, + "dn_sa:rags": { + "textures": "textures/items/rags" + }, + "dn_sa:rubber": { + "textures": "textures/items/rubber" + }, + "dn_sa:rubbing_alcohol": { + "textures": "textures/items/rubbing_alcohol" + }, + "dn_sa:saw_blade": { + "textures": "textures/items/saw_blade" + }, + "dn_sa:scrap_nugget": { + "textures": "textures/items/scrap_nugget" + }, + "dn_sa:scrap_wood": { + "textures": "textures/items/scrap_wood" + }, + "dn_sa:screws": { + "textures": "textures/items/screws" + }, + "dn_sa:small_metal_sheet": { + "textures": "textures/items/small_metal_sheet" + }, + "dn_sa:sterilized_rags": { + "textures": "textures/items/sterilized_rags" + }, + "dn_sa:sulfur": { + "textures": "textures/items/sulfur" + }, + "dn_sa:sulfur_dust": { + "textures": "textures/items/sulfur_dust" + }, + "dn_sa:thread": { + "textures": "textures/items/thread" + }, + "dn_sa:tin_can": { + "textures": "textures/items/tin_can" + }, + "dn_sa:wire": { + "textures": "textures/items/wire" + } + } +} \ No newline at end of file diff --git a/resource_pack_t7eJjrxY/textures/items/adhesive_tape.png b/resource_pack_t7eJjrxY/textures/items/adhesive_tape.png new file mode 100644 index 0000000..17e3b30 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/adhesive_tape.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/alcohol.png b/resource_pack_t7eJjrxY/textures/items/alcohol.png new file mode 100644 index 0000000..b0ae3d0 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/alcohol.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/antiseptic.png b/resource_pack_t7eJjrxY/textures/items/antiseptic.png new file mode 100644 index 0000000..7a17c72 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/antiseptic.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/apple_juice_box.png b/resource_pack_t7eJjrxY/textures/items/apple_juice_box.png new file mode 100644 index 0000000..8ed95f4 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/apple_juice_box.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/ashen_steel_ingot.png b/resource_pack_t7eJjrxY/textures/items/ashen_steel_ingot.png new file mode 100644 index 0000000..4c32d25 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/ashen_steel_ingot.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/ashen_steel_mixture.png b/resource_pack_t7eJjrxY/textures/items/ashen_steel_mixture.png new file mode 100644 index 0000000..bc29313 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/ashen_steel_mixture.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/ashen_steel_nugget.png b/resource_pack_t7eJjrxY/textures/items/ashen_steel_nugget.png new file mode 100644 index 0000000..2784f4d Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/ashen_steel_nugget.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/ashen_steel_rod.png b/resource_pack_t7eJjrxY/textures/items/ashen_steel_rod.png new file mode 100644 index 0000000..01f79d9 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/ashen_steel_rod.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/battery.png b/resource_pack_t7eJjrxY/textures/items/battery.png new file mode 100644 index 0000000..bd7c039 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/battery.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/berry_juice_box.png b/resource_pack_t7eJjrxY/textures/items/berry_juice_box.png new file mode 100644 index 0000000..3389fd8 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/berry_juice_box.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/big_burger.png b/resource_pack_t7eJjrxY/textures/items/big_burger.png new file mode 100644 index 0000000..cddce3d Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/big_burger.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/big_burger_rotten.png b/resource_pack_t7eJjrxY/textures/items/big_burger_rotten.png new file mode 100644 index 0000000..2059e3b Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/big_burger_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/biscuit.png b/resource_pack_t7eJjrxY/textures/items/biscuit.png new file mode 100644 index 0000000..cba811a Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/biscuit.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/biscuit_rotten.png b/resource_pack_t7eJjrxY/textures/items/biscuit_rotten.png new file mode 100644 index 0000000..988aa51 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/biscuit_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/brigadeiro.png b/resource_pack_t7eJjrxY/textures/items/brigadeiro.png new file mode 100644 index 0000000..c7ff873 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/brigadeiro.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/burger.png b/resource_pack_t7eJjrxY/textures/items/burger.png new file mode 100644 index 0000000..4515c78 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/burger.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/burger_rotten.png b/resource_pack_t7eJjrxY/textures/items/burger_rotten.png new file mode 100644 index 0000000..b621506 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/burger_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/burrito.png b/resource_pack_t7eJjrxY/textures/items/burrito.png new file mode 100644 index 0000000..d6dc709 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/burrito.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/burrito_rotten.png b/resource_pack_t7eJjrxY/textures/items/burrito_rotten.png new file mode 100644 index 0000000..e4ad3ab Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/burrito_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/butter.png b/resource_pack_t7eJjrxY/textures/items/butter.png new file mode 100644 index 0000000..8c1a18f Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/butter.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/camera.png b/resource_pack_t7eJjrxY/textures/items/camera.png new file mode 100644 index 0000000..c27ed29 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/camera.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/candys.png b/resource_pack_t7eJjrxY/textures/items/candys.png new file mode 100644 index 0000000..0609544 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/candys.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cardboard.png b/resource_pack_t7eJjrxY/textures/items/cardboard.png new file mode 100644 index 0000000..a2988c7 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cardboard.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cereal_fruit_loops_flakes.png b/resource_pack_t7eJjrxY/textures/items/cereal_fruit_loops_flakes.png new file mode 100644 index 0000000..8c38e85 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cereal_fruit_loops_flakes.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cereal_kelloggys_flakes.png b/resource_pack_t7eJjrxY/textures/items/cereal_kelloggys_flakes.png new file mode 100644 index 0000000..00f7efd Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cereal_kelloggys_flakes.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/charcoal_dust.png b/resource_pack_t7eJjrxY/textures/items/charcoal_dust.png new file mode 100644 index 0000000..fac44fc Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/charcoal_dust.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cheese.png b/resource_pack_t7eJjrxY/textures/items/cheese.png new file mode 100644 index 0000000..936ab3b Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cheese.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cheese_bread.png b/resource_pack_t7eJjrxY/textures/items/cheese_bread.png new file mode 100644 index 0000000..206a38b Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cheese_bread.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cheese_burger.png b/resource_pack_t7eJjrxY/textures/items/cheese_burger.png new file mode 100644 index 0000000..e005ccf Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cheese_burger.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cheese_burger_rotten.png b/resource_pack_t7eJjrxY/textures/items/cheese_burger_rotten.png new file mode 100644 index 0000000..abcedd6 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cheese_burger_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/chips.png b/resource_pack_t7eJjrxY/textures/items/chips.png new file mode 100644 index 0000000..0799a42 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/chips.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/classic_watch.png b/resource_pack_t7eJjrxY/textures/items/classic_watch.png new file mode 100644 index 0000000..f3b77e0 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/classic_watch.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cleaning_liquid.png b/resource_pack_t7eJjrxY/textures/items/cleaning_liquid.png new file mode 100644 index 0000000..b237842 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cleaning_liquid.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/cloth.png b/resource_pack_t7eJjrxY/textures/items/cloth.png new file mode 100644 index 0000000..ee47482 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/cloth.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/copper_wire.png b/resource_pack_t7eJjrxY/textures/items/copper_wire.png new file mode 100644 index 0000000..86bb5af Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/copper_wire.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/coxinha.png b/resource_pack_t7eJjrxY/textures/items/coxinha.png new file mode 100644 index 0000000..0c439de Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/coxinha.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/dented_can.png b/resource_pack_t7eJjrxY/textures/items/dented_can.png new file mode 100644 index 0000000..c8b872d Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/dented_can.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/diamond_nugget.png b/resource_pack_t7eJjrxY/textures/items/diamond_nugget.png new file mode 100644 index 0000000..eb3ad82 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/diamond_nugget.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/dirty_rags.png b/resource_pack_t7eJjrxY/textures/items/dirty_rags.png new file mode 100644 index 0000000..8454764 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/dirty_rags.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/dish_towel.png b/resource_pack_t7eJjrxY/textures/items/dish_towel.png new file mode 100644 index 0000000..7b1d20c Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/dish_towel.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/donut.png b/resource_pack_t7eJjrxY/textures/items/donut.png new file mode 100644 index 0000000..e1a69a1 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/donut.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/donut_rotten.png b/resource_pack_t7eJjrxY/textures/items/donut_rotten.png new file mode 100644 index 0000000..d3c6990 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/donut_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/duct_tape.png b/resource_pack_t7eJjrxY/textures/items/duct_tape.png new file mode 100644 index 0000000..d0bc505 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/duct_tape.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/electric_scrap.png b/resource_pack_t7eJjrxY/textures/items/electric_scrap.png new file mode 100644 index 0000000..1ccdff5 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/electric_scrap.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/empty_can.png b/resource_pack_t7eJjrxY/textures/items/empty_can.png new file mode 100644 index 0000000..82df584 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/empty_can.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/empty_juice_box.png b/resource_pack_t7eJjrxY/textures/items/empty_juice_box.png new file mode 100644 index 0000000..1ae14e7 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/empty_juice_box.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/fabric_patch.png b/resource_pack_t7eJjrxY/textures/items/fabric_patch.png new file mode 100644 index 0000000..977d4c6 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/fabric_patch.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/fermented_mash.png b/resource_pack_t7eJjrxY/textures/items/fermented_mash.png new file mode 100644 index 0000000..bb32e11 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/fermented_mash.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/fiber_fabric.png b/resource_pack_t7eJjrxY/textures/items/fiber_fabric.png new file mode 100644 index 0000000..7727c68 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/fiber_fabric.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/gasoline_bucket.png b/resource_pack_t7eJjrxY/textures/items/gasoline_bucket.png new file mode 100644 index 0000000..137beff Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/gasoline_bucket.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/generator_manual.png b/resource_pack_t7eJjrxY/textures/items/generator_manual.png new file mode 100644 index 0000000..3e2d1ad Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/generator_manual.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/glue.png b/resource_pack_t7eJjrxY/textures/items/glue.png new file mode 100644 index 0000000..a59e127 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/glue.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/grape_juice_box.png b/resource_pack_t7eJjrxY/textures/items/grape_juice_box.png new file mode 100644 index 0000000..39799f8 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/grape_juice_box.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/hair_gel.png b/resource_pack_t7eJjrxY/textures/items/hair_gel.png new file mode 100644 index 0000000..bddd9e4 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/hair_gel.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/hot_dog.png b/resource_pack_t7eJjrxY/textures/items/hot_dog.png new file mode 100644 index 0000000..9a5ca00 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/hot_dog.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/hot_dog_rotten.png b/resource_pack_t7eJjrxY/textures/items/hot_dog_rotten.png new file mode 100644 index 0000000..9f8dbef Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/hot_dog_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/insulated_copper_wire.png b/resource_pack_t7eJjrxY/textures/items/insulated_copper_wire.png new file mode 100644 index 0000000..11d3645 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/insulated_copper_wire.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/jianbing.png b/resource_pack_t7eJjrxY/textures/items/jianbing.png new file mode 100644 index 0000000..991f2c2 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/jianbing.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/jianbing_rotten.png b/resource_pack_t7eJjrxY/textures/items/jianbing_rotten.png new file mode 100644 index 0000000..769a978 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/jianbing_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/kevlar.png b/resource_pack_t7eJjrxY/textures/items/kevlar.png new file mode 100644 index 0000000..3f7decc Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/kevlar.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/kevlar_thread.png b/resource_pack_t7eJjrxY/textures/items/kevlar_thread.png new file mode 100644 index 0000000..6e60c3d Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/kevlar_thread.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/leather_strip.png b/resource_pack_t7eJjrxY/textures/items/leather_strip.png new file mode 100644 index 0000000..859d31b Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/leather_strip.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/lunch_bag.png b/resource_pack_t7eJjrxY/textures/items/lunch_bag.png new file mode 100644 index 0000000..4aba5d9 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/lunch_bag.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/matchbox.png b/resource_pack_t7eJjrxY/textures/items/matchbox.png new file mode 100644 index 0000000..730be99 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/matchbox.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/meat_pastel.png b/resource_pack_t7eJjrxY/textures/items/meat_pastel.png new file mode 100644 index 0000000..4cd5c4d Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/meat_pastel.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/medical_adhesive.png b/resource_pack_t7eJjrxY/textures/items/medical_adhesive.png new file mode 100644 index 0000000..9f515e3 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/medical_adhesive.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/metal_pipe.png b/resource_pack_t7eJjrxY/textures/items/metal_pipe.png new file mode 100644 index 0000000..2c9e6e1 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/metal_pipe.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/metal_scrap.png b/resource_pack_t7eJjrxY/textures/items/metal_scrap.png new file mode 100644 index 0000000..d6f5841 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/metal_scrap.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/metal_sheet.png b/resource_pack_t7eJjrxY/textures/items/metal_sheet.png new file mode 100644 index 0000000..4aec7ab Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/metal_sheet.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/money.png b/resource_pack_t7eJjrxY/textures/items/money.png new file mode 100644 index 0000000..a2f5d10 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/money.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/money_bundle.png b/resource_pack_t7eJjrxY/textures/items/money_bundle.png new file mode 100644 index 0000000..5402052 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/money_bundle.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/nails.png b/resource_pack_t7eJjrxY/textures/items/nails.png new file mode 100644 index 0000000..6d59224 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/nails.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/netherite_nugget.png b/resource_pack_t7eJjrxY/textures/items/netherite_nugget.png new file mode 100644 index 0000000..38ac617 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/netherite_nugget.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/orange_juice_box.png b/resource_pack_t7eJjrxY/textures/items/orange_juice_box.png new file mode 100644 index 0000000..a35dd8a Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/orange_juice_box.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/pacoquita.png b/resource_pack_t7eJjrxY/textures/items/pacoquita.png new file mode 100644 index 0000000..0cce972 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/pacoquita.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/paperclip.png b/resource_pack_t7eJjrxY/textures/items/paperclip.png new file mode 100644 index 0000000..509c3df Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/paperclip.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/pizza.png b/resource_pack_t7eJjrxY/textures/items/pizza.png new file mode 100644 index 0000000..5e55707 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/pizza.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/plastic.png b/resource_pack_t7eJjrxY/textures/items/plastic.png new file mode 100644 index 0000000..4b20862 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/plastic.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/plastic_bag.png b/resource_pack_t7eJjrxY/textures/items/plastic_bag.png new file mode 100644 index 0000000..0e88d5e Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/plastic_bag.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/plastic_plate.png b/resource_pack_t7eJjrxY/textures/items/plastic_plate.png new file mode 100644 index 0000000..96298e0 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/plastic_plate.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/polyester.png b/resource_pack_t7eJjrxY/textures/items/polyester.png new file mode 100644 index 0000000..1b44810 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/polyester.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/polyester_thread.png b/resource_pack_t7eJjrxY/textures/items/polyester_thread.png new file mode 100644 index 0000000..a2d4849 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/polyester_thread.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/rags.png b/resource_pack_t7eJjrxY/textures/items/rags.png new file mode 100644 index 0000000..39cdedf Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/rags.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/raw_cheese_pastel.png b/resource_pack_t7eJjrxY/textures/items/raw_cheese_pastel.png new file mode 100644 index 0000000..96142ab Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/raw_cheese_pastel.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/raw_coxinha.png b/resource_pack_t7eJjrxY/textures/items/raw_coxinha.png new file mode 100644 index 0000000..d417fe4 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/raw_coxinha.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/raw_meat_pastel.png b/resource_pack_t7eJjrxY/textures/items/raw_meat_pastel.png new file mode 100644 index 0000000..9978209 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/raw_meat_pastel.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/raw_wind_pastel.png b/resource_pack_t7eJjrxY/textures/items/raw_wind_pastel.png new file mode 100644 index 0000000..ebe308c Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/raw_wind_pastel.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/rotten_coxinha.png b/resource_pack_t7eJjrxY/textures/items/rotten_coxinha.png new file mode 100644 index 0000000..bc4806f Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/rotten_coxinha.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/rubber.png b/resource_pack_t7eJjrxY/textures/items/rubber.png new file mode 100644 index 0000000..90de6cf Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/rubber.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/rubbing_alcohol.png b/resource_pack_t7eJjrxY/textures/items/rubbing_alcohol.png new file mode 100644 index 0000000..2bb78df Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/rubbing_alcohol.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/saltine_cracker.png b/resource_pack_t7eJjrxY/textures/items/saltine_cracker.png new file mode 100644 index 0000000..2a8b1e7 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/saltine_cracker.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/saw_blade.png b/resource_pack_t7eJjrxY/textures/items/saw_blade.png new file mode 100644 index 0000000..f4062f0 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/saw_blade.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/scrap_nugget.png b/resource_pack_t7eJjrxY/textures/items/scrap_nugget.png new file mode 100644 index 0000000..bf652ae Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/scrap_nugget.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/scrap_wood.png b/resource_pack_t7eJjrxY/textures/items/scrap_wood.png new file mode 100644 index 0000000..6001e30 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/scrap_wood.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/screws.png b/resource_pack_t7eJjrxY/textures/items/screws.png new file mode 100644 index 0000000..e130455 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/screws.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/small_metal_sheet.png b/resource_pack_t7eJjrxY/textures/items/small_metal_sheet.png new file mode 100644 index 0000000..ddc4948 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/small_metal_sheet.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/sterilized_rags.png b/resource_pack_t7eJjrxY/textures/items/sterilized_rags.png new file mode 100644 index 0000000..877fd79 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/sterilized_rags.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/sulfur.png b/resource_pack_t7eJjrxY/textures/items/sulfur.png new file mode 100644 index 0000000..e40cf5e Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/sulfur.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/sulfur_dust.png b/resource_pack_t7eJjrxY/textures/items/sulfur_dust.png new file mode 100644 index 0000000..640f769 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/sulfur_dust.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/taco.png b/resource_pack_t7eJjrxY/textures/items/taco.png new file mode 100644 index 0000000..d1c7fbd Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/taco.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/taco_rotten.png b/resource_pack_t7eJjrxY/textures/items/taco_rotten.png new file mode 100644 index 0000000..329d09d Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/taco_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/thread.png b/resource_pack_t7eJjrxY/textures/items/thread.png new file mode 100644 index 0000000..7d060d4 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/thread.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/tin_can.png b/resource_pack_t7eJjrxY/textures/items/tin_can.png new file mode 100644 index 0000000..96c6363 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/tin_can.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/toast.png b/resource_pack_t7eJjrxY/textures/items/toast.png new file mode 100644 index 0000000..1d9c7a2 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/toast.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/toast_rotten.png b/resource_pack_t7eJjrxY/textures/items/toast_rotten.png new file mode 100644 index 0000000..0586ca1 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/toast_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/waffles.png b/resource_pack_t7eJjrxY/textures/items/waffles.png new file mode 100644 index 0000000..47d527c Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/waffles.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/waffles_rotten.png b/resource_pack_t7eJjrxY/textures/items/waffles_rotten.png new file mode 100644 index 0000000..8f20d6c Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/waffles_rotten.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/wind_pastel.png b/resource_pack_t7eJjrxY/textures/items/wind_pastel.png new file mode 100644 index 0000000..77a8fe7 Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/wind_pastel.png differ diff --git a/resource_pack_t7eJjrxY/textures/items/wire.png b/resource_pack_t7eJjrxY/textures/items/wire.png new file mode 100644 index 0000000..f1dc05a Binary files /dev/null and b/resource_pack_t7eJjrxY/textures/items/wire.png differ diff --git a/resource_pack_t7eJjrxY/textures/terrain_texture.json b/resource_pack_t7eJjrxY/textures/terrain_texture.json new file mode 100644 index 0000000..5ff0599 --- /dev/null +++ b/resource_pack_t7eJjrxY/textures/terrain_texture.json @@ -0,0 +1,14 @@ +{ + "resource_pack_name": "vanilla", + "texture_name": "atlas.terrain", + "padding": 8, + "num_mip_levels": 4, + "texture_data": { + "dn_sa_generator": { + "textures": "textures/blocks/generator" + }, + "dn_sa_salvage_bin": { + "textures": "textures/blocks/salvage_bin" + } + } +} diff --git a/studio.json b/studio.json new file mode 100644 index 0000000..84802a7 --- /dev/null +++ b/studio.json @@ -0,0 +1,49 @@ +{ + "Source": "import", + "CreateVersion": "3.9.0.400525", + "EditVersion": "3.9.0.400525", + "OldEditCount": 0, + "NewEditCount": 1, + "OldComponents": [], + "Account": "3027246179@qq.com", + "UserName": "梦研汐凝", + "UserId": "13706", + "Id": "3768bd36e1da4a1cb7bd61534576037e", + "EditType": 2, + "IsMap": false, + "CreateNew": true, + "CodeEnable": false, + "CanPublishResourceComponent": true, + "EditName": "幸存者军火库", + "GameType": 1, + "WorldType": 1, + "Seed": "", + "BlockNums": [ + 0, + 0 + ], + "BornPoint": [ + 0, + 0, + 0 + ], + "SaveBackMapPath": null, + "SaveBackAddOnPath": "E:\\MCStudioDownload\\work\\3027246179@qq.com\\Cpp\\AddOn\\309c2d420bc84ee986db9cdd070ff02a", + "ResourceIds": [], + "EditAddOnPaths": [], + "NameSpace": "dn_sa", + "EditMaterialPaths": [], + "EditLogFilePath": "E:\\MCStudioDownload\\work\\editor\\edit.log", + "ServerName": "EXPR", + "StudioPort": 9283, + "DCWebUrl": "https://x19apigatewayexpr.nie.netease.com", + "ShowGuide": false, + "AssertCacheDir": "E:\\MCStudioDownload\\EngineAssert", + "ElkUrl": "https://x19mclexpr.nie.netease.com/client-log", + "ShowGpuDriverTips": false, + "StudioTempPath": "E:\\MCStudioDownload\\temp\\editorTemp", + "EditorResourcePackPath": "E:\\mcsd\\MCStudio\\data\\inner_res", + "EditDate": 1790769043, + "EditDuration": 1596, + "TestDuration": 102502 +} \ No newline at end of file diff --git a/work.mcscfg b/work.mcscfg new file mode 100644 index 0000000..7d499a5 --- /dev/null +++ b/work.mcscfg @@ -0,0 +1,63 @@ +{ + "UID": "3768bd36e1da4a1cb7bd61534576037e", + "Language": 0, + "Type": 7, + "Versions": [], + "JavaType": 8, + "Name": "幸存者军火库", + "UpdateTime": "2026-10-04T21:04:48.4687355+08:00", + "IconName": null, + "Md5": null, + "CloudMd5": null, + "HasEncrypt": true, + "TemplateType": 0, + "Difficulty": 1.0, + "Description": null, + "CloudItemsId": null, + "CloudItemVersion": null, + "IsCompetive": false, + "GameId": null, + "VersionSubDirs": null, + "PreComponentIds": null, + "IsPc": false, + "IsPreCom": false, + "CustomWorkDir": null, + "ImportHistoryList": null, + "OpenEditType": 0, + "EditMapUID": "", + "EditMapType": 1, + "TestMapUID": "", + "TestJavaMapType": 0, + "TestJavaGameVersion": "", + "TestJavaGameMode": 0, + "TestJavaType": 8, + "TestBonusChest": false, + "TestAllowCheat": true, + "TestAlwaysDay": false, + "TestDaylightCycle": true, + "TestKeepInventory": true, + "TestMobSpawn": true, + "TestMobGriefing": true, + "TestEntitiesDropLoot": true, + "TestWeatherCycle": true, + "TestCommandBlocksEnabled": true, + "TestRandomTickSpeed": 1, + "TestGenerateBuildings": true, + "TestSeed": "", + "TestCppMapType": 2, + "TestDifficulty": 2, + "TestCppGameMode": 1, + "TestExperimentalHoliday": false, + "TestExperimentalBiomes": false, + "TestIsHardcore": false, + "TestExperimentalModding": false, + "TestStartWithMap": false, + "TestRenderEngine": 0, + "SelectComponents": [ + "347076ca005d4cb5b6ca9f07dfefac24", + "309c2d420bc84ee986db9cdd070ff02a" + ], + "isSlim": false, + "UseLegacyEditor": null, + "CustomTags": [] +} \ No newline at end of file diff --git a/world_resource_packs.json b/world_resource_packs.json new file mode 100644 index 0000000..92d67bc --- /dev/null +++ b/world_resource_packs.json @@ -0,0 +1,11 @@ +[ + { + "pack_id": "14129e44-874a-4d2d-a63e-24184b8fef6c", + "type": "Addon", + "version": [ + 0, + 0, + 1 + ] + } +] \ No newline at end of file diff --git a/回收箱配方表.csv b/回收箱配方表.csv new file mode 100644 index 0000000..6290b38 --- /dev/null +++ b/回收箱配方表.csv @@ -0,0 +1,164 @@ +来源,可回收物,可回收物(中文),高级产物,高级产物(中文),回收类型,每次产出数量,成功率,进度,配方cookTime,配方文件 +sa_core核心,ancient_debris,远古残骸,minecraft:netherite_scrap,netherite_scrap,下界合金碎片,1,100%,直接满级领奖,160,netherite_scrap_from_ancient_debris +sa_core核心,netherite_axe,下界合金斧,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_axe +sa_core核心,netherite_boots,下界合金靴子,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_boots +sa_core核心,netherite_chestplate,下界合金胸甲,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_chestplate +sa_core核心,netherite_helmet,下界合金头盔,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_helmet +sa_core核心,netherite_hoe,下界合金锄,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_hoe +sa_core核心,netherite_leggings,下界合金护腿,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_leggings +sa_core核心,netherite_pickaxe,下界合金镐,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_pickaxe +sa_core核心,netherite_shovel,下界合金锹,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_shovel +sa_core核心,netherite_sword,下界合金剑,sa_core:netherite_nugget,下界合金粒,下界合金粒,3,50%,2级,64,netherite_nugget_from_netherite_sword +sa_core核心,plastic_plate,塑料板,sa_core:plastic,塑料,塑料,1,30%,1级,80,plastic_plate_to_plastic +sa_core核心,can_opener,开罐器,sa_core:scrap_nugget,废料粒,废料粒,2,30%,1级,100,can_opener +sa_core核心,dented_can,凹陷的罐子,sa_core:scrap_nugget,废料粒,废料粒,2,30%,1级,100,dented_can +sa_core核心,empty_can,空罐,sa_core:scrap_nugget,废料粒,废料粒,2,30%,1级,100,empty_can +sa_core核心,tin_can,锡罐,sa_core:scrap_nugget,废料粒,废料粒,2,30%,1级,100,tin_can +sa_core核心,gravel,沙砾,minecraft:flint,燧石,燧石,1,50%,2级,70,flint_from_gravel +sa_core核心,battery,电池,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,120,battery +sa_core核心,camera,相机,sa_core:electric_scrap,电子废料,电子废料,4,50%,2级,160,electric_scrap_from_camera +sa_core核心,cellphone,手机,sa_core:electric_scrap,电子废料,电子废料,6,70%,3级,220,electric_scrap_from_cellphone +sa_core核心,comparator,红石比较器,sa_core:electric_scrap,电子废料,电子废料,3,50%,2级,130,electric_scrap_from_comparator +sa_core核心,compass,指南针,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,100,electric_scrap_from_compass +sa_core核心,observer,侦测器,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,100,electric_scrap_from_observer +sa_core核心,redstone_lamp,红石灯,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,100,electric_scrap_from_redstone_lamp +sa_core核心,repeater,红石中继器,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,100,electric_scrap_from_repeater +sa_core核心,book,书,minecraft:leather,皮革,皮革,1,50%,2级,80,leather_from_book +sa_core核心,item_frame,物品展示框,minecraft:leather,皮革,皮革,1,50%,2级,80,leather_from_item_frame +sa_core核心,leather_boots,皮革靴子,minecraft:leather,皮革,皮革,2,50%,2级,80,leather_from_leather_boots +sa_core核心,leather_chestplate,皮革胸甲,minecraft:leather,皮革,皮革,4,50%,2级,120,leather_from_leather_chestplate +sa_core核心,leather_helmet,皮革头盔,minecraft:leather,皮革,皮革,2,50%,2级,80,leather_from_leather_helmet +sa_core核心,leather_horse_armor,皮革马铠,minecraft:leather,皮革,皮革,4,50%,2级,120,leather_from_leather_horse_armor +sa_core核心,leather_leggings,皮革护腿,minecraft:leather,皮革,皮革,3,50%,2级,100,leather_from_leather_leggings +sa_core核心,rotten_flesh,腐肉,minecraft:leather,皮革,皮革,1,50%,2级,100,leather_from_rotten_flesh +sa_core核心,saddle,鞍,minecraft:leather,皮革,皮革,3,50%,2级,120,leather_from_saddle +sa_core核心,bow,弓,minecraft:string,线,线,2,70%,3级,80,string_from_bow +sa_core核心,cobweb,蜘蛛网,minecraft:string,线,线,5,70%,3级,100,string_from_cobweb +sa_core核心,crossbow,弩,minecraft:string,线,线,2,70%,3级,100,string_from_crossbow +sa_core核心,fishing_rod,钓鱼竿,minecraft:string,线,线,1,70%,3级,70,string_from_fishing_rod +sa_core核心,minecraft:wool,minecraft:wool,minecraft:string,线,线,3,70%,3级,80,string_from_wool +sa_core核心,activator_rail,激活铁轨,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,96,metal_scrap_from_activator_rail +sa_core核心,anvil,铁砧,sa_core:metal_scrap,金属废料,金属废料,62,100%,直接满级领奖,600,metal_scrap_from_anvil +sa_core核心,blast_furnace,高炉,sa_core:metal_scrap,金属废料,金属废料,10,100%,直接满级领奖,184,metal_scrap_from_blast_furnace +sa_core核心,bucket,桶,sa_core:metal_scrap,金属废料,金属废料,6,70%,3级,120,metal_scrap_from_bucket +sa_core核心,cauldron,炼药锅,sa_core:metal_scrap,金属废料,金属废料,14,100%,直接满级领奖,240,metal_scrap_from_cauldron +sa_core核心,chain,锁链,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,96,metal_scrap_from_chain +sa_core核心,chainmail_boots,chainmail_boots,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,152,metal_scrap_from_chainmail_boots +sa_core核心,chainmail_chestplate,chainmail_chestplate,sa_core:metal_scrap,金属废料,金属废料,8,100%,直接满级领奖,264,metal_scrap_from_chainmail_chestplate +sa_core核心,chainmail_helmet,chainmail_helmet,sa_core:metal_scrap,金属废料,金属废料,5,70%,3级,184,metal_scrap_from_chainmail_helmet +sa_core核心,chainmail_leggings,chainmail_leggings,sa_core:metal_scrap,金属废料,金属废料,7,100%,直接满级领奖,240,metal_scrap_from_chainmail_leggings +sa_core核心,chipped_anvil,开裂的铁砧,sa_core:metal_scrap,金属废料,金属废料,45,100%,直接满级领奖,600,metal_scrap_from_chipped_anvil +sa_core核心,damaged_anvil,损坏的铁砧,sa_core:metal_scrap,金属废料,金属废料,30,100%,直接满级领奖,600,metal_scrap_from_damaged_anvil +sa_core核心,detector_rail,探测铁轨,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,96,metal_scrap_from_detector_rail +sa_core核心,flint_and_steel,打火石,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,96,metal_scrap_from_flint_and_steel +sa_core核心,heavy_weighted_pressure_plate,heavy_weighted_pressure_plate,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,112,metal_scrap_from_heavy_weighted_pressure_plate +sa_core核心,hopper,hopper,sa_core:metal_scrap,金属废料,金属废料,10,100%,直接满级领奖,184,metal_scrap_from_hopper +sa_core核心,iron_axe,铁斧,sa_core:metal_scrap,金属废料,金属废料,6,70%,3级,120,metal_scrap_from_iron_axe +sa_core核心,iron_bars,iron_bars,sa_core:metal_scrap,金属废料,金属废料,1,30%,1级,88,metal_scrap_from_iron_bars +sa_core核心,iron_block,铁块,sa_core:metal_scrap,金属废料,金属废料,18,100%,直接满级领奖,296,metal_scrap_from_iron_block +sa_core核心,iron_boots,铁靴子,sa_core:metal_scrap,金属废料,金属废料,8,100%,直接满级领奖,152,metal_scrap_from_iron_boots +sa_core核心,iron_chestplate,铁胸甲,sa_core:metal_scrap,金属废料,金属废料,16,100%,直接满级领奖,264,metal_scrap_from_iron_chestplate +sa_core核心,iron_door,iron_door,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,112,metal_scrap_from_iron_door +sa_core核心,iron_helmet,铁头盔,sa_core:metal_scrap,金属废料,金属废料,10,100%,直接满级领奖,184,metal_scrap_from_iron_helmet +sa_core核心,iron_hoe,铁锄,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,112,metal_scrap_from_iron_hoe +sa_core核心,iron_ingot,铁锭,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,96,metal_scrap_from_iron_ingot +sa_core核心,iron_leggings,铁护腿,sa_core:metal_scrap,金属废料,金属废料,14,100%,直接满级领奖,240,metal_scrap_from_iron_leggings +sa_core核心,iron_pickaxe,铁镐,sa_core:metal_scrap,金属废料,金属废料,6,70%,3级,120,metal_scrap_from_iron_pickaxe +sa_core核心,iron_shovel,铁锹,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,96,metal_scrap_from_iron_shovel +sa_core核心,iron_sword,铁剑,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,112,metal_scrap_from_iron_sword +sa_core核心,iron_trapdoor,铁活板门,sa_core:metal_scrap,金属废料,金属废料,8,100%,直接满级领奖,152,metal_scrap_from_iron_trapdoor +sa_core核心,metal_pipe,金属管,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,120,metal_pipe +sa_core核心,minecart,矿车,sa_core:metal_scrap,金属废料,金属废料,10,100%,直接满级领奖,184,metal_scrap_from_minecart +sa_core核心,pliers,钳子,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,120,pliers +sa_core核心,rail,铁轨,sa_core:metal_scrap,金属废料,金属废料,1,30%,1级,88,metal_scrap_from_rail +sa_core核心,saw,saw,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,120,metal_scrap_from_saw +sa_core核心,saw_blade,锯片,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,160,saw_blade +sa_core核心,scissor,scissor,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,120,metal_scrap_from_scissor +sa_core核心,shears,剪刀,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,112,metal_scrap_from_shears +sa_core核心,smithing_table,锻造台,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,152,metal_scrap_from_smithing_table +sa_core核心,classic_watch,经典手表,minecraft:gold_nugget,金粒,金粒,14,100%,直接满级领奖,152,gold_nugget_from_classic_watch +sa_core核心,clock,时钟,minecraft:gold_nugget,金粒,金粒,14,100%,直接满级领奖,152,gold_nugget_from_clock +sa_core核心,golden_axe,金斧,minecraft:gold_nugget,金粒,金粒,10,100%,直接满级领奖,120,gold_nugget_from_golden_axe +sa_core核心,golden_boots,金靴子,minecraft:gold_nugget,金粒,金粒,14,100%,直接满级领奖,152,gold_nugget_from_golden_boots +sa_core核心,golden_chestplate,金胸甲,minecraft:gold_nugget,金粒,金粒,28,100%,直接满级领奖,264,gold_nugget_from_golden_chestplate +sa_core核心,golden_helmet,金头盔,minecraft:gold_nugget,金粒,金粒,18,100%,直接满级领奖,184,gold_nugget_from_golden_helmet +sa_core核心,golden_hoe,金锄,minecraft:gold_nugget,金粒,金粒,7,100%,直接满级领奖,96,gold_nugget_from_golden_hoe +sa_core核心,golden_leggings,金护腿,minecraft:gold_nugget,金粒,金粒,25,100%,直接满级领奖,240,gold_nugget_from_golden_leggings +sa_core核心,golden_pickaxe,金镐,minecraft:gold_nugget,金粒,金粒,10,100%,直接满级领奖,120,gold_nugget_from_golden_pickaxe +sa_core核心,golden_shovel,金锹,minecraft:gold_nugget,金粒,金粒,3,50%,2级,64,gold_nugget_from_golden_shovel +sa_core核心,golden_sword,金剑,minecraft:gold_nugget,金粒,金粒,7,100%,直接满级领奖,96,gold_nugget_from_golden_sword +sa_core核心,powered_rail,充能铁轨,minecraft:gold_nugget,金粒,金粒,2,30%,1级,56,gold_nugget_from_powered_rail +sa_core核心,diamond_axe,钻石斧,sa_core:diamond_nugget,钻石粒,钻石粒,10,100%,直接满级领奖,120,diamond_nugget_from_diamond_axe +sa_core核心,diamond_boots,钻石靴子,sa_core:diamond_nugget,钻石粒,钻石粒,14,100%,直接满级领奖,152,diamond_nugget_from_diamond_boots +sa_core核心,diamond_chestplate,钻石胸甲,sa_core:diamond_nugget,钻石粒,钻石粒,28,100%,直接满级领奖,264,diamond_nugget_from_diamond_chestplate +sa_core核心,diamond_helmet,钻石头盔,sa_core:diamond_nugget,钻石粒,钻石粒,18,100%,直接满级领奖,184,diamond_nugget_from_diamond_helmet +sa_core核心,diamond_hoe,钻石锄,sa_core:diamond_nugget,钻石粒,钻石粒,7,100%,直接满级领奖,96,diamond_nugget_from_diamond_hoe +sa_core核心,diamond_leggings,钻石护腿,sa_core:diamond_nugget,钻石粒,钻石粒,25,100%,直接满级领奖,240,diamond_nugget_from_diamond_leggings +sa_core核心,diamond_pickaxe,钻石镐,sa_core:diamond_nugget,钻石粒,钻石粒,10,100%,直接满级领奖,120,diamond_nugget_from_diamond_pickaxe +sa_core核心,diamond_shovel,钻石锹,sa_core:diamond_nugget,钻石粒,钻石粒,3,50%,2级,64,diamond_nugget_from_diamond_shovel +sa_core核心,diamond_sword,钻石剑,sa_core:diamond_nugget,钻石粒,钻石粒,7,100%,直接满级领奖,96,diamond_nugget_from_diamond_sword +sa_decor装饰,attach_case,attach_case,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,2,30%,1级,130,attach_case +sa_decor装饰,gun_case,枪盒,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,2,30%,1级,140,gun_case +sa_decor装饰,gun_case_green,gun_case_green,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,2,30%,1级,140,gun_case_green +sa_decor装饰,handgun_case,handgun_case,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,2,30%,1级,130,handgun_case +sa_decor装饰,handgun_case_green,handgun_case_green,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,2,30%,1级,130,handgun_case_green +sa_decor装饰,plastic_chair_red,plastic_chair_red,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,2,30%,1级,120,plastic_chair_red +sa_decor装饰,plastic_chair_white,plastic_chair_white,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,2,30%,1级,120,plastic_chair_white +sa_decor装饰,plastic_table_red,plastic_table_red,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,3,50%,2级,140,plastic_table_red +sa_decor装饰,plastic_table_white,plastic_table_white,sa_core:plastic_plate,塑料板,sa_core:plastic_plate,3,50%,2级,140,plastic_table_white +sa_decor装饰,tire_block,tire_block,sa_core:rubber,rubber,sa_core:rubber,1,30%,1级,120,tire_block +sa_decor装饰,tire_block_stack2,tire_block_stack2,sa_core:rubber,rubber,sa_core:rubber,2,30%,1级,150,tire_block_stack2 +sa_decor装饰,tire_block_stack2v,tire_block_stack2v,sa_core:rubber,rubber,sa_core:rubber,2,30%,1级,150,tire_block_stack2v +sa_decor装饰,tire_block_stack3,tire_block_stack3,sa_core:rubber,rubber,sa_core:rubber,3,50%,2级,180,tire_block_stack3 +sa_decor装饰,tire_block_stack3v,tire_block_stack3v,sa_core:rubber,rubber,sa_core:rubber,3,50%,2级,180,tire_block_stack3v +sa_decor装饰,air_conditioner,空调,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,200,air_conditioner +sa_decor装饰,black_telephone,black_telephone,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,120,black_telephone +sa_decor装饰,broken_old_computer,broken_old_computer,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,140,broken_old_computer +sa_decor装饰,cash_register_machine,cash_register_machine,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,140,cash_register_machine +sa_decor装饰,electrical_box,electrical_box,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,200,electrical_box +sa_decor装饰,electrical_outlet,electrical_outlet,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,100,electrical_outlet +sa_decor装饰,freezer,freezer,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,180,freezer +sa_decor装饰,fridge,冰箱,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,180,fridge +sa_decor装饰,fuel_pump,fuel_pump,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,200,fuel_pump +sa_decor装饰,fuse_box,fuse_box,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,180,fuse_box +sa_decor装饰,light_switch,light_switch,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,100,light_switch +sa_decor装饰,microwave,微波炉,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,150,microwave +sa_decor装饰,military_radio,military_radio,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,160,military_radio +sa_decor装饰,old_computer,old_computer,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,180,old_computer +sa_decor装饰,pc,pc,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,180,pc +sa_decor装饰,pc_broken,pc_broken,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,140,pc_broken +sa_decor装饰,post_transformer,post_transformer,sa_core:electric_scrap,电子废料,电子废料,4,50%,2级,240,post_transformer +sa_decor装饰,radio,收音机,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,130,radio +sa_decor装饰,refrigerator,冰箱,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,180,refrigerator +sa_decor装饰,smart_tv,smart_tv,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,180,smart_tv +sa_decor装饰,smart_tv_broken,smart_tv_broken,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,140,smart_tv_broken +sa_decor装饰,stove,stove,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,160,stove +sa_decor装饰,stove_green,stove_green,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,160,stove_green +sa_decor装饰,stove_red,stove_red,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,160,stove_red +sa_decor装饰,tv,电视,sa_core:electric_scrap,电子废料,电子废料,2,30%,1级,160,tv +sa_decor装饰,tv_broken,tv_broken,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,120,tv_broken +sa_decor装饰,vending_machine,自动售货机,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,200,vending_machine +sa_decor装饰,white_telephone,white_telephone,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,120,white_telephone +sa_decor装饰,wire_connector,电线连接器,sa_core:electric_scrap,电子废料,电子废料,1,30%,1级,100,wire_connector +sa_decor装饰,ammo_box,弹药箱,sa_core:metal_scrap,金属废料,金属废料,3,50%,2级,140,ammo_box +sa_decor装饰,big_metal_locker,big_metal_locker,sa_core:metal_scrap,金属废料,金属废料,7,100%,直接满级领奖,190,big_metal_locker +sa_decor装饰,big_military_crate,big_military_crate,sa_core:metal_scrap,金属废料,金属废料,10,100%,直接满级领奖,220,big_military_crate +sa_decor装饰,dumpster,dumpster,sa_core:metal_scrap,金属废料,金属废料,6,70%,3级,200,dumpster +sa_decor装饰,dumpster_blue,dumpster_blue,sa_core:metal_scrap,金属废料,金属废料,6,70%,3级,200,dumpster_blue +sa_decor装饰,folding_chair_blue,folding_chair_blue,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,140,folding_chair_blue +sa_decor装饰,folding_chair_green,folding_chair_green,sa_core:metal_scrap,金属废料,金属废料,2,30%,1级,140,folding_chair_green +sa_decor装饰,gun_cabinet,gun_cabinet,sa_core:metal_scrap,金属废料,金属废料,6,70%,3级,180,gun_cabinet +sa_decor装饰,locker,储物柜,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,160,locker +sa_decor装饰,locker_gray,locker_gray,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,160,locker_gray +sa_decor装饰,locker_green,locker_green,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,160,locker_green +sa_decor装饰,locker_red,locker_red,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,160,locker_red +sa_decor装饰,metal_rack,metal_rack,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,160,metal_rack +sa_decor装饰,military_crate,military_crate,sa_core:metal_scrap,金属废料,金属废料,6,70%,3级,180,military_crate +sa_decor装饰,office_chair,office_chair,sa_core:metal_scrap,金属废料,金属废料,3,50%,2级,160,office_chair +sa_decor装饰,office_chair_blue,office_chair_blue,sa_core:metal_scrap,金属废料,金属废料,3,50%,2级,160,office_chair_blue +sa_decor装饰,office_chair_brown,office_chair_brown,sa_core:metal_scrap,金属废料,金属废料,3,50%,2级,160,office_chair_brown +sa_decor装饰,office_chair_green,office_chair_green,sa_core:metal_scrap,金属废料,金属废料,3,50%,2级,160,office_chair_green +sa_decor装饰,office_chair_red,office_chair_red,sa_core:metal_scrap,金属废料,金属废料,3,50%,2级,160,office_chair_red +sa_decor装饰,safe,保险箱,sa_core:metal_scrap,金属废料,金属废料,12,100%,直接满级领奖,240,safe +sa_decor装饰,small_gun_cabinet,small_gun_cabinet,sa_core:metal_scrap,金属废料,金属废料,4,50%,2级,160,small_gun_cabinet +sa_decor装饰,wall_metal_rack,wall_metal_rack,sa_core:metal_scrap,金属废料,金属废料,3,50%,2级,150,wall_metal_rack diff --git a/回收箱配方表.md b/回收箱配方表.md new file mode 100644 index 0000000..b61aa86 --- /dev/null +++ b/回收箱配方表.md @@ -0,0 +1,181 @@ +# 回收箱(sa_core:salvage_bin)完整配方表 + +机制:投料→按成功率即时判定,满8级可领取;成功率/进度由配方**高级产物**决定。 + + +## sa_core核心(98条) + +| 可回收物 | 可回收物(中文) | 高级产物 | 高级产物(中文) | 回收类型 | 每次产出数量 | 成功率 | 进度 | +|---|---|---|---|---|---|---|---| +| ancient_debris | 远古残骸 | minecraft:netherite_scrap | netherite_scrap | 下界合金碎片 | 1 | 100% | 直接满级领奖 | +| netherite_axe | 下界合金斧 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| netherite_boots | 下界合金靴子 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| netherite_chestplate | 下界合金胸甲 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| netherite_helmet | 下界合金头盔 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| netherite_hoe | 下界合金锄 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| netherite_leggings | 下界合金护腿 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| netherite_pickaxe | 下界合金镐 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| netherite_shovel | 下界合金锹 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| netherite_sword | 下界合金剑 | sa_core:netherite_nugget | 下界合金粒 | 下界合金粒 | 3 | 50% | 2级 | +| plastic_plate | 塑料板 | sa_core:plastic | 塑料 | 塑料 | 1 | 30% | 1级 | +| can_opener | 开罐器 | sa_core:scrap_nugget | 废料粒 | 废料粒 | 2 | 30% | 1级 | +| dented_can | 凹陷的罐子 | sa_core:scrap_nugget | 废料粒 | 废料粒 | 2 | 30% | 1级 | +| empty_can | 空罐 | sa_core:scrap_nugget | 废料粒 | 废料粒 | 2 | 30% | 1级 | +| tin_can | 锡罐 | sa_core:scrap_nugget | 废料粒 | 废料粒 | 2 | 30% | 1级 | +| gravel | 沙砾 | minecraft:flint | 燧石 | 燧石 | 1 | 50% | 2级 | +| battery | 电池 | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| camera | 相机 | sa_core:electric_scrap | 电子废料 | 电子废料 | 4 | 50% | 2级 | +| cellphone | 手机 | sa_core:electric_scrap | 电子废料 | 电子废料 | 6 | 70% | 3级 | +| comparator | 红石比较器 | sa_core:electric_scrap | 电子废料 | 电子废料 | 3 | 50% | 2级 | +| compass | 指南针 | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| observer | 侦测器 | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| redstone_lamp | 红石灯 | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| repeater | 红石中继器 | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| book | 书 | minecraft:leather | 皮革 | 皮革 | 1 | 50% | 2级 | +| item_frame | 物品展示框 | minecraft:leather | 皮革 | 皮革 | 1 | 50% | 2级 | +| leather_boots | 皮革靴子 | minecraft:leather | 皮革 | 皮革 | 2 | 50% | 2级 | +| leather_chestplate | 皮革胸甲 | minecraft:leather | 皮革 | 皮革 | 4 | 50% | 2级 | +| leather_helmet | 皮革头盔 | minecraft:leather | 皮革 | 皮革 | 2 | 50% | 2级 | +| leather_horse_armor | 皮革马铠 | minecraft:leather | 皮革 | 皮革 | 4 | 50% | 2级 | +| leather_leggings | 皮革护腿 | minecraft:leather | 皮革 | 皮革 | 3 | 50% | 2级 | +| rotten_flesh | 腐肉 | minecraft:leather | 皮革 | 皮革 | 1 | 50% | 2级 | +| saddle | 鞍 | minecraft:leather | 皮革 | 皮革 | 3 | 50% | 2级 | +| bow | 弓 | minecraft:string | 线 | 线 | 2 | 70% | 3级 | +| cobweb | 蜘蛛网 | minecraft:string | 线 | 线 | 5 | 70% | 3级 | +| crossbow | 弩 | minecraft:string | 线 | 线 | 2 | 70% | 3级 | +| fishing_rod | 钓鱼竿 | minecraft:string | 线 | 线 | 1 | 70% | 3级 | +| minecraft:wool | minecraft:wool | minecraft:string | 线 | 线 | 3 | 70% | 3级 | +| activator_rail | 激活铁轨 | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| anvil | 铁砧 | sa_core:metal_scrap | 金属废料 | 金属废料 | 62 | 100% | 直接满级领奖 | +| blast_furnace | 高炉 | sa_core:metal_scrap | 金属废料 | 金属废料 | 10 | 100% | 直接满级领奖 | +| bucket | 桶 | sa_core:metal_scrap | 金属废料 | 金属废料 | 6 | 70% | 3级 | +| cauldron | 炼药锅 | sa_core:metal_scrap | 金属废料 | 金属废料 | 14 | 100% | 直接满级领奖 | +| chain | 锁链 | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| chainmail_boots | chainmail_boots | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| chainmail_chestplate | chainmail_chestplate | sa_core:metal_scrap | 金属废料 | 金属废料 | 8 | 100% | 直接满级领奖 | +| chainmail_helmet | chainmail_helmet | sa_core:metal_scrap | 金属废料 | 金属废料 | 5 | 70% | 3级 | +| chainmail_leggings | chainmail_leggings | sa_core:metal_scrap | 金属废料 | 金属废料 | 7 | 100% | 直接满级领奖 | +| chipped_anvil | 开裂的铁砧 | sa_core:metal_scrap | 金属废料 | 金属废料 | 45 | 100% | 直接满级领奖 | +| damaged_anvil | 损坏的铁砧 | sa_core:metal_scrap | 金属废料 | 金属废料 | 30 | 100% | 直接满级领奖 | +| detector_rail | 探测铁轨 | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| flint_and_steel | 打火石 | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| heavy_weighted_pressure_plate | heavy_weighted_pressure_plate | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| hopper | hopper | sa_core:metal_scrap | 金属废料 | 金属废料 | 10 | 100% | 直接满级领奖 | +| iron_axe | 铁斧 | sa_core:metal_scrap | 金属废料 | 金属废料 | 6 | 70% | 3级 | +| iron_bars | iron_bars | sa_core:metal_scrap | 金属废料 | 金属废料 | 1 | 30% | 1级 | +| iron_block | 铁块 | sa_core:metal_scrap | 金属废料 | 金属废料 | 18 | 100% | 直接满级领奖 | +| iron_boots | 铁靴子 | sa_core:metal_scrap | 金属废料 | 金属废料 | 8 | 100% | 直接满级领奖 | +| iron_chestplate | 铁胸甲 | sa_core:metal_scrap | 金属废料 | 金属废料 | 16 | 100% | 直接满级领奖 | +| iron_door | iron_door | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| iron_helmet | 铁头盔 | sa_core:metal_scrap | 金属废料 | 金属废料 | 10 | 100% | 直接满级领奖 | +| iron_hoe | 铁锄 | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| iron_ingot | 铁锭 | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| iron_leggings | 铁护腿 | sa_core:metal_scrap | 金属废料 | 金属废料 | 14 | 100% | 直接满级领奖 | +| iron_pickaxe | 铁镐 | sa_core:metal_scrap | 金属废料 | 金属废料 | 6 | 70% | 3级 | +| iron_shovel | 铁锹 | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| iron_sword | 铁剑 | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| iron_trapdoor | 铁活板门 | sa_core:metal_scrap | 金属废料 | 金属废料 | 8 | 100% | 直接满级领奖 | +| metal_pipe | 金属管 | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| minecart | 矿车 | sa_core:metal_scrap | 金属废料 | 金属废料 | 10 | 100% | 直接满级领奖 | +| pliers | 钳子 | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| rail | 铁轨 | sa_core:metal_scrap | 金属废料 | 金属废料 | 1 | 30% | 1级 | +| saw | saw | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| saw_blade | 锯片 | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| scissor | scissor | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| shears | 剪刀 | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| smithing_table | 锻造台 | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| classic_watch | 经典手表 | minecraft:gold_nugget | 金粒 | 金粒 | 14 | 100% | 直接满级领奖 | +| clock | 时钟 | minecraft:gold_nugget | 金粒 | 金粒 | 14 | 100% | 直接满级领奖 | +| golden_axe | 金斧 | minecraft:gold_nugget | 金粒 | 金粒 | 10 | 100% | 直接满级领奖 | +| golden_boots | 金靴子 | minecraft:gold_nugget | 金粒 | 金粒 | 14 | 100% | 直接满级领奖 | +| golden_chestplate | 金胸甲 | minecraft:gold_nugget | 金粒 | 金粒 | 28 | 100% | 直接满级领奖 | +| golden_helmet | 金头盔 | minecraft:gold_nugget | 金粒 | 金粒 | 18 | 100% | 直接满级领奖 | +| golden_hoe | 金锄 | minecraft:gold_nugget | 金粒 | 金粒 | 7 | 100% | 直接满级领奖 | +| golden_leggings | 金护腿 | minecraft:gold_nugget | 金粒 | 金粒 | 25 | 100% | 直接满级领奖 | +| golden_pickaxe | 金镐 | minecraft:gold_nugget | 金粒 | 金粒 | 10 | 100% | 直接满级领奖 | +| golden_shovel | 金锹 | minecraft:gold_nugget | 金粒 | 金粒 | 3 | 50% | 2级 | +| golden_sword | 金剑 | minecraft:gold_nugget | 金粒 | 金粒 | 7 | 100% | 直接满级领奖 | +| powered_rail | 充能铁轨 | minecraft:gold_nugget | 金粒 | 金粒 | 2 | 30% | 1级 | +| diamond_axe | 钻石斧 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 10 | 100% | 直接满级领奖 | +| diamond_boots | 钻石靴子 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 14 | 100% | 直接满级领奖 | +| diamond_chestplate | 钻石胸甲 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 28 | 100% | 直接满级领奖 | +| diamond_helmet | 钻石头盔 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 18 | 100% | 直接满级领奖 | +| diamond_hoe | 钻石锄 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 7 | 100% | 直接满级领奖 | +| diamond_leggings | 钻石护腿 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 25 | 100% | 直接满级领奖 | +| diamond_pickaxe | 钻石镐 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 10 | 100% | 直接满级领奖 | +| diamond_shovel | 钻石锹 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 3 | 50% | 2级 | +| diamond_sword | 钻石剑 | sa_core:diamond_nugget | 钻石粒 | 钻石粒 | 7 | 100% | 直接满级领奖 | + +## sa_decor装饰(65条) + +| 可回收物 | 可回收物(中文) | 高级产物 | 高级产物(中文) | 回收类型 | 每次产出数量 | 成功率 | 进度 | +|---|---|---|---|---|---|---|---| +| attach_case | attach_case | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 2 | 30% | 1级 | +| gun_case | 枪盒 | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 2 | 30% | 1级 | +| gun_case_green | gun_case_green | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 2 | 30% | 1级 | +| handgun_case | handgun_case | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 2 | 30% | 1级 | +| handgun_case_green | handgun_case_green | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 2 | 30% | 1级 | +| plastic_chair_red | plastic_chair_red | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 2 | 30% | 1级 | +| plastic_chair_white | plastic_chair_white | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 2 | 30% | 1级 | +| plastic_table_red | plastic_table_red | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 3 | 50% | 2级 | +| plastic_table_white | plastic_table_white | sa_core:plastic_plate | 塑料板 | sa_core:plastic_plate | 3 | 50% | 2级 | +| tire_block | tire_block | sa_core:rubber | rubber | sa_core:rubber | 1 | 30% | 1级 | +| tire_block_stack2 | tire_block_stack2 | sa_core:rubber | rubber | sa_core:rubber | 2 | 30% | 1级 | +| tire_block_stack2v | tire_block_stack2v | sa_core:rubber | rubber | sa_core:rubber | 2 | 30% | 1级 | +| tire_block_stack3 | tire_block_stack3 | sa_core:rubber | rubber | sa_core:rubber | 3 | 50% | 2级 | +| tire_block_stack3v | tire_block_stack3v | sa_core:rubber | rubber | sa_core:rubber | 3 | 50% | 2级 | +| air_conditioner | 空调 | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| black_telephone | black_telephone | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| broken_old_computer | broken_old_computer | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| cash_register_machine | cash_register_machine | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| electrical_box | electrical_box | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| electrical_outlet | electrical_outlet | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| freezer | freezer | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| fridge | 冰箱 | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| fuel_pump | fuel_pump | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| fuse_box | fuse_box | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| light_switch | light_switch | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| microwave | 微波炉 | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| military_radio | military_radio | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| old_computer | old_computer | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| pc | pc | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| pc_broken | pc_broken | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| post_transformer | post_transformer | sa_core:electric_scrap | 电子废料 | 电子废料 | 4 | 50% | 2级 | +| radio | 收音机 | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| refrigerator | 冰箱 | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| smart_tv | smart_tv | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| smart_tv_broken | smart_tv_broken | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| stove | stove | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| stove_green | stove_green | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| stove_red | stove_red | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| tv | 电视 | sa_core:electric_scrap | 电子废料 | 电子废料 | 2 | 30% | 1级 | +| tv_broken | tv_broken | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| vending_machine | 自动售货机 | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| white_telephone | white_telephone | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| wire_connector | 电线连接器 | sa_core:electric_scrap | 电子废料 | 电子废料 | 1 | 30% | 1级 | +| ammo_box | 弹药箱 | sa_core:metal_scrap | 金属废料 | 金属废料 | 3 | 50% | 2级 | +| big_metal_locker | big_metal_locker | sa_core:metal_scrap | 金属废料 | 金属废料 | 7 | 100% | 直接满级领奖 | +| big_military_crate | big_military_crate | sa_core:metal_scrap | 金属废料 | 金属废料 | 10 | 100% | 直接满级领奖 | +| dumpster | dumpster | sa_core:metal_scrap | 金属废料 | 金属废料 | 6 | 70% | 3级 | +| dumpster_blue | dumpster_blue | sa_core:metal_scrap | 金属废料 | 金属废料 | 6 | 70% | 3级 | +| folding_chair_blue | folding_chair_blue | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| folding_chair_green | folding_chair_green | sa_core:metal_scrap | 金属废料 | 金属废料 | 2 | 30% | 1级 | +| gun_cabinet | gun_cabinet | sa_core:metal_scrap | 金属废料 | 金属废料 | 6 | 70% | 3级 | +| locker | 储物柜 | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| locker_gray | locker_gray | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| locker_green | locker_green | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| locker_red | locker_red | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| metal_rack | metal_rack | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| military_crate | military_crate | sa_core:metal_scrap | 金属废料 | 金属废料 | 6 | 70% | 3级 | +| office_chair | office_chair | sa_core:metal_scrap | 金属废料 | 金属废料 | 3 | 50% | 2级 | +| office_chair_blue | office_chair_blue | sa_core:metal_scrap | 金属废料 | 金属废料 | 3 | 50% | 2级 | +| office_chair_brown | office_chair_brown | sa_core:metal_scrap | 金属废料 | 金属废料 | 3 | 50% | 2级 | +| office_chair_green | office_chair_green | sa_core:metal_scrap | 金属废料 | 金属废料 | 3 | 50% | 2级 | +| office_chair_red | office_chair_red | sa_core:metal_scrap | 金属废料 | 金属废料 | 3 | 50% | 2级 | +| safe | 保险箱 | sa_core:metal_scrap | 金属废料 | 金属废料 | 12 | 100% | 直接满级领奖 | +| small_gun_cabinet | small_gun_cabinet | sa_core:metal_scrap | 金属废料 | 金属废料 | 4 | 50% | 2级 | +| wall_metal_rack | wall_metal_rack | sa_core:metal_scrap | 金属废料 | 金属废料 | 3 | 50% | 2级 | + +## 成功率换算规则 +- netherite_scrap → 100%(直接满级领奖);string → 70%,3级;leather / flint → 50%,2级 +- 其他按产物数量 value=(count+1)//2 限制1–4:1→30%·1级,2→50%·2级,3→70%·3级,4→100%·满级 diff --git a/回收箱配方表.xlsx b/回收箱配方表.xlsx new file mode 100644 index 0000000..17cf322 Binary files /dev/null and b/回收箱配方表.xlsx differ diff --git a/幸存者军火库-合成配方表.md b/幸存者军火库-合成配方表.md new file mode 100644 index 0000000..ed8fd8f --- /dev/null +++ b/幸存者军火库-合成配方表.md @@ -0,0 +1,114 @@ +# 幸存者军火库-合成配方表 + +## sa_core 原版合成 + +| 类型 | 产出/项目 | 配方/规则 | 备注 | +|---|---|---|---| +| 原版合成 | 螺丝刀 Screwdriver | 废料粒+金属废料+橡胶 / 铁粒+铁锭+橡胶 | 两个版本均可 | +| 原版合成 | 金属板 Metal Sheet | 羊角锤+铁锭 | 无合成格,锤击 | +| 原版合成 | 小金属板×4 | 金属板×1 | 拆解 | +| 原版合成 | 金属板 | 小金属板×4 | 拼合 | +| 原版合成 | 金属管 | 金属废料×3 | 竖排 | +| 原版合成 | 螺丝×4 | 铁粒+铁锭+钳子 | | +| 原版合成 | 回形针×2 | 废料粒×2 | | +| 原版合成 | 回形针×4 | 铁粒×2 | 铁版 | +| 原版合成 | 绝缘铜线×4 | 铜线×8 + 橡胶×1(3x3 边框) | | +| 原版合成 | 碎木料 | 任意木板×2 | | +| 原版合成 | 胶粘带 | 纸+史莱姆球 | | +| 原版合成 | 钉子盒 | 纸板×2+钉子+胶粘带 | 供给容器 | +| 原版合成 | 螺丝盒 | 纸板×2+螺丝+胶粘带 | 供给容器 | +| 原版合成 | 回形针盒 | 纸板×2+回形针+胶粘带 | 供给容器 | +| 原版合成 | 火药瓶 | 空玻璃瓶+火药+胶粘带 | 供给容器 | +| 原版合成 | 回收箱 | 金属废料×4 + 碎木料×3 | 3x3 字形 | +| 原版合成 | 固体燃料发电机 | 金属板×2+绝缘铜线+电子废料×2+熔炉+铁块×2+红石 | 高耗材 | + +## sa_combat 原版合成格 + +| 类型 | 产出/项目 | 配方/规则 | 备注 | +|---|---|---|---| +| 原版合成 | 军火台 | 金属板×2+螺丝+工作台+铁锭×3 | 合成格 3x3 | +| 原版合成 | 碎玻璃瓶 | 空玻璃瓶×1 | 无合成格 | +| 原版合成 | 木板 Plank | 碎木料×2 | | +| 原版合成 | 钉木板 | 碎木料×2+钉子×4+胶带 | | +| 原版合成 | 木矛 | 碎木料×2+木棍×2+绳索 | | +| 原版合成 | 厨刀矛 | 碎木料×2+木棍×2+铁锭+小金属板+绳索+胶带 | | +| 原版合成 | 废料刀矛 | 碎木料×2+木棍×2+小金属板×2+电线+胶带 | | +| 原版合成 | 碎玻璃矛 | 碎木料×2+木棍×2+空玻璃瓶+布料+胶带 | | +| 原版合成 | 擀面杖 | 橡木木板×2+木棍×2 | | +| 原版合成 | 停止牌 Stop Sign | sa_decor 停止牌 tag | 装饰兼容 | +| 原版合成 | 停止牌盾 | sa_decor 停止牌 tag+皮革条×2+橡胶+胶带 | 装饰兼容 | + +## sa_combat 军火台-杂项 + +| 类型 | 产出/项目 | 配方/规则 | 备注 | +|---|---|---|---| +| 军火台-杂项 | 武器零件×1 | 金属废料×12+小金属板×6+金属板×4+螺丝×16+电线×6+橡胶×4 | | +| 军火台-杂项 | 简易弩箭×6 | 木棍×3+燧石×2+羽毛×2+线+废料粒×2 | | +| 军火台-杂项 | 战术弩箭×6 | 木棍×3+铁粒×6+羽毛×2+凯夫拉线×2+小金属板×2 | | +| 军火台-杂项 | 维修套件I | 武器零件×2+金属废料×8+小金属板×4+螺丝×10+胶带×3+布料×2+胶水 | | +| 军火台-杂项 | 维修套件II | 武器零件×5+金属板×5+螺丝×14+橡胶×2+纤维织物×4+胶水 | | +| 军火台-杂项 | 维修套件III | 武器零件×8+灰钢锭×5+金属板×6+螺丝×18+凯夫拉线×6+钻石粒×8 | | +| 军火台-杂项 | 装甲板I | 武器零件×2+金属板×6+纤维织物×4+橡胶×3+螺丝×8+胶带×3 | | +| 军火台-杂项 | 装甲板II | 武器零件×5+金属板×8+凯夫拉×6+纤维织物×4+橡胶×4+螺丝×12 | | +| 军火台-杂项 | 装甲板III | 武器零件×8+灰钢锭×6+金属板×8+凯夫拉×10+钻石粒×8+下界合金粒×2+螺丝×16 | | +| 军火台-杂项 | 遥控引爆器 | 电子废料×3+绝缘铜线×3+电池×2+中继器+红石×3+塑料板×2+螺丝×6 | | +| 军火台-杂项 | 燃烧瓶 | 空玻璃瓶+酒精tag+布料+线 | 酒精饮品 tag | +| 军火台-杂项 | 管状炸弹 | 金属管+火药×4+电线+胶带+红石 | | +| 军火台-杂项 | 钉炸弹 | 金属管+火药×5+钉子×8+电线+胶带 | | +| 军火台-杂项 | 破片手雷 | 武器零件×2+金属板×3+火药×8+红石×2+螺丝×4 | | +| 军火台-杂项 | 燃烧手雷 | 武器零件×2+金属板×2+火药×4+烈焰粉×4+布料×2+红石×2 | | +| 军火台-杂项 | 烟雾弹 | 武器零件+金属板×2+火药×3+木炭×4+糖×3+红石 | | +| 军火台-杂项 | 废料头盔 | 金属废料×5+小金属板×3+布料×2+皮革条×2+胶带×2+螺丝×4 | | +| 军火台-杂项 | 废料胸甲 | 金属废料×10+金属板×4+布料×3+皮革条×3+胶带×3+螺丝×8 | | +| 军火台-杂项 | 废料护腿 | 金属废料×8+金属板×3+布料×3+皮革条×3+胶带×3+螺丝×6 | | +| 军火台-杂项 | 废料靴 | 金属废料×4+橡胶×3+皮革条×3+胶带×2+螺丝×4 | | +| 军火台-杂项 | 简易防化头罩 | 塑料×5+玻璃板×2+橡胶×2+纤维织物×2+胶带×3 | | +| 军火台-杂项 | 简易防化服 | 塑料×10+橡胶×4+纤维织物×4+胶带×4+线×2 | | +| 军火台-杂项 | 简易防化裤 | 塑料×8+橡胶×3+纤维织物×3+胶带×3 | | +| 军火台-杂项 | 简易防化靴 | 塑料×4+橡胶×5+纤维织物×2+胶带×2 | | +| 军火台-杂项 | 地雷 | 武器零件×3+重型测重压力板+金属板×6+火药×12+红石×3+电线×2+螺丝×10 | 需地雷蓝图 | +| 军火台-杂项 | C4 | 武器零件×5+手机+火药×16+塑料板×6+绝缘铜线×4+电子废料×4+胶带×2+红石×4 | 需C4蓝图 | + +## sa_combat 军火台-改装(Modifier) + +| 类型 | 产出/项目 | 配方/规则 | 备注 | +|---|---|---|---| +| 军火台-改装 | 棒球棒: 电击套件/带刺/锯刃/握把胶带/强化 | 武器零件×3-4 + 对应材料 | 通用改装 | +| 军火台-改装 | 铝棒: 砍刀头/尖刺 | 武器零件×3-4 + 对应材料 | | +| 军火台-改装 | 水管: 小刀 | 武器零件×3 + 小金属板×3+铁锭×2+螺丝×6+胶带 | | +| 军火台-改装 | 拳击手套: 刀刃 | 武器零件×4 + 小金属板×6+铁锭×3+螺丝×8+皮革条×3 | | +| 军火台-改装 | 垃圾桶盖盾/废料盾/防暴盾/停止牌盾/井盖盾: 尖刺 | 武器零件×3 + 钉子×10-14+金属废料+螺丝×6-8 | | +| 军火台-改装 | 战术弩: 望远镜/自动机构 | 武器零件×3-5 + 望远镜或中继器×2+电子废料+电池 | | +| 军火台-改装 | 简易弩: 瞄准镜 | 武器零件×3 + 玻璃板×2+小金属板×2+螺丝×4+胶带 | | +| 军火台-改装 | 钉枪: 枪托/消音器/扩容弹匣 | 武器零件×3-4 + 对应材料 | | +| 军火台-改装 | 大锤: 榴弹 | 武器零件×4 + 火药×6+金属板×3+钉子×6+电线×2+螺丝×6 | | + +## sa_combat 军火台-升级(Upgrade) + +| 类型 | 产出/项目 | 配方/规则 | 备注 | +|---|---|---|---| +| 军火台-升级 | 伤害/攻速/暴击/攻击距离 4 条 | 每条 5 级,材料逐级递进(武器零件+灰钢锭/钻石粒/下界合金粒) | 仅棒球棒示范,规则通用 | + +## sa-decor 装饰工作台(自动配方系统) + +| 类型 | 产出/项目 | 配方/规则 | 备注 | +|---|---|---|---| +| 工作台 | STORAGE 存储类 | 金属板/螺丝 为主的容器配方;纸板箱用纸板、木制用木板+钉子、家电类用金属板+电子废料+绝缘铜线 | 约 60+ 方块 | +| 工作台 | FUNCTIONAL 功能类 | 金属板/电子废料/绝缘铜线/红石 为主的电力与功能配方(灯、开关、电箱、车库门、消防栓等) | 约 80+ 方块 | +| 工作台 | DECOR 装饰类 | 建材/家具/标牌/门 配方,按子类给料(木制用木板、金属用金属板、路面用砾石/混凝土/砖等) | 约 200+ 方块 | +| 工作台 | MISC 杂项 | 金属废料×4+螺丝×4 兜底;交通锥、托盘堆叠特殊 | 少量 | +| 工作台 | 附加规则 | 带颜色关键词自动加对应染料;用了螺丝/钉子/金属管/线材会自动附加对应工具(螺丝刀/羊角锤/扳手/钳子,耗耐久不消耗);产出数:围栏8、线材4、表面方块4、衍生形状2-4、屋顶顶板2 | | +| 工作台 | 例外 | 以下方块不可在工作台合成:战利品专用(收银机/消防栓/冰箱/油泵/微波炉/变压器/炉灶/空投/售货机)、状态变体(破损/闪烁/熄灭)、换色变体、部分道具/围挡/锁/睡袋等 | | +| 工作台 | 连接工具 | 塑料板×2+电子废料+红石×2+绝缘铜线+螺丝刀(耗耐久) | 唯一独立物品配方 | + +## sa-decor 原版合成 + +| 类型 | 产出/项目 | 配方/规则 | 备注 | +|---|---|---|---| +| 原版合成 | 染色换色配方 | 任意同族方块 + 对应染料 → 换色变体 | 木椅/办公椅/折叠椅/塑料桌椅/军床/台灯/电话/垃圾箱/冰箱/储物柜/炉灶等 | +| 原版合成 | 抛光混凝土台阶×6 | 抛光混凝土×3 | +切石机×2 | +| 原版合成 | 抛光混凝土楼梯×4 | 抛光混凝土×6 | +切石机×1 | +| 原版合成 | 开裂抛光混凝土台阶/楼梯 | 开裂抛光混凝土 | 同上 | +| 原版合成 | 人行道混凝土台阶 | 人行道混凝土×3 | 切石机×2 | + +> 武器合成配方见《幸存者军火库武器数据》;回收机/回收箱配方见《回收箱配方表》;食物制作见《幸存者军火库食物表》。 \ No newline at end of file diff --git a/幸存者军火库-合成配方表.xlsx b/幸存者军火库-合成配方表.xlsx new file mode 100644 index 0000000..444b02e Binary files /dev/null and b/幸存者军火库-合成配方表.xlsx differ diff --git a/幸存者军火库-实体效果流体表.md b/幸存者军火库-实体效果流体表.md new file mode 100644 index 0000000..36d0eab --- /dev/null +++ b/幸存者军火库-实体效果流体表.md @@ -0,0 +1,82 @@ +# 幸存者军火库-实体效果流体表 + +共 56 条。 + +> 含实体、方块实体(BE)、状态效果、流体、粒子、GUI 菜单。sa-decor 方块实体为移植重点(网易侧需逐块配置 block_entity)。 + +| 类型 | 裸ID | 英文名 | 中文名 | 备注 | 大类 | +|---|---|---|---|---|---| + +**实体** + +| 实体 | thrown_item | Thrown Item | 投掷物 | 可抛掷物品的通用投射实体 | 实体 | +| 生物 | merchant | Merchant | 商人 | 交易 NPC | 实体 | +| 投射物 | tactical_bolt | Tactical Bolt | 战术弩箭 | | 实体 | +| 投射物 | nail | Nail | 钉子 | 钉炸弹飞钉 | 实体 | +| 投掷物 | frag_grenade | Frag Grenade | 破片手雷 | | 实体 | +| 投掷物 | incendiary_grenade | Incendiary Grenade | 燃烧手雷 | | 实体 | +| 投掷物 | smoke_grenade | Smoke Grenade | 烟雾弹 | | 实体 | +| 投掷物 | molotov | Molotov | 燃烧瓶 | | 实体 | +| 投掷物 | pipe_bomb | Pipe Bomb | 管状炸弹 | | 实体 | +| 投掷物 | nail_bomb | Nail Bomb | 钉炸弹 | | 实体 | +| 投掷物 | tactical_tomahawk | Thrown Tactical Tomahawk | 投掷战术手斧 | | 实体 | +| 实体 | seat | Seat | 座椅 | 可坐乘 | 实体 | +| 实体 | air_drop | Air Drop | 空投 | 空投箱 | 实体 | +| 投射物 | flare_projectile | Flare Projectile | 信号弹 | 信号枪发射 | 实体 | + +**方块实体** + +| 流体存储 | gas_barrel | Gas Barrel | 油桶 | 汽油桶/油桶(蓝绿红黄) | 方块实体 | +| 功能 | fire_hydrant | Fire Hydrant | 消防栓 | | 方块实体 | +| 功能 | stove | Stove | 炉灶 | 黑色/绿/红 | 方块实体 | +| 容器 | decor_container | Decor Container | 装饰容器 | 40+ 容器方块共用 | 方块实体 | +| 容器 | decor_multiblock_container | Decor Multiblock Container | 多格容器 | 大箱子/储物柜/冰箱等 28 方块 | 方块实体 | +| 功能 | structure_access_anchor | Structure Access Anchor | 结构访问锚点 | | 方块实体 | +| 屋顶 | camouflaged_roof | Camouflaged Roof | 迷彩屋顶 | 屋顶套件专用 | 方块实体 | +| 功能 | wall_clock | Wall Clock | 挂钟 | | 方块实体 | +| 功能 | fuel_pump | Fuel Pump | 油泵 | | 方块实体 | +| 功能 | drinking_fountain | Drinking Fountain | 饮水机 | | 方块实体 | +| 电力 | electrical_box | Electrical Box | 电箱 | | 方块实体 | +| 电力 | electrical_outlet | Electrical Outlet | 插座 | | 方块实体 | +| 电力 | fuse_box | Fuse Box | 保险丝盒 | | 方块实体 | +| 功能 | microwave | Microwave | 微波炉 | | 方块实体 | +| 灯光 | work_light | Work Light | 工作灯 | 便携/双三脚架工作灯 | 方块实体 | +| 灯光 | double_flourecent_lamp | Double Fluorescent Lamp | 双管荧光灯 | 含闪烁变体 | 方块实体 | +| 灯光 | lamp_block | Lamp Block | 灯具方块 | 含闪烁变体 | 方块实体 | +| 灯光 | small_lamp | Small Lamp | 小台灯 | 含闪烁变体 | 方块实体 | +| 电力 | wire_connector | Wire Connector | 电线连接器 | | 方块实体 | +| 电力 | light_switch | Light Switch | 电灯开关 | | 方块实体 | +| 载具 | sedan | Sedan | 轿车 | 轿车/皮卡/警车/面包车/救护车及破损变体共 15 | 方块实体 | +| 环境 | lying_corpse | Lying Corpse | 躺尸 | 尸体装饰 | 方块实体 | +| 功能 | garage_door | Garage Door | 车库门 | 黑色/金属/金属红/金属绿 | 方块实体 | +| 功能 | small_garage_door | Small Garage Door | 小车库门 | 金属红/绿/白 | 方块实体 | +| 容器 | visible_inventory_container | Visible Inventory Container | 可视容器 | 食品箱/厨房架/金属架/小枪柜 | 方块实体 | +| 安全 | keycard_reader | Keycard Reader | 门禁读卡器 | | 方块实体 | +| 环境 | loose_pickup | Loose Pickup | 散落拾取物 | 散落钥匙/门禁卡 | 方块实体 | + +**状态效果** + +| 效果 | bleeding | Bleeding | 出血 | 持续伤害 | 状态效果 | +| 效果 | electric_shock | Electric Shock | 电击 | 麻痹/伤害 | 状态效果 | + +**流体** + +| 流体 | gasoline | Gasoline | 汽油 | 发电机燃料 | 流体 | +| 流体 | dirty_water | Dirty Water | 脏水 | | 流体 | + +**粒子** + +| 粒子 | fly | Fly | 飞虫 | 环境飞虫 | 粒子 | +| 粒子 | red_smoke | Red Smoke | 红烟 | 信号弹烟雾 | 粒子 | + +**GUI** + +| 1 行 | decor_chest_9x1 | 菜单 | 9格箱子界面 | | GUI | +| 2 行 | decor_chest_9x2 | 菜单 | 18格箱子界面 | | GUI | +| 3 行 | decor_chest_9x3 | 菜单 | 27格箱子界面 | | GUI | +| 4 行 | decor_chest_9x4 | 菜单 | 36格箱子界面 | | GUI | +| 5 行 | decor_chest_9x5 | 菜单 | 45格箱子界面 | | GUI | +| 6 行 | decor_chest_9x6 | 菜单 | 54格箱子界面 | | GUI | +| 装饰配方制作 | decor_workbench | 菜单 | 装饰工作台 | | GUI | +| 魔杖 GUI | loot_crate_wand | 菜单 | 战利品配置 | | GUI | +| | loot_manager | 菜单 | 战利品管理器 | | GUI | \ No newline at end of file diff --git a/幸存者军火库-实体效果流体表.xlsx b/幸存者军火库-实体效果流体表.xlsx new file mode 100644 index 0000000..c151d82 Binary files /dev/null and b/幸存者军火库-实体效果流体表.xlsx differ diff --git a/幸存者军火库-方块总表.md b/幸存者军火库-方块总表.md new file mode 100644 index 0000000..a093b78 --- /dev/null +++ b/幸存者军火库-方块总表.md @@ -0,0 +1,469 @@ +# 幸存者军火库-方块总表 + +共 398 条。 + +> 范围:sa-lib(sa_core)、sa_survival、sa_combat、sa-decor 全部方块(sa-decor 377 项由 SADecorBlocks.java 自动解析)。 + +| 分类 | 裸ID | 英文名 | 中文名 | 备注 | 来源模组 | +|---|---|---|---|---|---| + +**机器** + +| 机器 | recycler | Recycler | 回收机 | 双格界面;处理回收配方需 40 FE/t,支持漏斗 | sa_core | +| 机器 | salvage_bin | Salvage Bin | 回收箱 | 手动回收,低回收率,无需电力 | sa_core | +| 机器 | solid_fuel_generator | Solid Fuel Generator | 固体燃料发电机 | 燃烧熔炉类固体燃料产 FE,低功率,无需手册 | sa_core | +| 机器 | generator | Gasoline Generator | 汽油发电机 | 高功率,只烧汽油;需完成发电机手册训练 | sa_core | + +**流体** + +| 流体 | gasoline | Gasoline | 汽油(流体方块) | Fluid 方块,非方块实体 | sa_core | + +**建材** + +| 建材 | ashen_steel_block | Ashen Steel Block | 灰钢块 | 灰钢锭合成块 | sa_core | +| 建材 | scrap_metal_block | Scrap Metal Block | 废金属块 | 金属废料合成块 | sa_core | +| 建材 | raw_sulfur_block | Raw Sulfur Block | 粗硫磺块 | 硫磺原矿块 | sa_core | +| 建材 | sulfur_ore | Sulfur Ore | 硫磺矿石 | 主世界矿石 | sa_core | + +**供给容器** + +| 供给容器 | box_of_nails | Box of Nails | 钉子盒 | SupplyContainer;内含钉子 | sa_core | +| 供给容器 | box_of_screws | Box of Screws | 螺丝盒 | SupplyContainer;内含螺丝 | sa_core | +| 供给容器 | box_of_paperclips | Box of Paperclips | 回形针盒 | SupplyContainer;内含回形针 | sa_core | +| 供给容器 | gunpowder_bottle | Gunpowder Bottle | 火药瓶 | SupplyContainer;内含火药 | sa_core | + +**功能性** + +| 功能性 | rope | Rope | 绳索(方块) | 可放置、可攀爬,落到其上免摔伤 | sa_core | + +**植物** + +| 植物 | green_herb | Green Herb | 绿色草药 | 可种植草药植物 | sa_survival | +| 植物 | red_herb | Red Herb | 红色草药 | 可种植草药植物 | sa_survival | +| 植物 | blue_herb | Blue Herb | 蓝色草药 | 可种植草药植物 | sa_survival | +| 植物 | yellow_herb | Yellow Herb | 黄色草药 | 可种植草药植物 | sa_survival | + +**工作台** + +| 工作台 | arsenal_table | Arsenal Table | 军火台 | 武器制作/升级/改装 GUI | sa_combat | + +**陷阱** + +| 陷阱 | land_mine | Land Mine | 地雷 | 踩踏触发爆炸 | sa_combat | +| 陷阱 | c4 | C4 | C4炸药 | 遥控引爆 | sa_combat | + +**围栏** + +| 围栏 | urban_fence | Urban Fence | Urban Fence | | sa_decor | +| 围栏 | urban_fence_wire | Urban Fence Wire | Urban Fence Wire | | sa_decor | +| 围栏 | whitewood_fence | | whitewood fence | | sa_decor | + +**家具** + +| 家具 | folding_chair_blue | Folding Chair | Folding Chair | | sa_decor | +| 家具 | folding_chair_green | Green Folding Chair | Green Folding Chair | | sa_decor | +| 家具 | military_bed | Military Bed | Military Bed | | sa_decor | +| 家具 | military_bed_blue | Blue Military Bed | Blue Military Bed | | sa_decor | +| 家具 | office_chair | Office Chair | Office Chair | | sa_decor | +| 家具 | office_chair_blue | Blue Office Chair | Blue Office Chair | | sa_decor | +| 家具 | office_chair_broken | Broken Office Chair | Broken Office Chair | | sa_decor | +| 家具 | office_chair_broken_blue | Broken Blue Office Chair | Broken Blue Office Chair | | sa_decor | +| 家具 | office_chair_broken_brown | Broken Brown Office Chair | Broken Brown Office Chair | | sa_decor | +| 家具 | office_chair_broken_green | Broken Green Office Chair | Broken Green Office Chair | | sa_decor | +| 家具 | office_chair_broken_red | Broken Red Office Chair | Broken Red Office Chair | | sa_decor | +| 家具 | office_chair_brown | Brown Office Chair | Brown Office Chair | | sa_decor | +| 家具 | office_chair_green | Green Office Chair | Green Office Chair | | sa_decor | +| 家具 | office_chair_red | Red Office Chair | Red Office Chair | | sa_decor | +| 家具 | plastic_chair_red | Red Plastic Chair | Red Plastic Chair | | sa_decor | +| 家具 | plastic_chair_white | Plastic Chair | Plastic Chair | | sa_decor | +| 家具 | plastic_table_red | Red Plastic Table | Red Plastic Table | | sa_decor | +| 家具 | plastic_table_white | Plastic Table | Plastic Table | | sa_decor | +| 家具 | white_smooth_table | White Smooth Table | White Smooth Table | | sa_decor | +| 家具 | wooden_seat | Wooden Seat | Wooden Seat | | sa_decor | +| 家具 | wooden_seat_beige | Beige Wooden Seat | Beige Wooden Seat | | sa_decor | +| 家具 | wooden_seat_blue | Blue Wooden Seat | Blue Wooden Seat | | sa_decor | +| 家具 | wooden_seat_gray | Gray Wooden Seat | Gray Wooden Seat | | sa_decor | +| 家具 | wooden_seat_green | Green Wooden Seat | Green Wooden Seat | | sa_decor | +| 家具 | wooden_seat_red | Red Wooden Seat | Red Wooden Seat | | sa_decor | +| 家具 | wooden_table | Wooden Table | Wooden Table | | sa_decor | + +**容器** + +| 容器 | ammo_box | Ammo Box | Ammo Box | | sa_decor | +| 容器 | ammo_box_stack_2 | Ammo Box Stack | Ammo Box Stack | | sa_decor | +| 容器 | ammo_box_stack_3 | Large Ammo Box Stack | Large Ammo Box Stack | | sa_decor | +| 容器 | ammo_box_stack_4 | Ammo Box Stack x4 | Ammo Box Stack x4 | | sa_decor | +| 容器 | ammo_props | Ammo Props | Ammo Props | | sa_decor | +| 容器 | attach_case | Attach Case | Attach Case | | sa_decor | +| 容器 | big_metal_locker | Big Metal Locker | Big Metal Locker | | sa_decor | +| 容器 | big_military_crate | Big Military Crate | Big Military Crate | | sa_decor | +| 容器 | birch_big_wooden_crate | Birch Big Wooden Crate | Birch Big Wooden Crate | | sa_decor | +| 容器 | birch_supply_crate | Birch Crate | Birch Crate | | sa_decor | +| 容器 | birch_wooden_drawer_double | Double Birch Wooden Drawer | Double Birch Wooden Drawer | | sa_decor | +| 容器 | birch_wooden_drawer_one | Birch Wooden Drawer | Birch Wooden Drawer | | sa_decor | +| 容器 | cabinet_double | Double Cabinet | Double Cabinet | | sa_decor | +| 容器 | cabinet_one | Cabinet | Cabinet | | sa_decor | +| 容器 | cardboard_box | Cardboard Box | Cardboard Box | | sa_decor | +| 容器 | cash_register_machine | Cash Register | Cash Register | | sa_decor | +| 容器 | counter_cabinet | Counter Cabinet | Counter Cabinet | | sa_decor | +| 容器 | double_wooden_supply_crate | Double Wooden Supply Crate | Double Wooden Supply Crate | | sa_decor | +| 容器 | dumpster | Dumpster | Dumpster | | sa_decor | +| 容器 | dumpster_blue | Blue Dumpster | Blue Dumpster | | sa_decor | +| 容器 | electrical_box | Electrical Box | Electrical Box | | sa_decor | +| 容器 | food_crate | Food Crate | Food Crate | | sa_decor | +| 容器 | freezer | Freezer | Freezer | | sa_decor | +| 容器 | fridge | Fridge | Fridge | | sa_decor | +| 容器 | fridge_green | Green Fridge | Green Fridge | | sa_decor | +| 容器 | fridge_red | Red Fridge | Red Fridge | | sa_decor | +| 容器 | fuse_box | Fuse Box | Fuse Box | | sa_decor | +| 容器 | garbage_bin | Garbage Bin | Garbage Bin | | sa_decor | +| 容器 | gun_cabinet | Gun Cabinet | Gun Cabinet | | sa_decor | +| 容器 | gun_case | Gun Case | Gun Case | | sa_decor | +| 容器 | gun_case_green | Green Gun Case | Green Gun Case | | sa_decor | +| 容器 | handgun_case | Handgun Case | Handgun Case | | sa_decor | +| 容器 | handgun_case_green | Green Handgun Case | Green Handgun Case | | sa_decor | +| 容器 | hospital_cabinet | Hospital Cabinet | Hospital Cabinet | | sa_decor | +| 容器 | kitchen_drawer | Kitchen Drawer | Kitchen Drawer | | sa_decor | +| 容器 | kitchen_shelf | Kitchen Shelf | Kitchen Shelf | | sa_decor | +| 容器 | locker | Locker | Locker | | sa_decor | +| 容器 | locker_gray | Gray Locker | Gray Locker | | sa_decor | +| 容器 | locker_green | Green Locker | Green Locker | | sa_decor | +| 容器 | locker_red | Red Locker | Red Locker | | sa_decor | +| 容器 | marketing_shelf | Marketing Shelf | Marketing Shelf | | sa_decor | +| 容器 | marketing_shelf_wooden | Wooden Marketing Shelf | Wooden Marketing Shelf | | sa_decor | +| 容器 | medicinal_cabinet | Medicinal Cabinet | Medicinal Cabinet | | sa_decor | +| 容器 | medicinal_crate | Medicinal Crate | Medicinal Crate | | sa_decor | +| 容器 | medium_cardboard_box | Medium Cardboard Box | Medium Cardboard Box | | sa_decor | +| 容器 | metal_counter_cabinet | Metal Counter Cabinet | Metal Counter Cabinet | | sa_decor | +| 容器 | metal_rack | Metal Rack | Metal Rack | | sa_decor | +| 容器 | metal_rack_side | Metal Rack Side | Metal Rack Side | | sa_decor | +| 容器 | military_crate | Military Crate | Military Crate | | sa_decor | +| 容器 | modern_trash_bin | Modern Trash Bin | Modern Trash Bin | | sa_decor | +| 容器 | oak_big_wooden_crate | Oak Big Wooden Crate | Oak Big Wooden Crate | | sa_decor | +| 容器 | oak_supply_crate | Oak Crate | Oak Crate | | sa_decor | +| 容器 | oak_wooden_drawer_double | Double Oak Wooden Drawer | Double Oak Wooden Drawer | | sa_decor | +| 容器 | oak_wooden_drawer_one | Oak Wooden Drawer | Oak Wooden Drawer | | sa_decor | +| 容器 | office_desk | Office Desk | Office Desk | | sa_decor | +| 容器 | safe | Safe | Safe | | sa_decor | +| 容器 | small_cardboard_box | Small Cardboard Box | Small Cardboard Box | | sa_decor | +| 容器 | small_cardboard_box_stack1 | Small Cardboard Boxes (2) | Small Cardboard Boxes (2) | | sa_decor | +| 容器 | small_cardboard_box_stack2 | Small Cardboard Boxes (3) | Small Cardboard Boxes (3) | | sa_decor | +| 容器 | small_cardboard_box_stack3 | Small Cardboard Boxes (4) | Small Cardboard Boxes (4) | | sa_decor | +| 容器 | small_gun_cabinet | Small Gun Cabinet | Small Gun Cabinet | | sa_decor | +| 容器 | spruce_big_wooden_crate | Spruce Big Wooden Crate | Spruce Big Wooden Crate | | sa_decor | +| 容器 | spruce_supply_crate | Spruce Crate | Spruce Crate | | sa_decor | +| 容器 | spruce_wooden_drawer_double | Double Spruce Wooden Drawer | Double Spruce Wooden Drawer | | sa_decor | +| 容器 | spruce_wooden_drawer_one | Spruce Wooden Drawer | Spruce Wooden Drawer | | sa_decor | +| 容器 | store_shelf | Store Shelf | Store Shelf | | sa_decor | +| 容器 | supply_drop | Supply Drop | Supply Drop | | sa_decor | +| 容器 | trash_bin | Trash Bin | Trash Bin | | sa_decor | +| 容器 | trash_can | Trash Can | Trash Can | | sa_decor | +| 容器 | trash_props | Trash Props | Trash Props | | sa_decor | +| 容器 | vending_machine | Vending Machine | Vending Machine | | sa_decor | +| 容器 | wall_metal_counter_cabinet | Wall Metal Counter Cabinet | Wall Metal Counter Cabinet | | sa_decor | +| 容器 | wall_metal_rack | Wall Metal Rack | Wall Metal Rack | | sa_decor | +| 容器 | wall_wooden_drawer | Wall Wooden Drawer | Wall Wooden Drawer | | sa_decor | +| 容器 | wall_wooden_drawer_glass | Glass Wall Wooden Drawer | Glass Wall Wooden Drawer | | sa_decor | +| 容器 | wardrobe | Wardrobe | Wardrobe | | sa_decor | +| 容器 | wooden_supply_crate | Wooden Supply Crate | Wooden Supply Crate | | sa_decor | + +**屋顶** + +| 屋顶 | framed_low_roof | Black Low Roof | Black Low Roof | | sa_decor | +| 屋顶 | framed_low_roof_top | Black Low Roof Ridge | Black Low Roof Ridge | | sa_decor | +| 屋顶 | framed_roof | Black Roof | Black Roof | | sa_decor | +| 屋顶 | framed_roof_top | Black Roof Ridge | Black Roof Ridge | | sa_decor | +| 屋顶 | framed_roof_top_slab | Black Roof Top Slab | Black Roof Top Slab | | sa_decor | + +**市政设施** + +| 市政设施 | drinking_fountain | Drinking Fountain | Drinking Fountain | | sa_decor | +| 市政设施 | fire_hydrant | Fire Hydrant | Fire Hydrant | | sa_decor | +| 市政设施 | fuel_pump | Fuel Pump | Fuel Pump | | sa_decor | +| 市政设施 | wires | Wires | Wires | | sa_decor | + +**建材** + +| 建材 | asphalt | Asphalt | Asphalt | | sa_decor | +| 建材 | asphalt_corner_white_line | Asphalt Corner White Line | Asphalt Corner White Line | | sa_decor | +| 建材 | asphalt_double_yellow_line | Asphalt Double Yellow Line | Asphalt Double Yellow Line | | sa_decor | +| 建材 | asphalt_white_line | Asphalt White Line | Asphalt White Line | | sa_decor | +| 建材 | beige_commercial_wall | Beige Commercial Wall | Beige Commercial Wall | | sa_decor | +| 建材 | black_commercial_floor | Black Commercial Floor | Black Commercial Floor | | sa_decor | +| 建材 | black_commercial_floor_slab | Black Commercial Floor Slab | Black Commercial Floor Slab | | sa_decor | +| 建材 | black_storefront_double_glass_panel | Black Storefront Double Glass Panel | Black Storefront Double Glass Panel | | sa_decor | +| 建材 | black_storefront_glass_panel | Black Storefront Glass Panel | Black Storefront Glass Panel | | sa_decor | +| 建材 | black_storefront_panel | Black Storefront Panel | Black Storefront Panel | | sa_decor | +| 建材 | blue_horizontal_siding | Blue Horizontal Siding | Blue Horizontal Siding | | sa_decor | +| 建材 | blue_horizontal_siding_slab | Blue Horizontal Siding Slab | Blue Horizontal Siding Slab | | sa_decor | +| 建材 | blue_horizontal_siding_stairs | Blue Horizontal Siding Stairs | Blue Horizontal Siding Stairs | | sa_decor | +| 建材 | blue_horizontal_siding_wall | Blue Horizontal Siding Wall | Blue Horizontal Siding Wall | | sa_decor | +| 建材 | broken_asphalt | Broken Asphalt | Broken Asphalt | | sa_decor | +| 建材 | broken_ceiling_tile | Broken Ceiling Tile | Broken Ceiling Tile | | sa_decor | +| 建材 | broken_cinder_block_wall | Broken Cinder Block Wall | Broken Cinder Block Wall | | sa_decor | +| 建材 | ceiling_tile | Ceiling Tile | Ceiling Tile | | sa_decor | +| 建材 | cinder_block_wall | Cinder Block Wall | Cinder Block Wall | | sa_decor | +| 建材 | concrete_barrier | Concrete Barrier | Concrete Barrier | | sa_decor | +| 建材 | concrete_barrier_big | Big Concrete Barrier | Big Concrete Barrier | | sa_decor | +| 建材 | concrete_barrier_break | Broken Concrete Barrier | Broken Concrete Barrier | | sa_decor | +| 建材 | concrete_barrier_small | Small Concrete Barrier | Small Concrete Barrier | | sa_decor | +| 建材 | concrete_barrier_smooth | Smooth Concrete Barrier | Smooth Concrete Barrier | | sa_decor | +| 建材 | cracked_asphalt | Cracked Asphalt | Cracked Asphalt | | sa_decor | +| 建材 | cracked_polished_concrete | Cracked Polished Concrete | Cracked Polished Concrete | | sa_decor | +| 建材 | cracked_polished_concrete_slab | Cracked Polished Concrete Slab | Cracked Polished Concrete Slab | | sa_decor | +| 建材 | cracked_polished_concrete_stairs | Cracked Polished Concrete Stairs | Cracked Polished Concrete Stairs | | sa_decor | +| 建材 | cracked_white_tiles | Cracked White Tiles | Cracked White Tiles | | sa_decor | +| 建材 | cracked_white_tiles_slab | Cracked White Tiles Slab | Cracked White Tiles Slab | | sa_decor | +| 建材 | damaged_dark_brick_wall | Damaged Dark Brick Wall | Damaged Dark Brick Wall | | sa_decor | +| 建材 | damaged_dark_brick_wall_slab | Damaged Dark Brick Wall Slab | Damaged Dark Brick Wall Slab | | sa_decor | +| 建材 | damaged_dark_brick_wall_stairs | Damaged Dark Brick Wall Stairs | Damaged Dark Brick Wall Stairs | | sa_decor | +| 建材 | damaged_dark_brick_wall_wall | Damaged Dark Brick Wall | Damaged Dark Brick Wall | | sa_decor | +| 建材 | dark_brick_wall | Dark Brick Wall | Dark Brick Wall | | sa_decor | +| 建材 | dark_brick_wall_slab | Dark Brick Wall Slab | Dark Brick Wall Slab | | sa_decor | +| 建材 | dark_brick_wall_stairs | Dark Brick Wall Stairs | Dark Brick Wall Stairs | | sa_decor | +| 建材 | dark_brick_wall_wall | Dark Brick Wall | Dark Brick Wall | | sa_decor | +| 建材 | dirty_beige_commercial_wall | Dirty Beige Commercial Wall | Dirty Beige Commercial Wall | | sa_decor | +| 建材 | floor_mirror | Floor Mirror | Floor Mirror | | sa_decor | +| 建材 | gray_paver_path | Gray Paver Path | Gray Paver Path | | sa_decor | +| 建材 | gray_paver_path_slab | Gray Paver Path Slab | Gray Paver Path Slab | | sa_decor | +| 建材 | gray_paver_path_stairs | Gray Paver Path Stairs | Gray Paver Path Stairs | | sa_decor | +| 建材 | gray_paver_path_wall | Gray Paver Path Wall | Gray Paver Path Wall | | sa_decor | +| 建材 | green_horizontal_siding | Green Horizontal Siding | Green Horizontal Siding | | sa_decor | +| 建材 | green_horizontal_siding_slab | Green Horizontal Siding Slab | Green Horizontal Siding Slab | | sa_decor | +| 建材 | green_horizontal_siding_stairs | Green Horizontal Siding Stairs | Green Horizontal Siding Stairs | | sa_decor | +| 建材 | green_horizontal_siding_wall | Green Horizontal Siding Wall | Green Horizontal Siding Wall | | sa_decor | +| 建材 | iron_duct | Iron Duct | Iron Duct | | sa_decor | +| 建材 | iron_duct_full | Iron Duct Full | Iron Duct Full | | sa_decor | +| 建材 | mustard_commercial_floor | Mustard Commercial Floor | Mustard Commercial Floor | | sa_decor | +| 建材 | mustard_commercial_floor_slab | Mustard Commercial Floor Slab | Mustard Commercial Floor Slab | | sa_decor | +| 建材 | polished_concrete | Polished Concrete | Polished Concrete | | sa_decor | +| 建材 | polished_concrete_slab | Polished Concrete Slab | Polished Concrete Slab | | sa_decor | +| 建材 | polished_concrete_stairs | Polished Concrete Stairs | Polished Concrete Stairs | | sa_decor | +| 建材 | red_horizontal_siding | Red Horizontal Siding | Red Horizontal Siding | | sa_decor | +| 建材 | red_horizontal_siding_slab | Red Horizontal Siding Slab | Red Horizontal Siding Slab | | sa_decor | +| 建材 | red_horizontal_siding_stairs | Red Horizontal Siding Stairs | Red Horizontal Siding Stairs | | sa_decor | +| 建材 | red_horizontal_siding_wall | Red Horizontal Siding Wall | Red Horizontal Siding Wall | | sa_decor | +| 建材 | sidewalk_concrete | Sidewalk Concrete | Sidewalk Concrete | | sa_decor | +| 建材 | sidewalk_concrete_slab | Sidewalk Concrete Slab | Sidewalk Concrete Slab | | sa_decor | +| 建材 | wall_clock | Wall Clock | Wall Clock | | sa_decor | +| 建材 | wall_vent | Wall Vent | Wall Vent | | sa_decor | +| 建材 | white_commercial_floor | White Commercial Floor | White Commercial Floor | | sa_decor | +| 建材 | white_commercial_floor_slab | White Commercial Floor Slab | White Commercial Floor Slab | | sa_decor | +| 建材 | white_horizontal_siding | White Horizontal Siding | White Horizontal Siding | | sa_decor | +| 建材 | white_horizontal_siding_slab | White Horizontal Siding Slab | White Horizontal Siding Slab | | sa_decor | +| 建材 | white_horizontal_siding_stairs | White Horizontal Siding Stairs | White Horizontal Siding Stairs | | sa_decor | +| 建材 | white_horizontal_siding_wall | White Horizontal Siding Wall | White Horizontal Siding Wall | | sa_decor | +| 建材 | white_plaster_wall | White Plaster Wall | White Plaster Wall | | sa_decor | +| 建材 | white_plaster_wall_slab | White Plaster Wall Slab | White Plaster Wall Slab | | sa_decor | +| 建材 | white_plaster_wall_stairs | White Plaster Wall Stairs | White Plaster Wall Stairs | | sa_decor | +| 建材 | white_plaster_wall_wall | White Plaster Wall | White Plaster Wall | | sa_decor | +| 建材 | white_tiles | White Tiles | White Tiles | | sa_decor | +| 建材 | white_tiles_slab | White Tiles Slab | White Tiles Slab | | sa_decor | + +**杂物** + +| 杂物 | blood_props | Blood Props | Blood Props | | sa_decor | +| 杂物 | dirty_props | Dirty Props | Dirty Props | | sa_decor | +| 杂物 | garbage_props | Garbage Props | Garbage Props | | sa_decor | +| 杂物 | grime | Grime | Grime | | sa_decor | +| 杂物 | grime_carpet | Grime Carpet | Grime Carpet | | sa_decor | +| 杂物 | medical_props | Medical Props | Medical Props | | sa_decor | +| 杂物 | paper_props | Paper Props | Paper Props | | sa_decor | + +**标牌** + +| 标牌 | danger_sign | Danger Sign | Danger Sign | | sa_decor | +| 标牌 | exit_sign | Exit Sign | Exit Sign | | sa_decor | +| 标牌 | road_sign_do_not_enter | Do Not Enter Road Sign | Do Not Enter Road Sign | | sa_decor | +| 标牌 | road_sign_no_entry | No Entry Road Sign | No Entry Road Sign | | sa_decor | +| 标牌 | road_sign_one_way | One Way Road Sign | One Way Road Sign | | sa_decor | +| 标牌 | road_sign_parking | Parking Road Sign | Parking Road Sign | | sa_decor | +| 标牌 | road_sign_sharp_curves | Sharp Curves Road Sign | Sharp Curves Road Sign | | sa_decor | +| 标牌 | road_sign_speed_limit_30 | Speed Limit 30 Road Sign | Speed Limit 30 Road Sign | | sa_decor | +| 标牌 | road_sign_stop | Stop Road Sign | Stop Road Sign | | sa_decor | +| 标牌 | umbrella_sign | Umbrella Sign | Umbrella Sign | | sa_decor | + +**灯具** + +| 灯具 | black_desk_lamp | Black Desk Lamp | Black Desk Lamp | | sa_decor | +| 灯具 | blue_desk_lamp | Blue Desk Lamp | Blue Desk Lamp | | sa_decor | +| 灯具 | broken_light_asphalt | Broken Light Asphalt | Broken Light Asphalt | | sa_decor | +| 灯具 | construction_barrier_break_no_lamp | Broken Construction Barrier No Lamp | Broken Construction Barrier No Lamp | | sa_decor | +| 灯具 | construction_barrier_no_lamp | Construction Barrier No Lamp | Construction Barrier No Lamp | | sa_decor | +| 灯具 | cracked_light_asphalt | Cracked Light Asphalt | Cracked Light Asphalt | | sa_decor | +| 灯具 | double_flourecent_lamp | Double Fluorescent Lamp | Double Fluorescent Lamp | | sa_decor | +| 灯具 | double_flourecent_lamp_broken | Broken Double Fluorescent Lamp | Broken Double Fluorescent Lamp | | sa_decor | +| 灯具 | double_flourecent_lamp_flickering | Flickering Double Fluorescent Lamp | Flickering Double Fluorescent Lamp | | sa_decor | +| 灯具 | dual_tripod_work_light | Dual Tripod Work Light | Dual Tripod Work Light | | sa_decor | +| 灯具 | lamp_block | Lamp Block | Lamp Block | | sa_decor | +| 灯具 | lamp_block_flickering | Flickering Lamp Block | Flickering Lamp Block | | sa_decor | +| 灯具 | light_asphalt | Light Asphalt | Light Asphalt | | sa_decor | +| 灯具 | light_asphalt_corner_white_line | Light Asphalt Corner White Line | Light Asphalt Corner White Line | | sa_decor | +| 灯具 | light_switch | Light Switch | Light Switch | | sa_decor | +| 灯具 | portable_work_light | Portable Work Light | Portable Work Light | | sa_decor | +| 灯具 | road_sign_traffic_light_warning | Traffic Light Warning Road Sign | Traffic Light Warning Road Sign | | sa_decor | +| 灯具 | small_lamp | Small Lamp | Small Lamp | | sa_decor | +| 灯具 | small_lamp_flickering | Flickering Small Lamp | Flickering Small Lamp | | sa_decor | +| 灯具 | street_light_arm | Street Light Arm | Street Light Arm | | sa_decor | +| 灯具 | street_light_base | Street Light Base | Street Light Base | | sa_decor | +| 灯具 | street_light_lamp_broken | Broken Street Light Lamp | Broken Street Light Lamp | | sa_decor | +| 灯具 | street_light_lamp_flickering | Flickering Street Light Lamp | Flickering Street Light Lamp | | sa_decor | +| 灯具 | street_light_lamp_off | Street Light Lamp Off | Street Light Lamp Off | | sa_decor | +| 灯具 | street_light_lamp_on | Street Light Lamp | Street Light Lamp | | sa_decor | +| 灯具 | street_light_pole | Street Light Pole | Street Light Pole | | sa_decor | +| 灯具 | street_light_support_arm | Street Light Support Arm | Street Light Support Arm | | sa_decor | +| 灯具 | street_light_top | Street Light Top | Street Light Top | | sa_decor | +| 灯具 | work_light_beam | | work light beam | | sa_decor | + +**装饰** + +| 装饰 | air_conditioner | Air Conditioner | Air Conditioner | | sa_decor | +| 装饰 | backpack_loot | Loot Backpack | Loot Backpack | | sa_decor | +| 装饰 | barbed_wire | Barbed Wire | Barbed Wire | | sa_decor | +| 装饰 | barricade | Barricade | Barricade | | sa_decor | +| 装饰 | bathroom_sink | Bathroom Sink | Bathroom Sink | | sa_decor | +| 装饰 | bear_trap | Bear Trap | Bear Trap | | sa_decor | +| 装饰 | big_barricade | Big Barricade | Big Barricade | | sa_decor | +| 装饰 | black_shutter | Black Shutter | Black Shutter | | sa_decor | +| 装饰 | black_telephone | Black Telephone | Black Telephone | | sa_decor | +| 装饰 | blue_side_bars | Blue Side Bars | Blue Side Bars | | sa_decor | +| 装饰 | brazil_flag | Brazilian Flag | Brazilian Flag | | sa_decor | +| 装饰 | broken_cinder_block | Broken Cinder Block | Broken Cinder Block | | sa_decor | +| 装饰 | broken_cinder_block_slab | Broken Cinder Block Slab | Broken Cinder Block Slab | | sa_decor | +| 装饰 | broken_cinder_block_stairs | Broken Cinder Block Stairs | Broken Cinder Block Stairs | | sa_decor | +| 装饰 | broken_glass | Broken Glass | Broken Glass | | sa_decor | +| 装饰 | broken_old_computer | Broken Old Computer | Broken Old Computer | | sa_decor | +| 装饰 | cinder_block | Cinder Block | Cinder Block | | sa_decor | +| 装饰 | cinder_block_slab | Cinder Block Slab | Cinder Block Slab | | sa_decor | +| 装饰 | cinder_block_stairs | Cinder Block Stairs | Cinder Block Stairs | | sa_decor | +| 装饰 | decor_workbench | | decor workbench | | sa_decor | +| 装饰 | electrical_outlet | Electrical Outlet | Electrical Outlet | | sa_decor | +| 装饰 | fire_escape_platform | Fire Escape Platform | Fire Escape Platform | | sa_decor | +| 装饰 | fire_escape_railing | Fire Escape Railing | Fire Escape Railing | | sa_decor | +| 装饰 | fire_escape_stairs | Fire Escape Stairs | Fire Escape Stairs | | sa_decor | +| 装饰 | fly_emitter | Fly Emitter | Fly Emitter | | sa_decor | +| 装饰 | fly_emitter | | fly emitter | | sa_decor | +| 装饰 | gas_barrel | Gas Barrel | Gas Barrel | | sa_decor | +| 装饰 | gray_fire_escape_platform | Gray Fire Escape Platform | Gray Fire Escape Platform | | sa_decor | +| 装饰 | gray_fire_escape_railing | Gray Fire Escape Railing | Gray Fire Escape Railing | | sa_decor | +| 装饰 | gray_fire_escape_stairs | Gray Fire Escape Stairs | Gray Fire Escape Stairs | | sa_decor | +| 装饰 | gray_industrial_ladder | Gray Industrial Ladder | Gray Industrial Ladder | | sa_decor | +| 装饰 | gutter | Gutter | Gutter | | sa_decor | +| 装饰 | gutter_tube | Gutter Tube | Gutter Tube | | sa_decor | +| 装饰 | highway_guardrail | Highway Guardrail | Highway Guardrail | | sa_decor | +| 装饰 | hospital_curtain | Hospital Curtain | Hospital Curtain | | sa_decor | +| 装饰 | hospital_curtain_big | Big Hospital Curtain | Big Hospital Curtain | | sa_decor | +| 装饰 | industrial_ladder | Industrial Ladder | Industrial Ladder | | sa_decor | +| 装饰 | iv_stand | IV Stand | IV Stand | | sa_decor | +| 装饰 | keycard_reader | Keycard Reader | Keycard Reader | | sa_decor | +| 装饰 | kitchen_cover | Kitchen Cover | Kitchen Cover | | sa_decor | +| 装饰 | kitchen_sink | Kitchen Sink | Kitchen Sink | | sa_decor | +| 装饰 | loose_key | Key | Key | | sa_decor | +| 装饰 | loose_keycard | Keycard | Keycard | | sa_decor | +| 装饰 | lying_corpse | Lying Corpse | Lying Corpse | | sa_decor | +| 装饰 | manhole | Manhole | Manhole | | sa_decor | +| 装饰 | metal_counter | Metal Counter | Metal Counter | | sa_decor | +| 装饰 | microwave | Microwave | Microwave | | sa_decor | +| 装饰 | military_radio | Military Radio | Military Radio | | sa_decor | +| 装饰 | mirror | Mirror | Mirror | | sa_decor | +| 装饰 | noteboard | Noteboard | Noteboard | | sa_decor | +| 装饰 | oil_barrel | Oil Barrel | Oil Barrel | | sa_decor | +| 装饰 | oil_barrel_blue | Blue Oil Barrel | Blue Oil Barrel | | sa_decor | +| 装饰 | oil_barrel_green | Green Oil Barrel | Green Oil Barrel | | sa_decor | +| 装饰 | oil_barrel_red | Red Oil Barrel | Red Oil Barrel | | sa_decor | +| 装饰 | oil_barrel_yellow | Yellow Oil Barrel | Yellow Oil Barrel | | sa_decor | +| 装饰 | old_computer | Old Computer | Old Computer | | sa_decor | +| 装饰 | padlock_attachment | | padlock attachment | | sa_decor | +| 装饰 | park_bench | Park Bench | Park Bench | | sa_decor | +| 装饰 | pc | PC | PC | | sa_decor | +| 装饰 | pc_broken | Broken PC | Broken PC | | sa_decor | +| 装饰 | planks_pallet_stack1 | Planks Pallet | Planks Pallet | | sa_decor | +| 装饰 | planks_pallet_stack2 | Stacked Planks Pallet | Stacked Planks Pallet | | sa_decor | +| 装饰 | planks_pallet_stack3 | Tall Planks Pallet | Tall Planks Pallet | | sa_decor | +| 装饰 | post_transformer | Post Transformer | Post Transformer | | sa_decor | +| 装饰 | radio | Radio | Radio | | sa_decor | +| 装饰 | red_sleeping_bag | Red Sleeping Bag | Red Sleeping Bag | | sa_decor | +| 装饰 | refrigerator | Refrigerator | Refrigerator | | sa_decor | +| 装饰 | sand_bag | Sand Bag | Sand Bag | | sa_decor | +| 装饰 | shutter_leaf | Open Shutter | Open Shutter | | sa_decor | +| 装饰 | small_mirror | Small Mirror | Small Mirror | | sa_decor | +| 装饰 | smart_tv | Smart TV | Smart TV | | sa_decor | +| 装饰 | smart_tv_broken | Broken Smart TV | Broken Smart TV | | sa_decor | +| 装饰 | stove | Stove | Stove | | sa_decor | +| 装饰 | stove_green | Green Stove | Green Stove | | sa_decor | +| 装饰 | stove_red | Red Stove | Red Stove | | sa_decor | +| 装饰 | structure_access_anchor | | structure access anchor | | sa_decor | +| 装饰 | tire_block | Tire Block | Tire Block | | sa_decor | +| 装饰 | tire_block_stack2 | Tire Block Stack | Tire Block Stack | | sa_decor | +| 装饰 | tire_block_stack2v | Tire Block Stack Variant | Tire Block Stack Variant | | sa_decor | +| 装饰 | tire_block_stack3 | Tall Tire Block Stack | Tall Tire Block Stack | | sa_decor | +| 装饰 | tire_block_stack3v | Tall Tire Block Stack Variant | Tall Tire Block Stack Variant | | sa_decor | +| 装饰 | toilet | Toilet | Toilet | | sa_decor | +| 装饰 | toilet_paper | Toilet Paper | Toilet Paper | | sa_decor | +| 装饰 | tool_storage | Tool Storage | Tool Storage | | sa_decor | +| 装饰 | traffic_cone | Traffic Cone | Traffic Cone | | sa_decor | +| 装饰 | traffic_cone_tall | Tall Traffic Cone | Tall Traffic Cone | | sa_decor | +| 装饰 | tv | TV | TV | | sa_decor | +| 装饰 | tv_broken | Broken TV | Broken TV | | sa_decor | +| 装饰 | usa_flag | United States Flag | United States Flag | | sa_decor | +| 装饰 | white_shutter | White Shutter | White Shutter | | sa_decor | +| 装饰 | white_telephone | White Telephone | White Telephone | | sa_decor | +| 装饰 | wire_connector | Wire Connector | Wire Connector | | sa_decor | +| 装饰 | wood_plank_pile | Wood Plank Pile | Wood Plank Pile | | sa_decor | +| 装饰 | wooden_scaffolding | Wooden Scaffolding | Wooden Scaffolding | | sa_decor | +| 装饰 | wooden_shelves | Wooden Shelves | Wooden Shelves | | sa_decor | + +**路障** + +| 路障 | construction_barrier | Construction Barrier | Construction Barrier | | sa_decor | +| 路障 | construction_barrier_break | Broken Construction Barrier | Broken Construction Barrier | | sa_decor | +| 路障 | empty_hesco_barrier | Empty Hesco Barrier | Empty Hesco Barrier | | sa_decor | +| 路障 | hesco_barrier | Hesco Barrier | Hesco Barrier | | sa_decor | + +**载具** + +| 载具 | ambulance | Ambulance | Ambulance | | sa_decor | +| 载具 | broken_ambulance | Broken Ambulance | Broken Ambulance | | sa_decor | +| 载具 | broken_pickup | Broken Pickup | Broken Pickup | | sa_decor | +| 载具 | broken_police_car | Broken Police Car | Broken Police Car | | sa_decor | +| 载具 | broken_sedan | Broken Sedan | Broken Sedan | | sa_decor | +| 载具 | broken_van | Broken Van | Broken Van | | sa_decor | +| 载具 | destroyed_ambulance | Destroyed Ambulance | Destroyed Ambulance | | sa_decor | +| 载具 | destroyed_pickup | Destroyed Pickup | Destroyed Pickup | | sa_decor | +| 载具 | destroyed_police_car | Destroyed Police Car | Destroyed Police Car | | sa_decor | +| 载具 | destroyed_sedan | Destroyed Sedan | Destroyed Sedan | | sa_decor | +| 载具 | destroyed_van | Destroyed Van | Destroyed Van | | sa_decor | +| 载具 | pickup | Pickup | Pickup | | sa_decor | +| 载具 | police_car | Police Car | Police Car | | sa_decor | +| 载具 | sedan | Sedan | Sedan | | sa_decor | +| 载具 | van | Van | Van | | sa_decor | + +**门** + +| 门 | beige_utility_vent_door | Beige Utility Vent Door | Beige Utility Vent Door | | sa_decor | +| 门 | black_panel_door | Black Panel Door | Black Panel Door | | sa_decor | +| 门 | black_storefront_door | Black Storefront Door | Black Storefront Door | | sa_decor | +| 门 | black_storefront_header_trapdoor | Black Storefront Header | Black Storefront Header | | sa_decor | +| 门 | bloodied_gray_steel_door | Bloodied Gray Steel Door | Bloodied Gray Steel Door | | sa_decor | +| 门 | blue_industrial_door | Blue Industrial Door | Blue Industrial Door | | sa_decor | +| 门 | brown_glass_panel_door | Brown Glass Panel Door | Brown Glass Panel Door | | sa_decor | +| 门 | cream_paneled_door | Cream Paneled Door | Cream Paneled Door | | sa_decor | +| 门 | duct_trapdoor | Duct Trapdoor | Duct Trapdoor | | sa_decor | +| 门 | electronic_security_door | Electronic Security Door | Electronic Security Door | | sa_decor | +| 门 | garage_door | White Garage Door | White Garage Door | | sa_decor | +| 门 | garage_door_metal | Metal Garage Door | Metal Garage Door | | sa_decor | +| 门 | garage_door_metal_green | Green Metal Garage Door | Green Metal Garage Door | | sa_decor | +| 门 | garage_door_metal_red | Red Metal Garage Door | Red Metal Garage Door | | sa_decor | +| 门 | gray_glass_door | Gray Glass Door | Gray Glass Door | | sa_decor | +| 门 | gray_steel_door | Gray Steel Door | Gray Steel Door | | sa_decor | +| 门 | mint_paneled_door | Mint Paneled Door | Mint Paneled Door | | sa_decor | +| 门 | security_door | Security Door | Security Door | | sa_decor | +| 门 | small_garage_door | Metal Small Garage Door | Metal Small Garage Door | | sa_decor | +| 门 | small_garage_door_metal_green | Green Metal Small Garage Door | Green Metal Small Garage Door | | sa_decor | +| 门 | small_garage_door_metal_red | Red Metal Small Garage Door | Red Metal Small Garage Door | | sa_decor | +| 门 | small_garage_door_white | White Small Garage Door | White Small Garage Door | | sa_decor | +| 门 | urban_fence_door | Urban Fence Door | Urban Fence Door | | sa_decor | +| 门 | white_full_glass_door | White Full Glass Door | White Full Glass Door | | sa_decor | +| 门 | white_plain_door | White Plain Door | White Plain Door | | sa_decor | +| 门 | white_stained_glass_door | White Stained Glass Door | White Stained Glass Door | | sa_decor | +| 门 | yellow_security_door | Yellow Security Door | Yellow Security Door | | sa_decor | \ No newline at end of file diff --git a/幸存者军火库-方块总表.xlsx b/幸存者军火库-方块总表.xlsx new file mode 100644 index 0000000..43e89c7 Binary files /dev/null and b/幸存者军火库-方块总表.xlsx differ diff --git a/幸存者军火库-物品总表.md b/幸存者军火库-物品总表.md new file mode 100644 index 0000000..7e7797e --- /dev/null +++ b/幸存者军火库-物品总表.md @@ -0,0 +1,239 @@ +# 幸存者军火库-物品总表 + +共 219 条。 + +> 范围:sa_core 材料/工具/织物/化工/电子、sa_survival 草药/医疗/背包/服装(食物见食物表)、sa_combat 图纸/弹药/投掷物/防具(武器见武器表)、sa-decor 工具与安全物品。 + +| 来源模组 | 分类 | 裸ID | 英文名 | 中文名 | 备注 | +|---|---|---|---|---|---| + +**sa_core** + +| sa_core | 材料 | metal_scrap | Metal Scrap | 金属废料 | 回收机核心产出 | +| sa_core | 材料 | scrap_nugget | Scrap Nugget | 废料粒 | 废料小颗粒 | +| sa_core | 材料 | electric_scrap | Electric Scrap | 电子废料 | 电器类回收产出 | +| sa_core | 材料 | nails | Nails | 钉子 | 基础紧固件 | +| sa_core | 材料 | screws | Screws | 螺丝 | 基础紧固件 | +| sa_core | 材料 | paperclip | Paperclip | 回形针 | 可用废料粒/铁粒制作 | +| sa_core | 材料 | wire | Wire | 电线 | 通用线材 | +| sa_core | 材料 | copper_wire | Copper Wire | 铜线 | 导电 | +| sa_core | 材料 | insulated_copper_wire | Insulated Copper Cable | 绝缘铜线 | 橡胶+铜线制作 | +| sa_core | 材料 | metal_pipe | Metal Pipe | 金属管 | 通用管材 | +| sa_core | 材料 | saw_blade | Saw Blade | 锯片 | 武器/锯类制作 | +| sa_core | 材料 | metal_sheet | Metal Sheet | 金属板 | 锤+铁锭锻打 | +| sa_core | 材料 | small_metal_sheet | Small Metal Sheet | 小金属板 | 金属板分解×4 | +| sa_core | 工具 | mortar_and_pestle | Mortar and Pestle | 研钵 | 研磨用 | +| sa_core | 材料 | hair_gel | Hair Gel | 发胶 | 日用品 | +| sa_core | 材料 | ashen_steel_mixture | Ashen Steel Mixture | 灰钢混合物 | 灰钢锭前置 | +| sa_core | 材料 | ashen_steel_ingot | Ashen Steel Ingot | 灰钢锭 | 高级材料 | +| sa_core | 材料 | ashen_steel_nugget | Ashen Steel Nugget | 灰钢粒 | 灰钢锭分解 | +| sa_core | 材料 | ashen_steel_rod | Ashen Steel Rod | 灰钢棒 | 高级棒材 | +| sa_core | 材料 | diamond_nugget | Diamond Nugget | 钻石粒 | 钻石合成 | +| sa_core | 材料 | netherite_nugget | Netherite Nugget | 下界合金粒 | 下界合金碎片合成 | +| sa_core | 容器 | empty_can | Empty Can | 空罐 | | +| sa_core | 容器 | tin_can | Tin Can | 锡罐 | | +| sa_core | 容器 | dented_can | Dented Can | 凹陷罐 | | +| sa_core | 容器 | empty_glass_bottle | Empty Glass Bottle | 空玻璃瓶 | | +| sa_core | 容器 | jerry_can | Jerry Can | 油桶 | 可装 1000mB 液体,容量 tooltip | +| sa_core | 容器 | gasoline_bucket | Gasoline Bucket | 汽油桶 | 桶装汽油 | +| sa_core | 容器 | water_bottle | Water Bottle | 水瓶 | | +| sa_core | 容器 | water_bottle_empty | Empty Water Bottle | 空水瓶 | | +| sa_core | 容器 | dirty_water_bottle | Dirty Water Bottle | 脏水瓶 | 饮用会致饥饿 | +| sa_core | 容器 | lunch_bag | Lunch Bag | 午餐袋 | | +| sa_core | 容器 | plastic_bag | Plastic Bag | 塑料袋 | Bundle 式储存 | +| sa_core | 容器 | money | Money | 钱 | | +| sa_core | 容器 | money_bundle | Money Bundle | 成捆钱 | | +| sa_core | 功能 | generator_manual | Generator Manual | 发电机手册 | 阅读并完成 3 项训练才能操作汽油发电机 | +| sa_core | 织物 | cloth | Cloth | 布料 | | +| sa_core | 织物 | rags | Rags | 破布 | | +| sa_core | 织物 | dirty_rags | Dirty Rags | 脏破布 | | +| sa_core | 织物 | sterilized_rags | Sterilized Rags | 消毒破布 | 使用后返还脏破布 | +| sa_core | 织物 | dish_towel | Dish Towel | 洗碗布 | | +| sa_core | 织物 | fiber_fabric | Fiber Fabric | 纤维织物 | | +| sa_core | 织物 | polyester | Polyester | 涤纶 | | +| sa_core | 织物 | polyester_thread | Polyester Thread | 涤纶线 | | +| sa_core | 织物 | thread | Thread | 线 | | +| sa_core | 织物 | kevlar | Kevlar | 凯夫拉 | 防弹材料 | +| sa_core | 织物 | kevlar_thread | Kevlar Thread | 凯夫拉线 | | +| sa_core | 织物 | leather_strip | Leather Strip | 皮革条 | | +| sa_core | 织物 | fabric_patch | Fabric Patch | 织物补丁 | | +| sa_core | 化工 | charcoal_dust | Charcoal Dust | 木炭粉 | | +| sa_core | 化工 | sulfur | Sulfur | 硫磺 | | +| sa_core | 化工 | sulfur_dust | Sulfur Dust | 硫磺粉 | | +| sa_core | 化工 | fermented_mash | Fermented Mash | 发酵浆 | 酿酒前置 | +| sa_core | 化工 | cardboard | Cardboard | 纸板 | | +| sa_core | 化工 | plastic | Plastic | 塑料 | | +| sa_core | 化工 | plastic_plate | Plastic Plate | 塑料板 | | +| sa_core | 化工 | rubber | Rubber | 橡胶 | | +| sa_core | 化工 | scrap_wood | Scrap Wood | 碎木料 | 2 木板合成 | +| sa_core | 化工 | alcohol | Alcohol | 酒精 | | +| sa_core | 化工 | rubbing_alcohol | Rubbing Alcohol | 外用酒精 | | +| sa_core | 化工 | cleaning_liquid | Cleaning Liquid | 清洁液 | | +| sa_core | 化工 | antiseptic | Antiseptic | 消毒剂 | | +| sa_core | 化工 | duct_tape | Duct Tape | 胶带 | | +| sa_core | 化工 | adhesive_tape | Adhesive Tape | 胶粘带 | | +| sa_core | 化工 | glue | Glue | 胶水 | | +| sa_core | 化工 | medical_adhesive | Medical Adhesive | 医用粘合剂 | | +| sa_core | 工具 | can_opener | Can Opener | 开罐器 | 开罐头必需 | +| sa_core | 工具 | pliers | Pliers | 钳子 | 装配工具 | +| sa_core | 工具 | screwdrive | Screwdriver | 螺丝刀 | 装配工具 | +| sa_core | 工具 | crowbar | Crowbar | 撬棍 | 可当临时近战武器 | +| sa_core | 工具 | claw_hammer | Claw Hammer | 羊角锤 | 装配工具 | +| sa_core | 工具 | bolt_cutter | Bolt Cutter | 断线钳 | | +| sa_core | 工具 | wrench | Adjustable Wrench | 活动扳手 | 装配工具 | +| sa_core | 工具 | metal_saw | Metal Saw | 金属锯 | | +| sa_core | 工具 | matchbox | Matchbox | 火柴盒 | 可点燃方块与火 | +| sa_core | 工具 | scissor | Scissors | 剪刀 | 可当剪刀用 | +| sa_core | 工具 | saw | Saw | 手锯 | 装配工具 | +| sa_core | 工具 | scrap_pickaxe | Scrap Pickaxe | 废料镐 | | +| sa_core | 工具 | scrap_axe | Scrap Axe | 废料斧 | | +| sa_core | 工具 | scrap_shovel | Scrap Shovel | 废料铲 | | +| sa_core | 工具 | scrap_hoe | Scrap Hoe | 废料锄 | | +| sa_core | 工具 | scrap_multitool | Scrap Multitool | 废料万能工具 | 镐+斧+铲三合一 | +| sa_core | 工具 | ashen_steel_pickaxe | Ashen Steel Pickaxe | 灰钢镐 | | +| sa_core | 工具 | ashen_steel_axe | Ashen Steel Axe | 灰钢斧 | | +| sa_core | 工具 | ashen_steel_shovel | Ashen Steel Shovel | 灰钢铲 | | +| sa_core | 工具 | ashen_steel_hoe | Ashen Steel Hoe | 灰钢锄 | | +| sa_core | 工具 | ashen_steel_multitool | Ashen Steel Multitool | 灰钢万能工具 | 镐+斧+铲三合一 | +| sa_core | 电子 | battery | Battery | 电池 | 供电 | +| sa_core | 电子 | camera | Camera | 相机 | | +| sa_core | 电子 | cellphone | Cellphone | 手机 | C4 配方原料 | +| sa_core | 电子 | classic_watch | Classic Watch | 经典手表 | | + +**sa_survival** + +| sa_survival | 草药 | crushed_green_herb | Crushed Green Herb | 研磨绿草药 | | +| sa_survival | 草药 | crushed_red_herb | Crushed Red Herb | 研磨红草药 | | +| sa_survival | 草药 | crushed_blue_herb | Crushed Blue Herb | 研磨蓝草药 | | +| sa_survival | 草药 | crushed_yellow_herb | Crushed Yellow Herb | 研磨黄草药 | | +| sa_survival | 草药 | mixed_gg_herbs | Mixed GG Herbs | 混合GG草药 | 绿+绿 | +| sa_survival | 草药 | mixed_ggg_herbs | Mixed GGG Herbs | 混合GGG草药 | 绿×3 | +| sa_survival | 草药 | mixed_gr_herbs | Mixed GR Herbs | 混合GR草药 | 绿+红 | +| sa_survival | 草药 | mixed_ggr_herbs | Mixed GGR Herbs | 混合GGR草药 | 绿+绿+红 | +| sa_survival | 草药 | mixed_gb_herbs | Mixed GB Herbs | 混合GB草药 | 绿+蓝 | +| sa_survival | 草药 | mixed_ggb_herbs | Mixed GGB Herbs | 混合GGB草药 | 绿+绿+蓝 | +| sa_survival | 草药 | mixed_gy_herbs | Mixed GY Herbs | 混合GY草药 | 绿+黄 | +| sa_survival | 草药 | mixed_ggy_herbs | Mixed GGY Herbs | 混合GGY草药 | 绿+绿+黄 | +| sa_survival | 草药 | mixed_gyb_herbs | Mixed GYB Herbs | 混合GYB草药 | 绿+黄+蓝 | +| sa_survival | 草药 | mixed_gry_herbs | Mixed GRY Herbs | 混合GRY草药 | 绿+红+黄 | +| sa_survival | 草药 | mixed_grb_herbs | Mixed GRB Herbs | 混合GRB草药 | 绿+红+蓝 | +| sa_survival | 草药 | mixed_rb_herbs | Mixed RB Herbs | 混合RB草药 | 红+蓝 | +| sa_survival | 医疗 | bandage | Bandage | 绷带 | 止血/治疗 | +| sa_survival | 医疗 | bandage_sterilized | Sterilized Bandage | 消毒绷带 | 止血等级更高 | +| sa_survival | 医疗 | plaster | Plaster | 创可贴 | 轻度治疗 | +| sa_survival | 医疗 | splint | Splint | 夹板 | 接骨 | +| sa_survival | 医疗 | alcohol_wipes | Alcohol Wipes | 酒精湿巾 | 消毒 | +| sa_survival | 医疗 | blood_bag | Blood Bag | 血袋 | 补血 | +| sa_survival | 医疗 | blood_bag_empty | Empty Blood Bag | 空血袋 | 可装血 | +| sa_survival | 医疗 | first_aid_kit | First Aid Kit | 急救包 | 高级治疗 | +| sa_survival | 医疗 | first_aid_spray | First Aid Spray | 急救喷雾 | 治疗 | +| sa_survival | 医疗 | adrenaline | Adrenaline | 肾上腺素 | Buff | +| sa_survival | 医疗 | morphine | Morphine | 吗啡 | 强效止痛 | +| sa_survival | 医疗 | stim_shot | Stim Shot | 刺激针 | 注射针 | +| sa_survival | 医疗 | painkiller | Painkiller | 止痛药 | 止痛 | +| sa_survival | 医疗 | painkiller_pills | Painkiller Pills | 止痛药丸 | 口服止痛 | +| sa_survival | 医疗 | stamina_boost | Stamina Boost | 耐力增强 | Buff | +| sa_survival | 医疗 | stamina_boost_pills | Stamina Boost Pills | 耐力增强药丸 | 口服 Buff | +| sa_survival | 医疗 | tube | Tube | 管子 | 输液管类 | +| sa_survival | 杂物 | garbage_bag | Garbage Bag | 垃圾袋 | | +| sa_survival | 背包 | leather_backpack | Leather Backpack | 皮革背包 | 容量 12 | +| sa_survival | 背包 | satchel_black | Black Satchel | 黑色挎包 | 容量 15 | +| sa_survival | 背包 | satchel_brown | Brown Satchel | 棕色挎包 | 容量 15 | +| sa_survival | 背包 | satchel_green | Green Satchel | 绿色挎包 | 容量 15 | +| sa_survival | 背包 | satchel_white | White Satchel | 白色挎包 | 容量 15 | +| sa_survival | 背包 | small_backpack_black | Small Black Backpack | 黑色小背包 | 容量 18 | +| sa_survival | 背包 | small_backpack_blue | Small Blue Backpack | 蓝色小背包 | 容量 18 | +| sa_survival | 背包 | small_backpack_green | Small Green Backpack | 绿色小背包 | 容量 18 | +| sa_survival | 背包 | small_backpack_pink | Small Pink Backpack | 粉色小背包 | 容量 18 | +| sa_survival | 背包 | duffel_bag_black | Black Duffel Bag | 黑色旅行袋 | 容量 30 | +| sa_survival | 背包 | duffel_bag_blue | Blue Duffel Bag | 蓝色旅行袋 | 容量 30 | +| sa_survival | 背包 | duffel_bag_red | Red Duffel Bag | 红色旅行袋 | 容量 30 | +| sa_survival | 背包 | duffel_bag_yellow | Yellow Duffel Bag | 黄色旅行袋 | 容量 30 | +| sa_survival | 背包 | hiking_backpack_black | Black Hiking Backpack | 黑色登山包 | 容量 36 | +| sa_survival | 背包 | hiking_backpack_blue | Blue Hiking Backpack | 蓝色登山包 | 容量 36 | +| sa_survival | 背包 | hiking_backpack_green | Green Hiking Backpack | 绿色登山包 | 容量 36 | +| sa_survival | 背包 | hiking_backpack_red | Red Hiking Backpack | 红色登山包 | 容量 36 | +| sa_survival | 背包 | military_backpack_desert | Desert Military Backpack | 沙漠军用背包 | 容量 42 | +| sa_survival | 背包 | military_backpack_blue | Blue Military Backpack | 蓝色军用背包 | 容量 42 | +| sa_survival | 背包 | military_backpack_camo | Camo Military Backpack | 迷彩军用背包 | 容量 42 | +| sa_survival | 背包 | military_backpack_green | Green Military Backpack | 绿色军用背包 | 容量 42 | +| sa_survival | 服装 | blue_jeans | Blue Jeans | 蓝色牛仔裤 | 护腿位 GeckoClothing | +| sa_survival | 服装 | green_t_shirt | Green T-Shirt | 绿色T恤 | 胸甲位 GeckoClothing | +| sa_survival | 服装 | leon_s_kennedy_jacket | Leon S. Kennedy Jacket | 里昂夹克 | 胸甲位,钻石级 | +| sa_survival | 电子 | flashlight | Flashlight | 手电筒 | 需电池,右键开关 | + +**sa_combat** + +| sa_combat | 图纸 | blueprint | Blueprint | 空白蓝图 | 可通过数据包/NBT 定制解锁 | +| sa_combat | 图纸 | lucille_blueprint | Lucille Blueprint | 露西尔蓝图 | 解锁 露西尔(棒球棍+铁丝) | +| sa_combat | 图纸 | gauntlet_blueprint | Gauntlet Blueprint | 拳套蓝图 | 解锁 拳套 | +| sa_combat | 图纸 | chainsaw_sword_blueprint | Chainsaw Sword Blueprint | 电锯剑蓝图 | 解锁 电锯剑 | +| sa_combat | 图纸 | double_fire_axe_hammer_blueprint | Double Fire Axe Hammer Blueprint | 双头消防斧蓝图 | 解锁 双头消防斧锤 | +| sa_combat | 图纸 | tetanus_king_blueprint | Tetanus King Blueprint | 破伤风之王蓝图 | 解锁 破伤风之王 | +| sa_combat | 图纸 | improvised_great_axe_blueprint | Improvised Great Axe Blueprint | 简易巨斧蓝图 | 解锁 简易巨斧 | +| sa_combat | 图纸 | brutalizer_blueprint | Brutalizer Blueprint | 残暴者蓝图 | 解锁 残暴者 | +| sa_combat | 图纸 | land_mine_blueprint | Land Mine Blueprint | 地雷蓝图 | 解锁 地雷 | +| sa_combat | 图纸 | c4_blueprint | C4 Blueprint | C4蓝图 | 解锁 C4 | +| sa_combat | 图纸 | tactical_crossbow_blueprint | Tactical Crossbow Blueprint | 战术弩蓝图 | 解锁 战术弩 | +| sa_combat | 图纸 | compound_bow_blueprint | Compound Bow Blueprint | 复合弓蓝图 | 解锁 复合弓 | +| sa_combat | 图纸 | hunting_knife_blueprint | Hunting Knife Blueprint | 猎刀蓝图 | 解锁 猎刀 | +| sa_combat | 图纸 | katana_blueprint | Katana Blueprint | 武士刀蓝图 | 解锁 武士刀 | +| sa_combat | 图纸 | police_shield_blueprint | Police Shield Blueprint | 防暴盾蓝图 | 解锁 防暴盾 | +| sa_combat | 生物 | merchant_spawn_egg | Merchant Spawn Egg | 商人刷怪蛋 | 生成流浪商人型交易者 | +| sa_combat | 材料 | weapon_parts | Weapon Parts | 武器零件 | 高级武器/装备通用材料 | +| sa_combat | 维修 | repair_kit_i | Repair Kit I | 维修套件I | 低阶武器维修 | +| sa_combat | 维修 | repair_kit_ii | Repair Kit II | 维修套件II | 中阶武器维修 | +| sa_combat | 维修 | repair_kit_iii | Repair Kit III | 维修套件III | 高阶武器维修 | +| sa_combat | 弹药 | tactical_bolt | Tactical Bolt | 战术弩箭 | 弩用 | +| sa_combat | 弹药 | improvised_bolt | Improvised Bolt | 简易弩箭 | 弩用 | +| sa_combat | 投掷物 | frag_grenade | Frag Grenade | 破片手雷 | 爆炸+破片 | +| sa_combat | 投掷物 | incendiary_grenade | Incendiary Grenade | 燃烧手雷 | 燃烧 | +| sa_combat | 投掷物 | smoke_grenade | Smoke Grenade | 烟雾弹 | 烟雾掩护 | +| sa_combat | 投掷物 | pipe_bomb | Pipe Bomb | 管状炸弹 | 爆炸 | +| sa_combat | 投掷物 | nail_bomb | Nail Bomb | 钉炸弹 | 爆炸+飞钉 | +| sa_combat | 投掷物 | molotov | Molotov | 燃烧瓶 | 酒精+玻璃瓶 | +| sa_combat | 引爆 | remote_detonator | Remote Detonator | 遥控引爆器 | 引爆 C4 | +| sa_combat | 杂物 | currency_wallet | Legacy Wallet (Disabled) | 旧钱包 | 已禁用 | +| sa_combat | 装甲 | armor_plate_i | Armor Plate I | 装甲板I | 镶嵌/装备 | +| sa_combat | 装甲 | armor_plate_ii | Armor Plate II | 装甲板II | 镶嵌/装备 | +| sa_combat | 装甲 | armor_plate_iii | Armor Plate III | 装甲板III | 镶嵌/装备 | +| sa_combat | 防弹衣 | black_tactical_vest | Black Tactical Vest | 黑色战术背心 | 胸前防护 | +| sa_combat | 防弹衣 | police_vest | Police Vest | 警用背心 | 胸前防护 | +| sa_combat | 防弹衣 | umbrella_vest | Umbrella Vest | 伞公司背心 | 胸前防护 | +| sa_combat | 警服 | rpd_police_hat | RPD Police Hat | RPD警帽 | | +| sa_combat | 警服 | rpd_police_uniform | RPD Police Uniform | RPD警服 | | +| sa_combat | 警服 | rpd_police_pants | RPD Police Pants | RPD警裤 | | +| sa_combat | 警服 | rpd_police_boots | RPD Police Boots | RPD警靴 | | +| sa_combat | 制服 | umbrella_corp_helmet | Umbrella Corp Helmet | 伞公司头盔 | | +| sa_combat | 制服 | umbrella_corp_uniform | Umbrella Corp Uniform | 伞公司制服 | | +| sa_combat | 制服 | umbrella_corp_pants | Umbrella Corp Pants | 伞公司裤 | | +| sa_combat | 制服 | umbrella_corp_boots | Umbrella Corp Boots | 伞公司靴 | | +| sa_combat | 废料甲 | scrap_helmet | Scrap Helmet | 废料头盔 | | +| sa_combat | 废料甲 | scrap_chestplate | Scrap Chestplate | 废料胸甲 | | +| sa_combat | 废料甲 | scrap_leggings | Scrap Leggings | 废料护腿 | | +| sa_combat | 废料甲 | scrap_boots | Scrap Boots | 废料靴 | | +| sa_combat | 防化服 | improvised_hazmat_helmet | Improvised Hazmat Hood | 简易防化头罩 | | +| sa_combat | 防化服 | improvised_hazmat_suit | Improvised Hazmat Suit | 简易防化服 | | +| sa_combat | 防化服 | improvised_hazmat_pants | Improvised Hazmat Pants | 简易防化裤 | | +| sa_combat | 防化服 | improvised_hazmat_boots | Improvised Hazmat Boots | 简易防化靴 | | +| sa_combat | 消防服 | firefighter_helmet | Firefighter Helmet | 消防头盔 | | +| sa_combat | 消防服 | firefighter_jacket | Firefighter Jacket | 消防夹克 | | +| sa_combat | 消防服 | firefighter_pants | Firefighter Pants | 消防裤 | | +| sa_combat | 消防服 | firefighter_boots | Firefighter Boots | 消防靴 | | + +**sa_decor** + +| sa_decor | 工具 | variation_tool | Variation Tool | 变体工具 | 切换方块变体 | +| sa_decor | 工具 | loot_crate_wand | Loot Crate Wand | 战利品箱魔杖 | 打开战利品配置 GUI | +| sa_decor | 工具 | rotation_wand | Rotation Wand | 旋转魔杖 | 右键旋转方块视觉朝向 | +| sa_decor | 工具 | flare_gun | Flare Gun | 信号枪 | 发射信号弹 | +| sa_decor | 安全 | lock | Padlock | 挂锁 | 锁门 | +| sa_decor | 安全 | lockpick | Lockpick | 开锁器 | 开挂锁 | +| sa_decor | 安全 | broken_padlock | Broken Padlock | 损坏挂锁 | 开锁失败残留 | +| sa_decor | 安全 | key | Key | 钥匙 | 开对应锁 | +| sa_decor | 安全 | keycard | Keycard | 门禁卡 | 开门禁读卡器 | +| sa_decor | 工具 | linking_tool | Linking Tool | 连接工具 | 电缆/电线连接,军火工作台可造 | +| sa_decor | 工具 | structure_access_tool | Structure Access Tool | 结构访问工具 | 访问结构锚点 | +| sa_decor | 开发 | fake_hands | Fake Hands | 隐藏手(开发) | 无显示名 | +| sa_decor | 开发 | barricade_construction_view | Barricade Construction View | 围挡建造视角(开发) | 无显示名 | +| sa_decor | 开发 | crowbar_force_open_view | Crowbar Force Open View | 撬棍强制开启视角(开发) | 无显示名 | \ No newline at end of file diff --git a/幸存者军火库-物品总表.xlsx b/幸存者军火库-物品总表.xlsx new file mode 100644 index 0000000..150c587 Binary files /dev/null and b/幸存者军火库-物品总表.xlsx differ diff --git a/幸存者军火库武器数据.md b/幸存者军火库武器数据.md new file mode 100644 index 0000000..4dcc01d --- /dev/null +++ b/幸存者军火库武器数据.md @@ -0,0 +1,119 @@ +# 幸存者军火库武器数据统计 + +> 数据来源:`.tmp_sa_survival/sa-survival`(WeaponDefinitions.java / ModItems.java / 语言文件),共 **57** 件武器。 + +## 概览 + +| 指标 | 数值 | +|---|---| +| 武器总数 | **57** | +| 分类 | 远程×4、盾牌×5、钝器×20、刀具×11、长柄×5、斧类×5、唯一×7 | +| 品质分布 | 普通×35、稀有×3、罕见×10、史诗×1、传说×7、唯一×1 | +| 材质分布 | 木质×7、废料×17、强化×17、军用×7、传说×9 | +| 近战武器平均最终伤害 | 6.7 | +| 最高伤害 | 双头消防斧锤 16.8(传说) | +| 最低伤害 | 扫帚 / 木板 2.0 | +| 最高耐久 | 双头消防斧锤 3200 | +| 材质伤害加成 | 木质+0、废料+0.1、强化+0.4、军用+0.6、传说+0.8 | +| 实际攻速 | 4.0 + 攻速修正(如 -2.2 → 1.8 次/秒) | + +## 武器明细 + +### 远程(4) + +| 名称 | 英文ID | 品质 | 分类 | 材质 | 基础伤害 | 最终伤害 | 攻速修正 | 实际攻速(次/秒) | 耐久 | 特效(命中) | 备注 | +|---|---|---|---|---|---|---|---|---|---|---|---| +| 战术弩 | tactical_crossbow | 罕见 | 远程 | 强化 | 8 | 8.4 | -2.8 | 1.2 | 450 | — | 可装瞄准镜/自动机构附件 | +| 简易弩 | improvised_crossbow | 稀有 | 远程 | 废料 | 6 | 6.1 | -3.0 | 1.0 | 230 | — | 可装简易瞄准附件 | +| 射钉枪 | nail_gun | 罕见 | 远程 | 强化 | 1 | 1.4 | -2.6 | 1.4 | 380 | — | 全自动,可装枪托/消音器/扩容弹匣 | +| 复合弓 | compound_bow | 罕见 | 远程 | 强化 | 8 | 8.4 | -2.8 | 1.2 | 520 | — | 满拉伤害,随蓄力缩放 | + +### 盾牌(5) + +| 名称 | 英文ID | 品质 | 分类 | 材质 | 基础伤害 | 最终伤害 | 攻速修正 | 实际攻速(次/秒) | 耐久 | 特效(命中) | 备注 | +|---|---|---|---|---|---|---|---|---|---|---|---| +| 废料盾 | scrap_shield | 稀有 | 盾牌 | 废料 | 0 | 0 | 0 | — | 320 | — | 防御型 | +| 垃圾桶盖盾 | trash_lid_shield | 普通 | 盾牌 | 废料 | 0 | 0 | 0 | — | 180 | — | 防御型 | +| 防暴盾 | police_shield | 罕见 | 盾牌 | 强化 | 0 | 0 | 0 | — | 520 | — | 防御型 | +| 停车牌盾 | stop_sign_shield | 稀有 | 盾牌 | 强化 | 0 | 0 | 0 | — | 440 | — | 防御型 | +| 井盖盾 | manhole_shield | 罕见 | 盾牌 | 强化 | 0 | 0 | 0 | — | 700 | — | 防御型 | + +### 钝器(20) + +| 名称 | 英文ID | 品质 | 分类 | 材质 | 基础伤害 | 最终伤害 | 攻速修正 | 实际攻速(次/秒) | 耐久 | 特效(命中) | 备注 | +|---|---|---|---|---|---|---|---|---|---|---|---| +| 扫帚 | broom | 普通 | 钝器 | 木质 | 2 | 2.0 | -2.2 | 1.8 | 90 | — | | +| 棒球棍 | baseball_bat | 罕见 | 钝器 | 废料 | 5 | 5.1 | -2.2 | 1.8 | 190 | 冲击 I | 可改装 | +| 重锤 | heavy_hammer | 罕见 | 钝器 | 强化 | 11 | 11.4 | -2.9 | 1.1 | 1600 | 震荡 II + 冲击 I | 不可改装 | +| 管钳 | pipe_wrench | 普通 | 钝器 | 强化 | 5 | 5.4 | -2.6 | 1.4 | 300 | 震荡 I | 可改装 | +| 铁管 | pipe | 普通 | 钝器 | 废料 | 4 | 4.1 | -2.2 | 1.8 | 180 | 冲击 I | 可改装 | +| 停车标志牌 | stop_sign | 普通 | 钝器 | 强化 | 13 | 13.4 | -3.2 | 0.8 | 520 | 冲击 II | | +| 高尔夫球杆 | golf_stick | 普通 | 钝器 | 废料 | 4 | 4.1 | -2.0 | 2.0 | 140 | 冲击 I | | +| 铝制棒球棍 | aluminum_baseball_bat | 罕见 | 钝器 | 强化 | 6 | 6.4 | -2.1 | 1.9 | 320 | 冲击 I / 震荡 I | 随机触发其一 | +| 警棍 | police_baton | 普通 | 钝器 | 军用 | 5 | 5.6 | -2.0 | 2.0 | 500 | 震荡 II | | +| 擀面杖 | rolling_pin | 普通 | 钝器 | 木质 | 3 | 3.0 | -2.0 | 2.0 | 100 | 冲击 I | | +| 废料锤 | scrap_hammer | 普通 | 钝器 | 废料 | 8 | 8.1 | -2.6 | 1.4 | 500 | 震荡 II + 流血 I | | +| 大锤 | sledgehammer | 罕见 | 钝器 | 强化 | 13 | 13.4 | -3.0 | 1.0 | 2500 | 震荡 II + 冲击 II | 可装榴弹附件 | +| 木吉他 | acoustic_guitar | 普通 | 钝器 | 木质 | 4 | 4.0 | -2.2 | 1.8 | 120 | 冲击 I | | +| 电吉他 | electric_guitar | 普通 | 钝器 | 强化 | 5 | 5.4 | -2.4 | 1.6 | 250 | 电击 I | | +| 键盘吉他 | keytar | 普通 | 钝器 | 废料 | 5 | 5.1 | -2.4 | 1.6 | 200 | 震荡 I | | +| 指虎 | knuckle_punch | 普通 | 钝器 | 废料 | 4 | 4.1 | -1.6 | 2.4 | 180 | 冲击 I | | +| 拳击手套 | boxing_gloves | 普通 | 钝器 | 废料 | 3 | 3.1 | -1.4 | 2.6 | 160 | 震荡 I | 可装刀片附件 | +| 木板 | plank | 普通 | 钝器 | 木质 | 2 | 2.0 | -1.8 | 2.2 | 70 | — | | +| 钉板 | nailed_plank | 普通 | 钝器 | 木质 | 4 | 4.0 | -2.2 | 1.8 | 120 | 流血 I | | +| 杠铃 | barbell | 普通 | 钝器 | 强化 | 8 | 8.4 | -3.2 | 0.8 | 380 | 冲击 I / 震荡 II | 随机触发其一 | + +### 刀具(11) + +| 名称 | 英文ID | 品质 | 分类 | 材质 | 基础伤害 | 最终伤害 | 攻速修正 | 实际攻速(次/秒) | 耐久 | 特效(命中) | 备注 | +|---|---|---|---|---|---|---|---|---|---|---|---| +| 厨房刀 | kitchen_knife | 普通 | 刀具 | 废料 | 4 | 4.1 | -1.8 | 2.2 | 190 | 流血 I | | +| 战斗刀 | combat_knife | 普通 | 刀具 | 军用 | 5 | 5.6 | -2.0 | 2.0 | 800 | 流血 I | | +| 剁肉刀 | cleaver | 普通 | 刀具 | 强化 | 4 | 4.4 | -2.0 | 2.0 | 230 | 流血 II | | +| 铁砍刀 | iron_machete | 普通 | 刀具 | 强化 | 6 | 6.4 | -2.4 | 1.6 | 320 | 流血 II | | +| 灰烬砍刀 | ashen_machete | 普通 | 刀具 | 传说 | 7 | 7.8 | -2.4 | 1.6 | 600 | 流血 III | | +| 废料刀 | scrap_knife | 普通 | 刀具 | 废料 | 3 | 3.1 | -1.8 | 2.2 | 140 | 流血 I | | +| 猎刀 | hunting_knife | 罕见 | 刀具 | 军用 | 6 | 6.6 | -2.1 | 1.9 | 700 | 流血 II | 不可改装 | +| 武士刀 | katana | 普通 | 刀具 | 军用 | 8 | 8.6 | -1.8 | 2.2 | 1500 | 流血 III | | +| 碎玻璃瓶 | broken_glass_bottle | 普通 | 刀具 | 废料 | 3 | 3.1 | -1.8 | 2.2 | 80 | 流血 I | | +| 废料钉拳 | scrap_nail_punch | 普通 | 刀具 | 废料 | 4 | 4.1 | -1.6 | 2.4 | 180 | 流血 I / 冲击 I | 随机触发其一 | +| 电击棒 | stun_baton | 普通 | 刀具 | 军用 | 5 | 5.6 | -2.0 | 2.0 | 500 | 电击 I / 震荡 I | 随机触发其一 | + +### 长柄(5) + +| 名称 | 英文ID | 品质 | 分类 | 材质 | 基础伤害 | 最终伤害 | 攻速修正 | 实际攻速(次/秒) | 耐久 | 特效(命中) | 备注 | +|---|---|---|---|---|---|---|---|---|---|---|---| +| 厨房刀长矛 | kitchen_knife_spear | 普通 | 长柄 | 废料 | 5 | 5.1 | -2.6 | 1.4 | 180 | 流血 I | | +| 木矛 | wooden_spear | 普通 | 长柄 | 木质 | 4 | 4.0 | -2.6 | 1.4 | 100 | — | | +| 废料刀长矛 | scrap_knife_spear | 普通 | 长柄 | 废料 | 5 | 5.1 | -2.6 | 1.4 | 180 | 流血 I | | +| 碎玻璃长矛 | broken_glass_spear | 普通 | 长柄 | 废料 | 5 | 5.1 | -2.6 | 1.4 | 140 | 流血 II | | +| 耙子 | rake | 普通 | 长柄 | 木质 | 3 | 3.0 | -2.6 | 1.4 | 90 | 流血 I | | + +### 斧类(5) + +| 名称 | 英文ID | 品质 | 分类 | 材质 | 基础伤害 | 最终伤害 | 攻速修正 | 实际攻速(次/秒) | 耐久 | 特效(命中) | 备注 | +|---|---|---|---|---|---|---|---|---|---|---|---| +| 锯片斧 | sawblade_axe | 普通 | 斧类 | 强化 | 8 | 8.4 | -2.8 | 1.2 | 250 | 流血 II / 冲击 I | 随机触发其一 | +| 消防斧 | fire_axe | 史诗 | 斧类 | 军用 | 8 | 8.6 | -3.0 | 1.0 | 1120 | 流血 I / 冲击 I | 随机触发其一,可砍木 | +| 冰镐 | ice_axe | 普通 | 斧类 | 强化 | 6 | 6.4 | -2.6 | 1.4 | 300 | 震荡 I | 镐类,可挖石 | +| 战术战斧 | tactical_tomahawk | 普通 | 斧类 | 军用 | 8 | 8.6 | -2.2 | 1.8 | 1300 | 流血 II | 可投掷 | +| 电锯 | chainsaw | 传说 | 斧类 | 传说 | 10 | 10.8 | -3.0 | 1.0 | 1800 | — | 需汽油,持续攻击,可伐木 | + +### 唯一(7) + +| 名称 | 英文ID | 品质 | 分类 | 材质 | 基础伤害 | 最终伤害 | 攻速修正 | 实际攻速(次/秒) | 耐久 | 特效(命中) | 备注 | +|---|---|---|---|---|---|---|---|---|---|---|---| +| 残暴者 | brutalizer | 传说 | 唯一 | 传说 | 9 | 9.8 | -2.3 | 1.7 | 2000 | 流血 III | | +| 破伤风之王 | tetanus_king | 传说 | 唯一 | 传说 | 13 | 13.8 | -2.8 | 1.2 | 2800 | 流血 III | | +| 简易巨斧 | improvised_great_axe | 传说 | 唯一 | 传说 | 14 | 14.8 | -3.0 | 1.0 | 2700 | 流血 II + 冲击 I | | +| 双头消防斧锤 | double_fire_axe_hammer | 传说 | 唯一 | 传说 | 16 | 16.8 | -3.2 | 0.8 | 3200 | 流血 II + 震荡 II + 冲击 II | | +| 电锯剑 | chainsaw_sword | 传说 | 唯一 | 传说 | 10 | 10.8 | -2.4 | 1.6 | 1800 | 流血 III / 震荡 I | 随机触发其一,永久供电 | +| 露西尔 | lucille | 唯一 | 唯一 | 传说 | 9 | 9.8 | -2.8 | 1.2 | 1700 | 流血 III / 冲击 II | 随机触发其一 | +| 拳套 | gauntlet | 传说 | 唯一 | 传说 | 7 | 7.8 | -1.4 | 2.6 | 1800 | 冲击 II / 震荡 I | 随机触发其一 | + +## 附注 + +- 最终伤害 = 基础伤害 + 材质加成(含空手基础 1 点在内为面板显示值)。 +- 远程武器(战术弩/简易弩/射钉枪/复合弓)的面板伤害为弹药/箭矢伤害,攻速修正只影响拉弦/装填节奏。 +- “随机触发其一”指命中时从多个特效中随机选择 1 个触发(WeaponProcMode.RANDOM_ONE)。 +- 唯一武器均需图纸解锁,盾牌为防御型、无近战攻击属性。 \ No newline at end of file diff --git a/幸存者军火库武器数据.xlsx b/幸存者军火库武器数据.xlsx new file mode 100644 index 0000000..c68a3bb Binary files /dev/null and b/幸存者军火库武器数据.xlsx differ diff --git a/幸存者军火库食物表.md b/幸存者军火库食物表.md new file mode 100644 index 0000000..be43c76 --- /dev/null +++ b/幸存者军火库食物表.md @@ -0,0 +1,201 @@ +# 幸存者军火库 · 全食物数据表 + +来源:sa-survival 工程(namespace `sa_combat`),数据取自 `SASurvivalItems.java` + LSO 口渴消耗品 JSON + `en_us.json` / `pt_br.json`。 +营养 = 饥饿值;饱食 = saturationMod(实际饱食 = 营养 × saturationMod)。口渴数据依赖 LSO(Legendary Survival Overhaul)模组。 + +## 1. 罐头食品(未开罐需开罐器,开罐后可食用) + +| 物品 ID | 中文名 | 英文名 | 营养 | 饱食 | 补水量 | 备注 | +| --- | --- | --- | --- | --- | --- | --- | +| canned_beans | 豆子罐头 | Canned Beans | — | — | — | 需开罐 | +| canned_beans_open | 打开的豆子罐头 | Open Canned Beans | 5 | 0.55 | 2 | 开罐后可食 | +| canned_carrots | 胡萝卜罐头 | Canned Carrots | — | — | — | 需开罐 | +| canned_carrots_open | 打开的胡萝卜罐头 | Open Canned Carrots | 4 | 0.45 | 4 | 开罐后可食 | +| canned_chilli | 辣椒罐头 | Canned Chilli | — | — | — | 需开罐 | +| canned_chilli_open | 打开的辣椒罐头 | Open Canned Chilli | 7 | 0.75 | 2 | 开罐后可食 | +| canned_corn | 玉米罐头 | Canned Corn | — | — | — | 需开罐 | +| canned_corn_open | 打开的玉米罐头 | Open Canned Corn | 4 | 0.50 | 4 | 开罐后可食 | +| canned_corned_beef | 咸牛肉罐头 | Canned Corned Beef | — | — | — | 需开罐 | +| canned_corned_beef_open | 打开的咸牛肉罐头 | Open Canned Corned Beef | 8 | 0.85 | 1 | 开罐后可食(meat) | +| canned_dog_food | 狗粮罐头 | Canned Dog Food | — | — | — | 需开罐 | +| canned_dog_food_open | 打开的狗粮罐头 | Open Canned Dog Food | 3 | 0.25 | 1 | 开罐后可食(meat) | +| canned_evaporated_milk | 淡奶罐头 | Canned Evaporated Milk | — | — | — | 需开罐 | +| canned_evaporated_milk_open | 打开的淡奶罐头 | Open Canned Evaporated Milk | 4 | 0.60 | 6 | 开罐后可食 | +| canned_fruit_cocktail | 水果鸡尾酒罐头 | Canned Fruit Cocktail | — | — | — | 需开罐 | +| canned_fruit_cocktail_open | 打开的水果鸡尾酒罐头 | Open Canned Fruit Cocktail | 5 | 0.55 | 5 | 开罐后可食 | +| canned_mushroom_soup | 蘑菇汤罐头 | Canned Mushroom Soup | — | — | — | 需开罐 | +| canned_mushroom_soup_open | 打开的蘑菇汤罐头 | Open Canned Mushroom Soup | 6 | 0.65 | 6 | 开罐后可食 | +| canned_peaches | 桃子罐头 | Canned Peaches | — | — | — | 需开罐 | +| canned_peaches_open | 打开的桃子罐头 | Open Canned Peaches | 5 | 0.55 | 5 | 开罐后可食 | +| canned_peas | 豌豆罐头 | Canned Peas | — | — | — | 需开罐 | +| canned_peas_open | 打开的豌豆罐头 | Open Canned Peas | 4 | 0.50 | 3 | 开罐后可食 | +| canned_pineapple | 菠萝罐头 | Canned Pineapple | — | — | — | 需开罐 | +| canned_pineapple_open | 打开的菠萝罐头 | Open Canned Pineapple | 5 | 0.55 | 5 | 开罐后可食 | +| canned_potato | 土豆罐头 | Canned Potato | — | — | — | 需开罐 | +| canned_potato_open | 打开的土豆罐头 | Open Canned Potato | 6 | 0.65 | 2 | 开罐后可食 | +| canned_spaghetti_bolognese | 肉酱意面罐头 | Canned Spaghetti Bolognese | — | — | — | 需开罐 | +| canned_spaghetti_bolognese_open | 打开的肉酱意面罐头 | Open Canned Spaghetti Bolognese | 8 | 0.85 | 2 | 开罐后可食(meat) | +| canned_vegetable_soup | 蔬菜汤罐头 | Canned Vegetable Soup | — | — | — | 需开罐 | +| canned_vegetable_soup_open | 打开的蔬菜汤罐头 | Open Canned Vegetable Soup | 6 | 0.65 | 6 | 开罐后可食 | +| canned_fruit_beverage | 水果饮料罐头 | Canned Fruit Beverage | — | — | — | 需开罐 | +| canned_fruit_beverage_open | 打开的水果饮料罐头 | Open Canned Fruit Beverage | 4 | 0.50 | 7 | 开罐后可食 | +| canned_sardines | 沙丁鱼罐头 | Canned Sardines | 7 | 0.75 | 2 | 免开罐(meat) | +| canned_tuna | 金枪鱼罐头 | Canned Tuna | 7 | 0.75 | 2 | 免开罐(meat) | + +## 2. 果汁盒 / 瓶装饮料 / 奶 + +| 物品 ID | 中文名 | 英文名 | 营养 | 饱食 | 补水量 | 备注 | +| --- | --- | --- | --- | --- | --- | --- | +| grape_juice_box | 葡萄汁盒 | Grape Juice Box | 3 | 0.35 | 7 | 喝动画 + 蜂蜜喝音效 | +| berry_juice_box | 浆果汁盒 | Berry Juice Box | 3 | 0.35 | 7 | 同上 | +| apple_juice_box | 苹果汁盒 | Apple Juice Box | 3 | 0.40 | 7 | 同上 | +| orange_juice_box | 橙汁盒 | Orange Juice Box | 3 | 0.45 | 7 | 同上 | +| peach_juice_bottle | 桃汁瓶 | Peach Juice Bottle | 4 | 0.45 | 8 | 喝完返空水瓶 | +| pineapple_juice_bottle | 菠萝汁瓶 | Pineapple Juice Bottle | 4 | 0.45 | 8 | 喝完返空水瓶 | +| milk_box | 牛奶盒 | Milk Box | 3 | 0.35 | 7 | SelectiveMilk(可选喝/倒) | +| milk_gallon | 牛奶桶 | Milk Gallon | 3 | 0.35 | 7 | 8 次耐久 | + +## 3. 汽水 / 能量饮料 / 咖啡 + +| 物品 ID | 中文名 | 英文名 | 营养 | 饱食 | 补水量 | 效果 | 备注 | +| --- | --- | --- | --- | --- | --- | --- | --- | +| cola | 可乐 | Cola | 2 | 0.25 | 6 | 无 | 返空罐 | +| pepsi | 百事 | Pepsi | 2 | 0.25 | 6 | 无 | 返空罐 | +| fanta_orange_soda | 芬达橙味 | Fanta Orange Soda | 2 | 0.25 | 6 | 无 | 返空罐 | +| fanta_grape_soda | 芬达葡萄味 | Fanta Grape Soda | 2 | 0.25 | 6 | 无 | 返空罐 | +| guarana_soda | 瓜拉纳汽水 | Guarana Soda | 2 | 0.25 | 6 | 无 | 返空罐 | +| monster | 魔爪能量 | Monster | 2 | 0.25 | 4 | 速度 I(1200t) + 急迫 I(1200t) | 4 次耐久,开盖音效,返空罐 | +| energy_drink | 能量饮料 | Energy Drink | 2 | 0.25 | 4 | 速度 I(900t) + 急迫 I(900t) | 4 次耐久,开盖音效,返空罐 | +| coffee | 咖啡 | Coffee | 2 | 0.25 | 4 | 急迫 I(900t) + 速度 I(600t) | 4 次耐久 | + +## 4. 酒类(全部 12 次耐久,喝完返容器) + +| 物品 ID | 中文名 | 英文名 | 营养 | 饱食 | 补水量 | 效果 | 容器 | +| --- | --- | --- | --- | --- | --- | --- | --- | +| beer | 啤酒 | Beer | 1 | 0.10 | 3 | 反胃(160t) | 空玻璃瓶 | +| duff_beer | 达夫啤酒 | Duff Beer | 1 | 0.10 | 3 | 反胃(160t) | 空罐 | +| vodka | 伏特加 | Vodka | 1 | 0.05 | 1 | 反胃(220t) + 虚弱(160t) | 空玻璃瓶 | +| whiskey | 威士忌 | Whiskey | 1 | 0.05 | 1 | 反胃(220t) + 虚弱(160t) | 空玻璃瓶 | +| wine | 葡萄酒 | Wine | 1 | 0.10 | 2 | 反胃(180t) | 空玻璃瓶 | + +## 5. 快餐 / 熟食(含腐烂版) + +| 物品 ID | 中文名 | 英文名 | 营养 | 饱食 | 备注 | +| --- | --- | --- | --- | --- | --- | +| big_burger | 大汉堡 | Big Burger | 10 | 0.90 | | +| big_burger_rotten | 腐烂的大汉堡 | Rotten Big Burger | 4 | 0.20 | 饥饿(85%) + 反胃(20%) | +| burger | 汉堡 | Burger | 7 | 0.65 | | +| burger_rotten | 腐烂的汉堡 | Rotten Burger | 3 | 0.15 | 饥饿(85%) + 反胃(20%) | +| cheese_burger | 芝士汉堡 | Cheese Burger | 8 | 0.75 | | +| cheese_burger_rotten | 腐烂的芝士汉堡 | Rotten Cheese Burger | 3 | 0.15 | 饥饿(85%) + 反胃(20%) | +| burrito | 卷饼 | Burrito | 6 | 0.60 | | +| burrito_rotten | 腐烂的卷饼 | Rotten Burrito | 3 | 0.15 | 饥饿(85%) + 反胃(20%) | +| hot_dog | 热狗 | Hot Dog | 6 | 0.55 | | +| hot_dog_rotten | 腐烂的热狗 | Rotten Hot Dog | 3 | 0.15 | 饥饿(85%) + 反胃(20%) | +| taco | 玉米卷 | Taco | 5 | 0.50 | | +| taco_rotten | 腐烂的玉米卷 | Rotten Taco | 2 | 0.10 | 饥饿(85%) + 反胃(20%) | +| toast | 吐司 | Toast | 3 | 0.25 | | +| toast_rotten | 腐烂的吐司 | Rotten Toast | 1 | 0.05 | 饥饿(85%) + 反胃(20%) | +| waffles | 华夫饼 | Waffles | 5 | 0.45 | | +| waffles_rotten | 腐烂的华夫饼 | Rotten Waffles | 2 | 0.10 | 饥饿(85%) + 反胃(20%) | +| biscuit | 饼干 | Biscuit | 3 | 0.30 | | +| biscuit_rotten | 腐烂的饼干 | Rotten Biscuit | 1 | 0.05 | 饥饿(85%) + 反胃(20%) | +| donut | 甜甜圈 | Donut | 4 | 0.35 | | +| donut_rotten | 腐烂的甜甜圈 | Rotten Donut | 1 | 0.05 | 饥饿(85%) + 反胃(20%) | + +## 6. 零食 / 甜食 / 酱料 + +| 物品 ID | 中文名 | 英文名 | 营养 | 饱食 | 备注 | +| --- | --- | --- | --- | --- | --- | +| candys | 糖果 | Candys | 2 | 0.15 | | +| chocolate_bar | 巧克力棒 | Chocolate Bar | 4 | 0.35 | | +| energy_bar | 能量棒 | Energy Bar | 4 | 0.45 | 速度 I(300t) | +| granola_bar | 燕麦棒 | Granola Bar | 4 | 0.45 | | +| smirkers_bar | 斯尼克棒 | Smirkers Bar | 4 | 0.35 | | +| sniksnak_bar | 斯尼克零食棒 | Sniksnak Bar | 4 | 0.35 | | +| fruit_jam | 果酱 | Fruit Jam | 3 | 0.25 | | +| peanut_butter | 花生酱 | Peanut Butter | 5 | 0.60 | | +| butter | 黄油 | Butter | 1 | 0.08 | | +| cheese | 奶酪 | Cheese | 3 | 0.30 | | +| cheese_bread | 芝士面包 | Cheese Bread | 4 | 0.40 | | + +## 7. 巴西小食 + +| 物品 ID | 中文名 | 英文名 | 营养 | 饱食 | 备注 | +| --- | --- | --- | --- | --- | --- | +| brigadeiro | 巴西巧克力球 | Brigadeiro | 3 | 0.25 | | +| coxinha | 巴西炸鸡肉饺 | Coxinha | 6 | 0.60 | | +| rotten_coxinha | 腐烂的炸鸡肉饺 | Rotten Coxinha | 2 | 0.10 | 饥饿(85%) + 反胃(20%) | +| coxinha_dough | 炸鸡肉饺生面团 | Coxinha Dough | 1 | 0.03 | 中毒(160t, 100%) | +| raw_coxinha | 生炸鸡肉饺 | Raw Coxinha | 1 | 0.03 | 中毒(160t, 100%) | +| pastel_dough | 炸饺面团 | Pastel Dough | 1 | 0.03 | 中毒(160t, 100%) | +| raw_cheese_pastel | 生芝士炸饺 | Raw Cheese Pastel | 1 | 0.03 | 中毒(160t, 100%) | +| raw_meat_pastel | 生肉馅炸饺 | Raw Meat Pastel | 1 | 0.03 | 中毒(160t, 100%) | +| raw_wind_pastel | 生空心炸饺 | Raw Wind Pastel | 1 | 0.03 | 中毒(160t, 100%) | +| meat_pastel | 肉馅炸饺 | Meat Pastel | 6 | 0.60 | | +| wind_pastel | 空心炸饺 | Wind Pastel | 4 | 0.35 | | +| pacoquita | 巴西花生糖 | Pacoquita | 3 | 0.25 | | +| saltine_cracker | 苏打饼干 | Saltine Cracker | 2 | 0.10 | | + +## 8. 披萨 / 薯片 / 谷物(袋装为容器,出多个) + +| 物品 ID | 中文名 | 英文名 | 营养 | 饱食 | 备注 | +| --- | --- | --- | --- | --- | --- | +| pizza | 披萨片 | Pizza Slice | 4 | 0.40 | | +| pizza_box | 披萨盒 | Pizza Box | — | — | 耐久 4,每次出 2 片披萨 | +| chips | 薯片 | Chips | 2 | 0.15 | | +| plain_chips_bag | 原味薯片袋 | Plain Chips Bag | — | — | 耐久 4,出 4 薯片 | +| barbecue_chips_bag | 烧烤味薯片袋 | Barbecue Chips Bag | — | — | 耐久 4,出 4 薯片 | +| salt_vinegar_chips_bag | 盐醋味薯片袋 | Salt & Vinegar Chips Bag | — | — | 耐久 4,出 4 薯片 | +| sour_cream_onion_chips_bag | 酸奶油洋葱味薯片袋 | Sour Cream & Onion Chips Bag | — | — | 耐久 4,出 4 薯片 | +| candy_package | 糖果包 | Candy Package | — | — | 耐久 4,出 4 糖果 | +| cereal_fruit_loops_flakes | 水果圈麦片 | Fruit Loops Cereal | 1 | 0.08 | | +| cereal_kelloggys_flakes | 家乐氏麦片 | Kelloggys Cereal | 1 | 0.08 | | +| cereal | 麦片盒 | Cereal Box | — | — | 耐久 4,出 6 家乐氏麦片 | +| cereal_fruit_loops | 水果圈麦片盒 | Fruit Loops Cereal Box | — | — | 耐久 4,出 6 水果圈麦片 | +| cereal_kelloggys | 家乐氏麦片盒 | Kelloggys Cereal Box | — | — | 耐久 4,出 6 家乐氏麦片 | + +## 9. 草药(可食用 / 可种植) + +| 物品 ID | 中文名 | 英文名 | 效果 | +| --- | --- | --- | --- | +| green_herb | 绿草 | Green Herb | 再生(60t) | +| red_herb | 红草 | Red Herb | 饱和(40t) | +| blue_herb | 蓝草 | Blue Herb | 再生(40t) | +| yellow_herb | 黄草 | Yellow Herb | 吸收(100t) | +| crushed_green_herb | 绿草粉 | Crushed Green Herb | 再生(100t) | +| crushed_red_herb | 红草粉 | Crushed Red Herb | 饱和(60t) | +| crushed_blue_herb | 蓝草粉 | Crushed Blue Herb | 解毒 | +| crushed_yellow_herb | 黄草粉 | Crushed Yellow Herb | 吸收(200t) | +| mixed_gg_herbs | 混合草药 GG | Mixed GG Herbs | 再生 I(160t) | +| mixed_ggg_herbs | 混合草药 GGG | Mixed GGG Herbs | 再生 I(300t) | +| mixed_gr_herbs | 混合草药 GR | Mixed GR Herbs | 再生 I(240t) | +| mixed_ggr_herbs | 混合草药 GGR | Mixed GGR Herbs | 再生 II(240t) | +| mixed_gb_herbs | 混合草药 GB | Mixed GB Herbs | 再生(160t) + 解毒 | +| mixed_ggb_herbs | 混合草药 GGB | Mixed GGB Herbs | 再生 I(200t) + 解毒 | +| mixed_gy_herbs | 混合草药 GY | Mixed GY Herbs | 再生(160t) + 吸收(200t) | +| mixed_ggy_herbs | 混合草药 GGY | Mixed GGY Herbs | 再生 I(240t) + 吸收(200t) | +| mixed_gyb_herbs | 混合草药 GYB | Mixed GYB Herbs | 再生(160t) + 吸收(200t) + 解毒 | +| mixed_gry_herbs | 混合草药 GRY | Mixed GRY Herbs | 再生 I(240t) + 吸收 I(400t) | +| mixed_grb_herbs | 混合草药 GRB | Mixed GRB Herbs | 再生 I(240t) + 吸收(160t) + 解毒 | +| mixed_rb_herbs | 混合草药 RB | Mixed RB Herbs | 再生(100t) + 解毒 | + +--- + +### LSO 口渴副作用(饮料自带口渴效果) + +| 物品 | 效果 | 概率 | 时长 | +| --- | --- | --- | --- | +| beer / duff_beer | 口渴 | 35% | 500t | +| coffee | 口渴 | 18% | 300t | +| energy_drink / monster | 口渴 | 22% | 360t | +| vodka / whiskey | 口渴 | 75% | 800t | +| wine | 口渴 | 45% | 600t | + +### 说明 + +- 所有食物均不可附魔、无附魔光泽(`SimpleFoodItem`)。 +- 堆叠:普通食物 64(默认),饮品/罐头/盒装 16,耐久容器 1。 +- 腐烂版额外效果:饥饿(300t, 85%) + 反胃(120t, 20%)。 +- 生面团/生食材额外效果:中毒(160t, 100%)。 +- 注:葡语(pt_br)个别名未在生成文件中有条目(如 `rotten_*`、`coxinha_dough` 等),英文名可作兜底。 diff --git a/幸存者军火库食物表.xlsx b/幸存者军火库食物表.xlsx new file mode 100644 index 0000000..5db0aff Binary files /dev/null and b/幸存者军火库食物表.xlsx differ