From 75b0cea0000f0982faf8ea11287ee5eddffa4f41 Mon Sep 17 00:00:00 2001 From: Redeix Date: Sun, 25 Jan 2026 19:22:50 -0600 Subject: [PATCH] Artisan Table (#2857) * artisan table merging (#2766) * these should be good * Update recipes.miscellaneous.js * little typo Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> * fix typo, my bad gang * fix charnia * fixed recycling issues from the material rewrite, updated everything to the new recycling helper method * I'll move these eventually --------- Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> Co-authored-by: Pyritie * artisan table assets * asset update * Update recipes.artisan_table.js * asset update * lang * tag refactor * waiter! more assets please * recipes * done? * I forgor --------- Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> Co-authored-by: GameStar <56610486+BlueBoat29@users.noreply.github.com> Co-authored-by: Pyritie --- .../quests/chapters/questssteam_age.snbt | 21 +- .../assets/tfg/blockstates/artisan_table.json | 19 + kubejs/assets/tfg/lang/en_us.json | 6 +- .../tfg/models/block/artisan_table.json | 468 ++++++++++++++ .../assets/tfg/models/item/artisan_table.json | 3 + .../tfg/textures/block/artisan_table.png | Bin 0 -> 1157 bytes .../tfg/textures/block/artisan_table_n.png | Bin 0 -> 104 bytes .../tfg/textures/block/artisan_table_s.png | Bin 0 -> 330 bytes .../gui/artisan_table/artisan_table.png | Bin 0 -> 3744 bytes .../artisan_table/blank_phenolic_board.png | Bin 0 -> 220 bytes .../gui/artisan_table/blank_resin_board.png | Bin 0 -> 230 bytes .../gui/artisan_table/casting_mold_active.png | Bin 0 -> 204 bytes .../gui/artisan_table/casting_mold_border.png | Bin 0 -> 1646 bytes .../artisan_table/casting_mold_inactive.png | Bin 0 -> 212 bytes .../artisan_table/extruder_mold_active.png | Bin 0 -> 208 bytes .../artisan_table/extruder_mold_border.png | Bin 0 -> 1367 bytes .../artisan_table/phenolic_board_border.png | Bin 0 -> 1054 bytes .../phenolic_board_border_4x.png | Bin 0 -> 1197 bytes .../artisan_table/printed_phenolic_board.png | Bin 0 -> 451 bytes .../gui/artisan_table/printed_resin_board.png | Bin 0 -> 439 bytes .../gui/artisan_table/resin_board_border.png | Bin 0 -> 1068 bytes .../artisan_table/resin_board_border_4x.png | Bin 0 -> 1216 bytes .../tfg/loot_tables/blocks/artisan_table.json | 20 + kubejs/server_scripts/tacz/recipes.misc.js | 32 - .../tfg/machines/recipes.molds.js | 340 ++--------- .../tfg/primitive/recipes.artisan_table.js | 572 ++++++++++++++++++ .../tfg/primitive/tags.primitive.js | 17 +- kubejs/server_scripts/tfg/recipes.js | 1 + .../tfg/recipes.miscellaneous.js | 1 + kubejs/server_scripts/tfg/tags.js | 1 + 30 files changed, 1170 insertions(+), 331 deletions(-) create mode 100644 kubejs/assets/tfg/blockstates/artisan_table.json create mode 100644 kubejs/assets/tfg/models/block/artisan_table.json create mode 100644 kubejs/assets/tfg/models/item/artisan_table.json create mode 100644 kubejs/assets/tfg/textures/block/artisan_table.png create mode 100644 kubejs/assets/tfg/textures/block/artisan_table_n.png create mode 100644 kubejs/assets/tfg/textures/block/artisan_table_s.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/artisan_table.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/blank_phenolic_board.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/blank_resin_board.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/casting_mold_active.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/casting_mold_border.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/casting_mold_inactive.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/extruder_mold_active.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/extruder_mold_border.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/phenolic_board_border.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/phenolic_board_border_4x.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/printed_phenolic_board.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/printed_resin_board.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/resin_board_border.png create mode 100644 kubejs/assets/tfg/textures/gui/artisan_table/resin_board_border_4x.png create mode 100644 kubejs/data/tfg/loot_tables/blocks/artisan_table.json create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.artisan_table.js diff --git a/config/ftbquests/quests/chapters/questssteam_age.snbt b/config/ftbquests/quests/chapters/questssteam_age.snbt index 063f32332..433379c42 100644 --- a/config/ftbquests/quests/chapters/questssteam_age.snbt +++ b/config/ftbquests/quests/chapters/questssteam_age.snbt @@ -695,14 +695,21 @@ shape: "square" size: 1.0d subtitle: "{quests.steam_age.circuit_boards.subtitle}" - tasks: [{ - id: "2B8B038789480789" - item: "gtceu:resin_printed_circuit_board" - type: "item" - }] + tasks: [ + { + id: "2B8B038789480789" + item: "gtceu:resin_printed_circuit_board" + type: "item" + } + { + id: "171A20DD9F208437" + item: "tfg:artisan_table" + type: "item" + } + ] title: "{quests.steam_age.circuit_boards.title}" - x: -9.5d - y: 10.5d + x: -10.0d + y: 10.0d } { dependencies: ["46FA9DD4755A5548"] diff --git a/kubejs/assets/tfg/blockstates/artisan_table.json b/kubejs/assets/tfg/blockstates/artisan_table.json new file mode 100644 index 000000000..ab7af4fcc --- /dev/null +++ b/kubejs/assets/tfg/blockstates/artisan_table.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=east": { + "model": "tfg:block/artisan_table", + "y": 90 + }, + "facing=north": { + "model": "tfg:block/artisan_table" + }, + "facing=south": { + "model": "tfg:block/artisan_table", + "y": 180 + }, + "facing=west": { + "model": "tfg:block/artisan_table", + "y": 270 + } + } +} \ No newline at end of file diff --git a/kubejs/assets/tfg/lang/en_us.json b/kubejs/assets/tfg/lang/en_us.json index 3075912c4..c7ae766bd 100644 --- a/kubejs/assets/tfg/lang/en_us.json +++ b/kubejs/assets/tfg/lang/en_us.json @@ -810,6 +810,8 @@ "block.tfg.impure_moderate_core": "Impure Moderate Core", "block.tfg.moderate_core_frame": "Moderate Core Frame", "block.tfg.impure_moderate_core_frame": "Impure Moderate Core Frame", + "tfg.block_entity.artisan_table": "Artisan Table", + "block.tfg.artisan_table": "Artisan Table", "fluid.tfg.heavy_ammoniacal_water": "Heavy Ammoniacal Water", "fluid.tfg.semiheavy_ammoniacal_water": "Semiheavy Ammoniacal Water", "fluid.tfg.sulfur_fumes": "Dense Sulfuric Fumes", @@ -1746,6 +1748,8 @@ "tfg.tooltip.component.nuclear_turbine_2": "Each Rotor Holder above §5EV§r §7adds§r 10% efficiency and multiplies EU/t by 2.", "tfg.tooltip.component.smr_generator_1": "§eBase Production:§r 4096 EU/t", "tfg.tooltip.component.smr_generator_2": "Dedicated to produce power from sCO2 and the Small Modular Reactor.\n Use Lubricant and Booster to increase its efficiency and manage the cooling loop of the SMR.", + "tfg.tooltip.show_recipes": "Show Recipes", + "emi.category.tfg.artisan_table": "Artisan Table", "tfg.gui.refrigerator.unify_dates.enabled": "Expiration Date Unification is: §aOn", "tfg.gui.refrigerator.unify_dates.disabled": "Expiration Date Unification is: §cOff", "tfg.machine.food_refrigerator_power_usage": "§7Consumes§r %s EU/t §7while active to keep your food fresh.§r", @@ -4017,7 +4021,7 @@ "quests.steam_age.resin_boards.desc": "Did you know tree taps can drip directly into GregTech pipes and drums? Now you do!", "quests.steam_age.circuit_boards.title": "Electronics #2: Circuit Boards", "quests.steam_age.circuit_boards.subtitle": "The easier component for circuits", - "quests.steam_age.circuit_boards.desc": "Combine those Resin Circuit Boards with some Copper Wires and you've got the base for your first &aCircuit&r!", + "quests.steam_age.circuit_boards.desc": "Some delicate craftsmanship in an &3Artisan Table&r will allow you to combine those Resin Circuit Boards with some Copper Wires to create your first &aCircuit&r!\n\nThe Artisan Table works on the same principal as Knapping, but this time with additional item and tool inputs.", "quests.steam_age.vacuum_chamber.title": "Vacuum Chamber", "quests.steam_age.vacuum_chamber.subtitle": "Putting the Vacuum in Vacuum Tubes", "quests.steam_age.vacuum_chamber.desc": "This machine is the final step in making your first Vacuum Tubes. Place it above a Basin and give it some power, and make sure the machine is set to Vacuumizing mode.\n\nThis machine can also help liquefy glue and rubber while being heated by either a Charcoal Forge or a Blaze Burner.", diff --git a/kubejs/assets/tfg/models/block/artisan_table.json b/kubejs/assets/tfg/models/block/artisan_table.json new file mode 100644 index 000000000..5219925d6 --- /dev/null +++ b/kubejs/assets/tfg/models/block/artisan_table.json @@ -0,0 +1,468 @@ +{ + "format_version": "1.9.0", + "credit": "Made with Blockbench", + "texture_size": [32, 32], + "textures": { + "0": "tfg:block/artisan_table", + "particle": "#0" + }, + "elements": [ + { + "from": [0.98, 0, 1], + "to": [2.98, 17, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [3, 1, 3]}, + "faces": { + "north": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "east": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "south": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "west": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "up": {"uv": [3.5, 2.5, 2.5, 1.5], "texture": "#0"}, + "down": {"uv": [3.5, 2.5, 2.5, 1.5], "texture": "#0"} + } + }, + { + "from": [1, 0, 12], + "to": [3, 13, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [3, 1, 14]}, + "faces": { + "north": {"uv": [15, 1.5, 16, 8], "texture": "#0"}, + "east": {"uv": [15, 1.5, 16, 8], "texture": "#0"}, + "south": {"uv": [15, 1.5, 16, 8], "texture": "#0"}, + "west": {"uv": [15, 1.5, 16, 8], "texture": "#0"}, + "up": {"uv": [3.5, 2.5, 2.5, 1.5], "texture": "#0"}, + "down": {"uv": [3.5, 2.5, 2.5, 1.5], "texture": "#0"} + } + }, + { + "from": [13, 0, 12], + "to": [15, 13, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 1, 14]}, + "faces": { + "north": {"uv": [15, 1.5, 16, 8], "texture": "#0"}, + "east": {"uv": [15, 1.5, 16, 8], "texture": "#0"}, + "south": {"uv": [15, 1.5, 16, 8], "texture": "#0"}, + "west": {"uv": [15, 1.5, 16, 8], "texture": "#0"}, + "up": {"uv": [3.5, 2.5, 2.5, 1.5], "texture": "#0"}, + "down": {"uv": [3.5, 2.5, 2.5, 1.5], "texture": "#0"} + } + }, + { + "from": [13.02, 0, 1], + "to": [15.02, 17, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [15.1, 1, 3]}, + "faces": { + "north": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "east": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "south": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "west": {"uv": [15, 0, 16, 8], "texture": "#0"}, + "up": {"uv": [3.5, 2.5, 2.5, 1.5], "texture": "#0"}, + "down": {"uv": [3.5, 2.5, 2.5, 1.5], "texture": "#0"} + } + }, + { + "from": [0.5, 3, 14], + "to": [3.5, 15, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 3, 16]}, + "faces": { + "north": {"uv": [0, 0, 1.5, 6], "texture": "#0"}, + "east": {"uv": [1.5, 0, 2.5, 6], "texture": "#0"}, + "south": {"uv": [0, 0, 1.5, 6], "texture": "#0"}, + "west": {"uv": [2.5, 0, 1.5, 6], "texture": "#0"}, + "up": {"uv": [2.5, 0, 4, 1], "texture": "#0"}, + "down": {"uv": [2.5, 1, 4, 0], "texture": "#0"} + } + }, + { + "from": [0.4, 13.1, 14.5], + "to": [3.6, 15.1, 15.5], + "rotation": {"angle": 0, "axis": "y", "origin": [3.5, 14.1, 15.5]}, + "faces": { + "north": {"uv": [14.5, 15, 16, 16], "texture": "#0"}, + "east": {"uv": [3.5, 1, 4, 1.5], "texture": "#0"}, + "south": {"uv": [14.5, 15, 16, 16], "texture": "#0"}, + "west": {"uv": [2.5, 1, 3.5, 1.5], "texture": "#0"}, + "up": {"uv": [4, 1.5, 2.5, 1], "texture": "#0"}, + "down": {"uv": [16, 16, 14.5, 15.5], "texture": "#0"} + } + }, + { + "from": [1.5, 7.5, 11], + "to": [2.5, 8.5, 17], + "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 7.5, 17]}, + "faces": { + "north": {"uv": [0, 6, 0.5, 6.5], "texture": "#0"}, + "east": {"uv": [3, 6, 0, 6.5], "texture": "#0"}, + "south": {"uv": [2.5, 6, 3, 6.5], "texture": "#0"}, + "west": {"uv": [0, 6, 3, 6.5], "texture": "#0"}, + "up": {"uv": [0, 6.5, 3, 6], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 6.5, 0, 6], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [0.6, 5.7, 16.5], + "to": [1.6, 9.7, 16.5], + "rotation": {"angle": -22.5, "axis": "z", "origin": [1.6, 5.7, 16.5]}, + "faces": { + "north": {"uv": [0, 6, 2, 6.5], "rotation": 90, "texture": "#0"}, + "east": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "south": {"uv": [0, 6, 2, 6.5], "rotation": 90, "texture": "#0"}, + "west": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "up": {"uv": [16, 16, 15.5, 15.5], "texture": "#0"}, + "down": {"uv": [16, 15.5, 15.5, 16], "texture": "#0"} + } + }, + { + "from": [13.5, 9, 3], + "to": [14.5, 13, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [14.5, 11, 11]}, + "faces": { + "north": {"uv": [9.5, 0, 10, 2], "texture": "#0"}, + "east": {"uv": [5.5, 0, 10, 2], "texture": "#0"}, + "south": {"uv": [5.5, 0, 6, 2], "texture": "#0"}, + "west": {"uv": [5.5, 0, 10, 2], "texture": "#0"}, + "up": {"uv": [10, 0.5, 5.5, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [5.5, 2, 10, 1.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [1.5, 9, 3], + "to": [2.5, 13, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 11, 11]}, + "faces": { + "north": {"uv": [9.5, 0, 10, 2], "texture": "#0"}, + "east": {"uv": [5.5, 0, 10, 2], "texture": "#0"}, + "south": {"uv": [5.5, 0, 6, 2], "texture": "#0"}, + "west": {"uv": [5.5, 0, 10, 2], "texture": "#0"}, + "up": {"uv": [10, 0.5, 5.5, 0], "rotation": 90, "texture": "#0"}, + "down": {"uv": [5.5, 2, 10, 1.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [3, 9, 12.5], + "to": [7, 13, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 11, 13.5]}, + "faces": { + "north": {"uv": [6, 0, 8, 2], "texture": "#0"}, + "east": {"uv": [7.5, 0, 8, 2], "texture": "#0"}, + "south": {"uv": [6, 0, 8, 2], "texture": "#0"}, + "west": {"uv": [6, 0, 6.5, 2], "texture": "#0"}, + "up": {"uv": [8, 0.5, 6, 0], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6, 2, 8, 1.5], "texture": "#0"} + } + }, + { + "from": [3, 9, 1.5], + "to": [13, 18, 2.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 9, 3.5]}, + "faces": { + "north": {"uv": [10, 0, 15, 4.5], "texture": "#0"}, + "east": {"uv": [10, 0, 10.5, 4.5], "texture": "#0"}, + "south": {"uv": [15, 0, 10, 4.5], "texture": "#0"}, + "west": {"uv": [14.5, 0, 15, 4.5], "texture": "#0"}, + "up": {"uv": [15, 0.5, 10, 0], "texture": "#0"}, + "down": {"uv": [15, 4.5, 10, 4], "texture": "#0"} + } + }, + { + "from": [3, 7, 1], + "to": [13, 9, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 7, 3]}, + "faces": { + "north": {"uv": [15, 2.5, 16, 7.5], "rotation": 90, "texture": "#0"}, + "east": {"uv": [2.5, 1.5, 3.5, 2.5], "texture": "#0"}, + "south": {"uv": [15, 2.5, 16, 7.5], "rotation": 90, "texture": "#0"}, + "west": {"uv": [2.5, 1.5, 3.5, 2.5], "texture": "#0"}, + "up": {"uv": [16, 7.5, 15, 2.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [16, 7.5, 15, 2.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [7, 9, 5.5], + "to": [13, 13, 14.5], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 11, 14.5]}, + "faces": { + "north": {"uv": [0, 6.5, 3, 8.5], "texture": "#0"}, + "east": {"uv": [0.5, 12.5, 2.5, 8], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 6.5, 3, 8.5], "texture": "#0"}, + "west": {"uv": [2.5, 8, 0.5, 12.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 8, 3, 12.5], "texture": "#0"}, + "down": {"uv": [0, 8, 3, 12.5], "texture": "#0"} + } + }, + { + "from": [8.5, 9.5, 14.5], + "to": [11.5, 11.5, 14.5], + "rotation": {"angle": -22.5, "axis": "x", "origin": [11.5, 11.5, 14.5]}, + "faces": { + "north": {"uv": [2.5, 2.5, 4, 3.5], "texture": "#0"}, + "east": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "south": {"uv": [2.5, 2.5, 4, 3.5], "texture": "#0"}, + "west": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "up": {"uv": [16, 16, 15.5, 15.5], "texture": "#0"}, + "down": {"uv": [16, 15.5, 15.5, 16], "texture": "#0"} + } + }, + { + "name": "mold", + "from": [6, 14.2, 5.5], + "to": [11, 14.2, 10.5], + "rotation": {"angle": 22.5, "axis": "y", "origin": [11, 14.2, 10.5]}, + "faces": { + "north": {"uv": [0, 1, 2.5, 1], "texture": "#0"}, + "east": {"uv": [0, 1, 2.5, 1], "texture": "#0"}, + "south": {"uv": [0, 1, 2.5, 1], "texture": "#0"}, + "west": {"uv": [0, 1, 2.5, 1], "texture": "#0"}, + "up": {"uv": [7, 15, 4.5, 12.5], "texture": "#0"}, + "down": {"uv": [2.5, 2.5, 0, 0], "texture": "#0"} + } + }, + { + "name": "top", + "from": [1, 13, 2], + "to": [15, 14, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 13, 6]}, + "faces": { + "north": {"uv": [15, 4.5, 8, 5], "texture": "#0"}, + "east": {"uv": [14.5, 4.5, 15, 10.5], "rotation": 90, "texture": "#0"}, + "south": {"uv": [8, 10, 15, 10.5], "texture": "#0"}, + "west": {"uv": [8.5, 10.5, 8, 4.5], "rotation": 90, "texture": "#0"}, + "up": {"uv": [8, 4.5, 15, 10.5], "texture": "#0"}, + "down": {"uv": [8, 10.5, 15, 4.5], "texture": "#0"} + } + }, + { + "name": "paper", + "from": [1.8, 14.1, 5.8], + "to": [10.8, 14.1, 12.8], + "rotation": {"angle": -22.5, "axis": "y", "origin": [8.8, 14.1, 12.8]}, + "faces": { + "north": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "east": {"uv": [15.5, 16, 16, 15.5], "texture": "#0"}, + "south": {"uv": [15.5, 16, 16, 15.5], "texture": "#0"}, + "west": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "up": {"uv": [0, 12.5, 4.5, 16], "texture": "#0"}, + "down": {"uv": [4.5, 16, 0, 12.5], "texture": "#0"} + } + }, + { + "from": [11, 14, 2.5], + "to": [12, 17, 3.5], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 14, 3.5]}, + "faces": { + "north": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "east": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "south": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "west": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "up": {"uv": [3.5, 6.5, 3, 6], "texture": "#0"}, + "down": {"uv": [3.5, 7.5, 3, 7], "texture": "#0"} + } + }, + { + "from": [10.9, 17, 2.6], + "to": [11.9, 21, 2.6], + "rotation": {"angle": 45, "axis": "y", "origin": [11.9, 17, 2.6]}, + "faces": { + "north": {"uv": [3.5, 4, 4, 6], "texture": "#0"}, + "east": {"uv": [0, 1.5, 0, 3], "texture": "#0"}, + "south": {"uv": [3.5, 4, 4, 6], "texture": "#0"}, + "west": {"uv": [1, 1.5, 1, 3], "texture": "#0"}, + "up": {"uv": [0.5, 0, 0, 0], "texture": "#0"}, + "down": {"uv": [0.5, 1, 0, 1], "texture": "#0"} + } + }, + { + "from": [9.5, 14, 2.5], + "to": [10.5, 17, 3.5], + "rotation": {"angle": 0, "axis": "y", "origin": [10.5, 14, 3.5]}, + "faces": { + "north": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "east": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "south": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "west": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "up": {"uv": [3.5, 6.5, 3, 6], "texture": "#0"}, + "down": {"uv": [3.5, 7.5, 3, 7], "texture": "#0"} + } + }, + { + "from": [9.5, 17, 3], + "to": [10.5, 20, 3], + "rotation": {"angle": 45, "axis": "y", "origin": [10, 17, 3]}, + "faces": { + "north": {"uv": [3.5, 6, 4, 7.5], "texture": "#0"}, + "east": {"uv": [0, 1.5, 0, 3], "texture": "#0"}, + "south": {"uv": [3.5, 6, 4, 7.5], "texture": "#0"}, + "west": {"uv": [1, 1.5, 1, 3], "texture": "#0"}, + "up": {"uv": [0.5, 0, 0, 0], "texture": "#0"}, + "down": {"uv": [0.5, 1, 0, 1], "texture": "#0"} + } + }, + { + "from": [8, 14, 2.5], + "to": [9, 17, 3.5], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 14, 3.5]}, + "faces": { + "north": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "east": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "south": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "west": {"uv": [3, 6, 3.5, 7.5], "texture": "#0"}, + "up": {"uv": [3.5, 6.5, 3, 6], "texture": "#0"}, + "down": {"uv": [3.5, 7.5, 3, 7], "texture": "#0"} + } + }, + { + "from": [8, 17, 3], + "to": [9, 20, 3], + "rotation": {"angle": 45, "axis": "y", "origin": [8.5, 17, 3]}, + "faces": { + "north": {"uv": [3.5, 6, 4, 7.5], "texture": "#0"}, + "east": {"uv": [0, 1.5, 0, 3], "texture": "#0"}, + "south": {"uv": [3.5, 6, 4, 7.5], "texture": "#0"}, + "west": {"uv": [1, 1.5, 1, 3], "texture": "#0"}, + "up": {"uv": [0.5, 0, 0, 0], "texture": "#0"}, + "down": {"uv": [0.5, 1, 0, 1], "texture": "#0"} + } + }, + { + "name": "cutter", + "from": [15, 9, 5.7], + "to": [15, 15, 11.7], + "rotation": {"angle": -45, "axis": "x", "origin": [15, 9, 11.7]}, + "faces": { + "north": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "east": {"uv": [5, 2, 8, 5], "texture": "#0"}, + "south": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "west": {"uv": [8, 2, 5, 5], "texture": "#0"}, + "up": {"uv": [0, 2, 0, 0], "texture": "#0"}, + "down": {"uv": [0, 2, 0, 0], "texture": "#0"} + } + }, + { + "from": [2.84814, 14.2, 5.84814], + "to": [7.84814, 15.2, 7.84814], + "rotation": {"angle": 0, "axis": "y", "origin": [2.84814, 14.2, 7.84814]}, + "faces": { + "north": {"uv": [5.5, 5, 6, 7.5], "rotation": 90, "texture": "#0"}, + "east": {"uv": [5, 5, 6, 5.5], "texture": "#0"}, + "south": {"uv": [5.5, 7.5, 5, 5], "rotation": 90, "texture": "#0"}, + "west": {"uv": [6, 7, 5, 7.5], "texture": "#0"}, + "up": {"uv": [6, 7.5, 5, 5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3.5, 6, 2.5, 3.5], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [4, 15.96444, 5.84814], + "to": [5, 15.96444, 7.84814], + "rotation": {"angle": -22.5, "axis": "z", "origin": [3, 15.96444, 7.84814]}, + "faces": { + "north": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "east": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "south": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "west": {"uv": [15.5, 15.5, 16, 16], "texture": "#0"}, + "up": {"uv": [7, 7.5, 6, 6.5], "rotation": 90, "texture": "#0"}, + "down": {"uv": [7, 7.5, 6, 6.5], "rotation": 270, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 153, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, -149, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, -45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, -45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 45, 0], + "scale": [0.625, 0.625, 0.625] + }, + "head": { + "rotation": [0, -180, 0], + "translation": [0, 6.75, 0], + "scale": [1.5, 1.5, 1.5] + }, + "fixed": { + "rotation": [0, 180, 0], + "translation": [0, 0, -2], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "legs", + "origin": [12, 0, 12], + "color": 0, + "children": [0, 1, 2, 3] + }, + { + "name": "vise", + "origin": [12.5, 1, 1], + "color": 0, + "children": [4, 5, 6, 7] + }, + { + "name": "sides", + "origin": [2.5, 10, 5], + "color": 0, + "children": [8, 9, 10, 11, 12] + }, + { + "name": "drawer", + "origin": [4, 10, 2.5], + "color": 0, + "children": [13, 14] + }, + { + "name": "table_top", + "origin": [5, 13.2, 5.5], + "color": 0, + "children": [15, 16, 17] + }, + { + "name": "tool_rack", + "origin": [4, 13, 11.5], + "color": 0, + "children": [ + { + "name": "tool1", + "origin": [4, 13, 11.5], + "color": 0, + "children": [18, 19] + }, + { + "name": "tool2", + "origin": [4, 13, 11.5], + "color": 0, + "children": [20, 21] + }, + { + "name": "tool3", + "origin": [4, 13, 11.5], + "color": 0, + "children": [22, 23] + }, + 24, + { + "name": "plane", + "origin": [13.15186, 13, 8.15186], + "color": 0, + "children": [25, 26] + } + ] + } + ] +} \ No newline at end of file diff --git a/kubejs/assets/tfg/models/item/artisan_table.json b/kubejs/assets/tfg/models/item/artisan_table.json new file mode 100644 index 000000000..403b73459 --- /dev/null +++ b/kubejs/assets/tfg/models/item/artisan_table.json @@ -0,0 +1,3 @@ +{ + "parent": "tfg:block/artisan_table" +} \ No newline at end of file diff --git a/kubejs/assets/tfg/textures/block/artisan_table.png b/kubejs/assets/tfg/textures/block/artisan_table.png new file mode 100644 index 0000000000000000000000000000000000000000..074b058721c3fa9dc947a47e446dbbb66cb46f3a GIT binary patch literal 1157 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANMUR-P`7Ar*7>gq_b;4wd#^j;aqErr1{8>b_QgP|ij~-&I7vNhde;sJHEk z_9k}0R=I0?wZMxKywr#T*7bKkDK%GTQYwaR4A8{2v(zxnpfY@Rf0o4eb__*=G@@7=a^ z*%{L|ujl28H+f2yHhixasJiTY$mDnU)-9<`H+5EBeP!rSfu# z%W}I|`2uys7OtMo&d!@r<#bDbZ>jg4%_jEpoRf-sv`u-Kf7bk)5&B?JlUc_Cg@5iW z8ScE2D`rpA(7AqkkzUWqlb$~Q{_X{A>*985S{{Ah;^-)|JoQ|_4!3dx78#$TrZay$ zylpjY`gG;*;_H8M?%J^7!J2jJ9_^J5m$hM<*X{qlTf)4MQ}?~Mgd@fwgdiv@&mrzrEkIzA`u^R&(Z@8EY}DWUGT8XanB@_pt(d!&psSkb_sJ7> zOgP(lyO8bB6RxzaIxbt5e--_5ZQ=9=kwudxtdZvbp0Iw6%x{Zu`7ej=+?k_4sn9eg z`{lb=dj1Cz<`lC^yi4=gRoh*B=ilGEMrvvbo-5ez9#YBKvF_CFcgxv@ZvOvf;u#tt zvXe~A15h#TIFW(-Ltjw$IhJT z5!UhO`CWO^wLxi0|5oj!!$wbKI@p~K{3vhEJ2A6nAH%;DL1(%=Ox{jPv3^(g(*Mi0 zJ8idjwbz{xtytH=ux_4q*pY)?S9wDmUrw9zK9ceIZT7k6HqU-;{Cca^-lo-fg6|4SCntD+m>kGaivGr z@_h12ompYOqr@_9f3@wg`I+-%>dMzf`cvf&@!zkz8-B-{#U$tS%D3W6A6w|U+Ee#r@-=PU)AhXV=bul^&dyFydLp&PHQC8e##C4EAp2WG)=BYFl5T3BS=dzopr0M+Iwod5s; literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/block/artisan_table_n.png b/kubejs/assets/tfg/textures/block/artisan_table_n.png new file mode 100644 index 0000000000000000000000000000000000000000..e17ca0db4dfcef4b8bef12e9dd39d1e3b8f973fe GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}`kpS1ArY-_&lxf@FmN2+ r&{#C5nP=V=hhXE~m22#uGoS*`BEL{(JJ%lJK#;hntDnm{r-UW|vyd1+ literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/block/artisan_table_s.png b/kubejs/assets/tfg/textures/block/artisan_table_s.png new file mode 100644 index 0000000000000000000000000000000000000000..e14c94986d18aa9607a98f873ad5e9ad869daa2b GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANNff}SppArY-_r`ZZMD+sj8 zORoIrqbcj3oZ&n1)}3P;zsSTj&r;Il=@WXYe!yVn$IuSzchBE#(s?OSdr(2|$)_&Q!@dMvvne(Lh5 z@-u5sG%?umnJ-_gb|B;utCH9Wy#paZKB|AYwp&e#@hDJS>>%OqnEyuLw%o_nd%6NF z-%7;Jd3`psL4HcHe8h9xWAm$-mjo@G)u(rTo*d7E*B+wF)++AQs^{v9D^O%yWXn8z z?-GWUOZ9fW(X?RP#LOa|_~ObGTPAe|#so?0w6*P%Bfc{{kYKDe+T`nXkum6%J;Rqd l$Ja1ESMpi7Fi*Ar*7p-rbvb+e5tJ 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 dGtf}ii{ zy9&Q`&EJ+KnW)V>lTr4QIpZI*|LQJx4{mgTe~DWM4ft94t! literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/gui/artisan_table/casting_mold_active.png b/kubejs/assets/tfg/textures/gui/artisan_table/casting_mold_active.png new file mode 100644 index 0000000000000000000000000000000000000000..a57ab6c55499f9da3dcecc804bf53f588e343845 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0y~yVBi5^4mJh`hOp9@=L`%ClRaG=Lo_C~PBaudtiaevfcBa0BBQTt3>^VickJeSE;7+1 z%4qh~_SZbj?rV#+_uCm-uA8YG@*!%g%8wIky37tQ|8wsHtGYrV`>zL+Z!s`1FnGH9 KxvX)(IdMdH}} z@?&LYcXL?P{ib!fsP1E6|F<$@Vd_I|g|a>P`;>h-%c^Uk+3A3nIzDXcE{zcbnTr>FMOj}_0(K0ZFLa_w1ZC%&B9VU>OB zrT*5<-z2xXHepVN`*r@merkI)cq1*7cR4?E@|bzUO>;l*MET3*{B>~|i?#ET7CRg$ z&-<~c@YtcozX>&pQzvygEfciiFEV0Sd{y3Gi}f4_1G9l>oCm8WE5n1|^72d`VkIxn zIUFd@-@|!KlHwX?zQMhu3VAmXnDM4wo_AfeiwO2Ry&cT0i>$fimd~z=T_BN|M z-%j0PzH1Vhq`c^Z-M8=a_v?4;G-!Rd_14Wrr%&cAm@VV){-mrr|KZ*MkK5a>Ui@nQ z>Buy#8CHh+yF`Tk|N9(%WU8RM(W41oQ$*uEX6A)>&8)n`!NA2e=ktkb9*%dt>yzH} zJhbq8=TKZ4VED+TTt?jgUv-ncoc*DXA2%{3y_>lB;)So%u+|}3P>Npt=x!7`Np3l0Or?bod7%#(tzxwYV{`e8m+E;QnZTH3% zr>n%y&-OdR#t<=$RjFzE$A1w|J=OB9c5ofO;k^58degBteKy8rQm>})=^ZvX^O8Bt zr=>)Oo%6iI^q^GpG{v)?a{T8F=W&FeEB-I}YS$A_rRfuHzd2UvRhklfm*a^*(eq;( zOD#8@%wsV#xEV50$*)LFal5YUm6!G+mo`Ne{?7J{oL;(mul&BWe+T}xom1YTZMl6BotumkZ>!mZ#kGubkGqJ?Mm%zftP4 zW-F0bC)AcVuRg{c#<8Tly@b9PoLa93h zH5^XNm9CX~dt%cajwd2T(U%WeWIa7$GQD(W9!r)|itM!HnXNg$m~7rYU%f|p^$fma zf?Sn#b^BJuwk+EnD6ZM|F#B2gv-}xtg4GUlHL@oa%9>~JBpjRg`}gmS>?x8^o~lpI^`6e`Q8s_+rqDWJcS(Wi)Y6oxmk(NKsi(+ZI%u(_ zCFd8@o{sbB3@-iCeA zC%v~;y961Q>}Z&hd}rTp%UyT%7>oNjj#31_upTB zJrrDUN^n!&%LI`_XZh{g#T9&gE&|^B4}-nC%RV$$U{dVOveHWt~yTIk)+=>(LNTw)Eu_?y)j(D(Wfh zEf$z*uqOS(KX!Rny_XG3TlX-f|NHbnTH~o>1+&0*hX-|w*0FT>p7t<)JSl8K>fDxt zH#3Wr6O?B3Pg2%UReYN9X)>1{1M?BxJNtf1G92mR$oTWZRpG^9`F-Em!}zAm(44qJ z#ewIDuENTHDHBdVUlF|0HDKo~p?R_zhJxM9Gmg2WG^uU=w08G=rU<=+ik`fj!tbr? z-_;88MlAlaZOYRtD^t#RSt}GIti05AI<8USpPvJnCBDg{6e>4gP&{+1?ksL zybC@vVZxs+DP}X;*DCYO+1j`E&#xm7QqI0P*K&Q8=OLrwH70W(7zXL`=JQ-Hn80^M S!-s)^fx*+&&t;ucLK6V4-C8{W literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/gui/artisan_table/extruder_mold_active.png b/kubejs/assets/tfg/textures/gui/artisan_table/extruder_mold_active.png new file mode 100644 index 0000000000000000000000000000000000000000..9b05d102d032cf0b8747299c9cb3b6eab04f5643 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0y~yVBi5^4mJh`hOp9@=L`%C(>+}rLo_C~PITlutRTP~ znvh+=31wy}XJ9Wa^qW^W(zO20uHJ`S8pTj@FWv#iFB_l&-t7`9D z6%}3yh8^BzyHqAHH>xa&Ejo96#|A#$?bn|3dv8+z+q_uKbBX9SKOZyWdk>D9dd)JC zy%hC-n~3S7s~pVpqms4v*Dcz)#p-r-cxkrmmd_TRegz>~Pmf3|NEPz_d7bIRz`(%Z M>FVdQ&MBb@0Ql-oyZ`_I literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/gui/artisan_table/extruder_mold_border.png b/kubejs/assets/tfg/textures/gui/artisan_table/extruder_mold_border.png new file mode 100644 index 0000000000000000000000000000000000000000..4b6d25301fb4f14b4087809e06eaea03fa986176 GIT binary patch literal 1367 zcmeAS@N?(olHy`uVBq!ia0y~yU;twdHU#}|3H)BKi*6camC>_*)V5Z(2tt(SkaTPug_!=TGeO@@%g!)F|3H1zL1GdU&@o}iA zdL=`kI}So2xMW^uxQ>vTcb?0^GfACw+SsL`0uXEH&kJ z(oqr8+H{krYOmd`w|aVUcdWvE#BIdd-oDMBdG+9@J7!0d3YYO!esZ{MQuXpu_?p{| zdDGv@oSZdX|NjiZ;CXeIj~x^L6Lo~)^rjitC!Sw_W{Ra#)-1R6@&DT@m0cPHnzrZv zFa7Ej-hU=#QpWb`Gt!g1RA*d2DCBi~;nZI56H#mX+!i0*qo~t9f04$SbGet_ehXL` zvT^6mms8H3nb^zr`$F3U=d|a~4Be|r&8APdnbY-h`V+?fZ>v`|O`W=B^%>PAnPrX~ zzqO^xLPA|vUoD)vvt>@5Vb6-J9&g)aKRFdE4}Ln$W@>u!fJWP$n>%-2=;g3a*tzKw z*V;`tMdsQ5=6zZ;lc`}%rqte|ROzizbG?~e9vyD~|KZ0+e~sy0!1QZXy+q##-<-~^STzw`%qc?H4 zxgS0|;lTWyz3r`sxb)ZOCf}bwp)_{-s;l)A&ZqAT)$6+Mw{+5u`v2@AT&yQ0 zZ{^?nbMmd&ERMM7(9oJc6%S-iAIPw7Q@LtWuI^H?d4Ih7$`bKbCr2ixs2rCMw=Q#R z&vGwJInlXio4-rkZFQyfZ-oz?ojCD2pXDLWlee>PyX?>Y?V{k+^D_In3SXt!jvIX%RO1bjz-ARok`=anYAes(yd_e#rj9 zJN5MQ>mL979RB$1k8j-T?r7BYG6M4^D7|r#w@;5zk zAj7!sNRh;`4E6XYTWgh|773iYIR|Qq#`?7ki_iYp7||2$px1T%UCFNree+(IR4rL_ zWJj#8;GS<8`~O-bqI`Pg>2i8nMEZ)mQnJ2qrGMFTbNN*2!#kuAX-JjlE`yEG1gaOT16S=p9ad%D4Nv z+L59|aIg%r}=C9r(0M5_|PZp%p_O*WTtWDvtEwf*ZYo&aqQn4``120x&EumN?S!&KdSpF zHYMrb(&HTpO!;=Ux;kdZo+N!@Km0IYUcK@Q$1N4P3=EB`;z|j^-d5f_fBZQfv#iPI z(fRnLF3h}2OFCVJ4o01RntIA)+g{Pt3~NQd^O>?Yb1W70(#*-JESFonzpl;DO;#sP zf$3!Ep%kIwZ)t9mB7ztN9dnwiFBv$Mr3G`9EV(f8(FeaHI$~3r{GXja?Rv}N=_8}3 z`!{Ru|8E<}p!8`$XD@qz*Wbsl%6H!DUmkz2zSh*YQ+TJ|r$4n`+cq8lIrT`C;?@sk zLeEbxdRU-gZ&P!=@!UG=ZtgAmrq>*oh?KJlMrr^1^*Fr8P$*SXhqM8C) zA4v4N-MruzwBcHj>E@2yZO8N!mgJxt?9Q`%dW0n9st!y(Lh#entNl zuN3jDJ1(nT%4S~ccvIASL1|*_a#5w-amrgY*1B=HT0Oqz`YS@YMQLu~YNgsr>m7aP#BMH2 zX_n`^WWD%I)`cGKce*_0XWiMNztF?|ir%H=QriW)?lk5GUeVg5Z|bD6$;8|>aP|qi zs~ihY1WoBw>L_v1RjQS`mik>)NPU}ZOuAC-s*PL= zPnfRhezdIlwM)wV?3REhrmL=SI4&{%Cie33hILUOXKkGBaX%CSU&S>84#LnpI9NyBMoB-|qMQ z&6-i#Yef6x@74Z&axu1K$)}TNzH5GcDgIr1|25X-{r&57wKw}N@9*C*$#=H4+3$aU z)7$6#wcq{iPRx@hN+-qlS^xhL@jA!s$BO03_tsg;uT#FB+%wU>zB=%=+s|W<{%~mj zZ#yaxyu*?!sas}$P3VtGMZqwabxA!FFJ^>XPAlzCEnHp0aKiFc&JCu?DGUq@44$rj JF6*2UngHvw?mqwk literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/gui/artisan_table/phenolic_board_border_4x.png b/kubejs/assets/tfg/textures/gui/artisan_table/phenolic_board_border_4x.png new file mode 100644 index 0000000000000000000000000000000000000000..f397102b7f52b9c750a4f134075dbf5a9f6c24c7 GIT binary patch literal 1197 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 literal 0 HcmV?d00001 diff --git a/kubejs/data/tfg/loot_tables/blocks/artisan_table.json b/kubejs/data/tfg/loot_tables/blocks/artisan_table.json new file mode 100644 index 000000000..59792a68b --- /dev/null +++ b/kubejs/data/tfg/loot_tables/blocks/artisan_table.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "name": "loot_pool", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "tfg:artisan_table" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} diff --git a/kubejs/server_scripts/tacz/recipes.misc.js b/kubejs/server_scripts/tacz/recipes.misc.js index c37803055..f0d7632f7 100644 --- a/kubejs/server_scripts/tacz/recipes.misc.js +++ b/kubejs/server_scripts/tacz/recipes.misc.js @@ -26,38 +26,6 @@ function registerTACZMiscRecipes(event) { ['tacz:target', 'minecraft:minecart'] ).id('tfg_tacz:target_minecart'); - - //Molds - event.shaped('tfg:small_casing_extruder_mold',[ - ' A ', - 'B ', - ' C' - ],{ - A: '#forge:tools/wire_cutters', - B: 'gtceu:empty_mold', - C: '#forge:tools/files' - }).id('tfg:small_casing_extruder_mold'); - - event.shaped('tfg:large_casing_extruder_mold',[ - ' ', - 'AB ', - ' C' - ],{ - A: '#forge:tools/wire_cutters', - B: 'gtceu:empty_mold', - C: '#forge:tools/files' - }).id('tfg:large_casing_extruder_mold'); - - event.shaped('tfg:shell_casing_extruder_mold',[ - ' C', - 'AB ', - ' ' - ],{ - A: '#forge:tools/wire_cutters', - B: 'gtceu:empty_mold', - C: '#forge:tools/files' - }).id('tfg:shell_casing_extruder_mold'); - //Mechanisms event.shaped('tfg:flintlock_mechanism', [ 'ABC', diff --git a/kubejs/server_scripts/tfg/machines/recipes.molds.js b/kubejs/server_scripts/tfg/machines/recipes.molds.js index 74bf13c2e..f6271a63a 100644 --- a/kubejs/server_scripts/tfg/machines/recipes.molds.js +++ b/kubejs/server_scripts/tfg/machines/recipes.molds.js @@ -6,278 +6,57 @@ */ function registerTFGMoldRecipes(event) { - event.shaped('tfg:mining_hammer_head_extruder_mold', [ - 'Sfh', - ' ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:sword_head_extruder_mold', [ - 'Shf', - ' ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:pickaxe_head_extruder_mold', [ - 'S ', - 'hf ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:axe_head_extruder_mold', [ - 'S ', - ' fh', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:hoe_head_extruder_mold', [ - 'S ', - ' hf', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:scythe_head_extruder_mold', [ - 'S ', - ' ', - 'fh ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:file_head_extruder_mold', [ - 'S ', - ' ', - 'hf ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:hammer_head_extruder_mold', [ - 'Sf ', - ' h ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:saw_head_extruder_mold', [ - 'Sh ', - ' f ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:knife_head_extruder_mold', [ - 'S f', - ' ', - ' h' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:butchery_knife_head_extruder_mold', [ - 'S h', - ' ', - ' f' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:shovel_head_extruder_mold', [ - 'S ', - 'f ', - 'h ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:spade_head_extruder_mold', [ - 'S ', - 'f ', - ' h' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:propick_head_extruder_mold', [ - 'Sxf', - ' ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - x: '#forge:tools/wire_cutters' - }) - - event.shaped('tfg:javelin_head_extruder_mold', [ - 'S x', - 'f ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - x: '#forge:tools/wire_cutters' - }) - - event.shaped('tfg:chisel_head_extruder_mold', [ - 'S ', - 'xf ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - x: '#forge:tools/wire_cutters' - }) - - event.shaped('tfg:mace_head_extruder_mold', [ - 'S ', - ' xf', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - x: '#forge:tools/wire_cutters' - }) - - event.shaped('tfg:lamp_casting_mold', [ - 'Sh ', - ' ', - ' m' - ], { - S: 'gtceu:empty_mold', - h: '#forge:tools/hammers', - m: '#forge:tools/mallets' - }) - - event.shaped('tfg:trapdoor_casting_mold', [ - 'S h', - ' ', - ' m' - ], { - S: 'gtceu:empty_mold', - h: '#forge:tools/hammers', - m: '#forge:tools/mallets' - }) - - event.shaped('tfg:chain_casting_mold', [ - 'S ', - 'h ', - ' m' - ], { - S: 'gtceu:empty_mold', - h: '#forge:tools/hammers', - m: '#forge:tools/mallets' - }) - - event.shaped('tfg:bell_casting_mold', [ - 'S ', - ' h ', - ' m' - ], { - S: 'gtceu:empty_mold', - h: '#forge:tools/hammers', - m: '#forge:tools/mallets' - }) - - event.shaped('tfg:mattock_head_extruder_mold', [ - ' h', - 'fS ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:fish_hook_extruder_mold', [ - 'f ', - ' S ', - ' h' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - event.shaped('tfg:whisk_extruder_mold', [ - 'f h', - ' S ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) + /** @type {['huge'|'large'|'normal'|'small'|'tiny']}*/ + const pipe_sizes = [ + 'huge', + 'large', + 'normal', + 'small', + 'tiny' + ]; - event.shaped('tfg:screwdriver_tip_extruder_mold', [ - 'f ', - ' S ', - ' h ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) + let prev_size; + pipe_sizes.forEach((size) => { + if (size !== 'huge'){ + event.shaped(`gtceu:${size}_pipe_casting_mold`, [ + 'ABC' + ], { + A: '#forge:tools/hammers', + B: `gtceu:${prev_size}_pipe_casting_mold`, + C: '#forge:tools/mallets' + }).id(`tfg:shaped/${prev_size}_${size}_casting_mold`) + + event.shaped(`gtceu:${size}_pipe_extruder_mold`, [ + 'ABC' + ], { + A: '#forge:tools/hammers', + B: `gtceu:${prev_size}_pipe_extruder_mold`, + C: '#forge:tools/mallets' + }).id(`tfg:shaped/${prev_size}_${size}_extruder_mold`) + } + prev_size = size; + }); - event.shaped('tfg:wrench_tip_extruder_mold', [ - 'f ', - 'hS ', - ' ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) + pipe_sizes.reverse().forEach((size) => { + if (size !== 'tiny'){ + event.shaped(`gtceu:${size}_pipe_casting_mold`, [ + 'ABC' + ], { + A: '#forge:tools/mallets', + B: `gtceu:${prev_size}_pipe_casting_mold`, + C: '#forge:tools/hammers' + }).id(`tfg:shaped/${prev_size}_${size}_casting_mold`) - event.shaped('tfg:wire_cutter_head_extruder_mold', [ - 'hS ', - ' ', - ' f ' - ], { - S: 'gtceu:empty_mold', - f: '#forge:tools/files', - h: '#forge:tools/hammers' - }) - - let steelIngots = ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4); - let steelDusts = ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 4); + event.shaped(`gtceu:${size}_pipe_extruder_mold`, [ + 'ABC' + ], { + A: '#forge:tools/mallets', + B: `gtceu:${prev_size}_pipe_extruder_mold`, + C: '#forge:tools/hammers' + }).id(`tfg:shaped/${prev_size}_${size}_extruder_mold`) + } + prev_size = size; + }); global.TFG_EXTRUDER_MOLDS.forEach(mold => { @@ -289,7 +68,7 @@ function registerTFGMoldRecipes(event) { .itemOutputs(mold) .duration(120) .EUt(GTValues.VA[GTValues.LV]) - }) + }); global.TFG_CASTING_MOLDS.forEach(mold => { @@ -301,23 +80,6 @@ function registerTFGMoldRecipes(event) { .itemOutputs(mold) .duration(120) .EUt(GTValues.VA[GTValues.LV]) - }) + }); - //TODO: Fix this code to respect full molds - // //craft mold to scrub nbt - // const molds = Ingredient.of('#tfc:fired_molds').itemIds; - - // molds.forEach(mold => { - // event.shapeless(Item.of(mold), [mold]) - // .id(`tfg:shapeless/mold_cleaning/${mold.replace(":", "/")}`); - // }); - - // //craft vessel to scrub nbt - // const vessels = Ingredient.of('#tfc:fired_vessels').itemIds; - - // vessels.forEach(vessel => { - // event.shapeless(Item.of(vessel), [vessel]) - // .id(`tfg:shapeless/vessel_cleaning/${vessel.replace(":", "/")}`); - // }); - -} +}; diff --git a/kubejs/server_scripts/tfg/primitive/recipes.artisan_table.js b/kubejs/server_scripts/tfg/primitive/recipes.artisan_table.js new file mode 100644 index 000000000..340244b36 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.artisan_table.js @@ -0,0 +1,572 @@ +// priority: 0 +"use strict"; + +function registerTFGArtisanTableRecipes(event) { + + // Removals (`type` didnt want to work here). + event.remove({ id: /gtceu:shaped\/shape_.*/, input: 'gtceu:empty_mold'}); + event.remove({ id: /gtceu:shaped\/shape_.*/, input: /gtceu:.*_extruder_mold/}); + event.remove({ id: 'gtceu:shaped/basic_circuit_board'}); + event.remove({ id: 'gtceu:shaped/good_circuit_board'}); + + //Table Recipe + TFGHelpers.registerMaterialInfo('tfg:artisan_table', [GTMaterials.WroughtIron, 6, GTMaterials.Wood, 3, GTMaterials.Copper, 1/9]) + + event.shaped('tfg:artisan_table', [ + 'CBC', + 'AAA', + 'B B' + ], { + A: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.WroughtIron, 1), + B: 'firmalife:treated_wood', + C: '#forge:screws/any_bronze' + }).id('tfg:shaped/artisan_table'); + + //#region Molds + + /** + * Mold pattern definitions. + * @param {string} name - Base id of the mold item. + * @param {boolean} genCast - Whether to generate a casting mold recipe. + * @param {boolean} genExtrude - Whether to generate an extruder mold recipe. + * @param {string[]} pattern - 6x6 pattern for the mold. 'X' for solid, ' ' for empty. + * @type {{name: string, genCast: boolean, genExtrude: boolean, pattern: string[]}[]} moldPatterns + */ + const moldPatterns = [ + { name: 'tfg:lamp', genCast: true, genExtrude: false, pattern: [ + "XX XX", + "X X", + "X XX X", + "X XX X", + "X XX X", + "X X" + ]}, + { name: 'tfg:trapdoor', genCast: true, genExtrude: false, pattern: [ + " ", + " XXXX ", + " ", + " ", + " XXXX ", + " " + ]}, + { name: 'tfg:chain', genCast: true, genExtrude: false, pattern: [ + "X X", + "X XX X", + "X X", + "XX XX", + "X X", + "X XX X" + ]}, + { name: 'tfg:bell', genCast: true, genExtrude: false, pattern: [ + "XX XX", + "X X", + "X X", + "X X", + " ", + " " + ]}, + { name: 'gtceu:plate', genCast: true, genExtrude: true, pattern: [ + "XXXXXX", + "X X", + "X X", + "X X", + "X X", + "XXXXXX" + ]}, + { name: 'gtceu:gear', genCast: true, genExtrude: true, pattern: [ + "XX XX", + "X X", + " XX ", + " XX ", + "X X", + "XX XX" + ]}, + { name: 'gtceu:bottle', genCast: true, genExtrude: true, pattern: [ + "X X", + "XX XX", + "XX XX", + "X X", + "X X", + "X X" + ]}, + { name: 'gtceu:ingot', genCast: true, genExtrude: true, pattern: [ + "XXXXXX", + "XX XX", + "XX XX", + "XX XX", + "XX XX", + "XXXXXX" + ]}, + { name: 'gtceu:ball', genCast: true, genExtrude: false, pattern: [ + "XXXXXX", + "XX XX", + "X X", + "X X", + "XX XX", + "XXXXXX" + ]}, + { name: 'gtceu:cylinder', genCast: true, genExtrude: false, pattern: [ + "XX XX", + "X X", + " ", + " ", + "X X", + "XX XX" + ]}, + { name: 'gtceu:block', genCast: true, genExtrude: true, pattern: [ + " ", + " ", + " ", + " ", + " ", + " " + ]}, + { name: 'gtceu:nugget', genCast: true, genExtrude: false, pattern: [ + "XXXXXX", + "XXXXXX", + "XX XXX", + "XX XXX", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'gtceu:anvil', genCast: true, genExtrude: false, pattern: [ + " ", + " ", + "X X", + "XX XX", + "X X", + "XXXXXX" + ]}, + { name: 'gtceu:name', genCast: true, genExtrude: false, pattern: [ + "XXXXXX", + "X X X ", + " X X X", + "X X X ", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'gtceu:small_gear', genCast: true, genExtrude: true, pattern: [ + "XXX XX", + "XX X", + "X X ", + "XX X", + "XXX XX", + "XXXXXX" + ]}, + { name: 'gtceu:rotor', genCast: true, genExtrude: true, pattern: [ + " XXXX ", + "X XX X", + "XX XX", + "XX XX", + "X XX X", + " XXXX " + ]}, + { name: 'gtceu:pill', genCast: true, genExtrude: false, pattern: [ + "XXXXXX", + "XXXXXX", + "XX XX", + "X XX", + "X XXX", + "XXXXXX" + ]}, + { name: 'gtceu:huge_pipe', genCast: true, genExtrude: true, pattern: [ + " ", + " XXXX ", + " XXXX ", + " XXXX ", + " XXXX ", + " " + ]}, + + { name: 'gtceu:rod', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XXXXXX", + "XX XX", + "XX XX", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'gtceu:bolt', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XXXXXX", + "XX X", + "XXX XX", + "XXX XX", + "XXXXXX" + ]}, + { name: 'gtceu:ring', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XX XX", + "X XX X", + "X XX X", + "XX XX", + "XXXXXX" + ]}, + { name: 'gtceu:cell', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XX X", + "X XX X", + "X XX X", + "X XX", + "XXXXXX" + ]}, + { name: 'gtceu:wire', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XX XXX", + "XXXXXX", + "XXXXXX", + "XXX XX", + "XXXXXX" + ]}, + { name: 'gtceu:foil', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XXXXXX", + "XXXXXX", + " ", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'tfg:small_casing', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XXXXXX", + "X X X ", + "XXXXXX", + "X X X ", + "XXXXXX" + ]}, + { name: 'tfg:shell_casing', genCast: false, genExtrude: true, pattern: [ + " XXXX", + " XXXX", + "XXXXXX", + "XXXXXX", + "XXXX ", + "XXXX " + ]}, + { name: 'tfg:large_casing', genCast: false, genExtrude: true, pattern: [ + "XX XX", + "XX XX", + " XXXX", + " XXXX", + "XXXX ", + "XXXX " + ]}, + + //Tools + { name: 'tfg:mining_hammer_head', genCast: false, genExtrude: true, pattern: [ + " XXXXX", + " X", + " ", + " X", + " XXXXX", + "XXXXXX" + ]}, + { name: 'tfg:sword_head', genCast: false, genExtrude: true, pattern: [ + " XXXX", + " XXX", + "X XX", + "XX X", + "XXX X", + "XXXXX " + ]}, + { name: 'tfg:pickaxe_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XXXXXX", + "X X", + " XXXX ", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'tfg:shovel_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "X X", + "X X", + "X X", + "XX XX", + "XXXXXX" + ]}, + { name: 'tfg:axe_head', genCast: false, genExtrude: true, pattern: [ + "X XXXX", + " X", + " ", + " X", + "X XXXX", + "XXXXXX" + ]}, + { name: 'tfg:hoe_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XXXXXX", + " ", + " XXXX", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'tfg:scythe_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "X ", + " XX", + " XXXX", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'tfg:file_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XX XXX", + "XX XXX", + "XX XXX", + "XX XXX", + "XX XXX" + ]}, + { name: 'tfg:hammer_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + " ", + " ", + "XX XX", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'tfg:saw_head', genCast: false, genExtrude: true, pattern: [ + " XXXX", + " XXX", + "X XX", + "X X", + "XX ", + "XXXX " + ]}, + { name: 'tfg:knife_head', genCast: false, genExtrude: true, pattern: [ + "XXX XX", + "XX XX", + "XX XX", + "XX XX", + "XX XX", + "XXXXXX" + ]}, + { name: 'tfg:butchery_knife_head', genCast: false, genExtrude: true, pattern: [ + "X XXXX", + "X XXXX", + "X XX", + "X X", + "X X X", + "X X" + ]}, + { name: 'tfg:spade_head', genCast: false, genExtrude: true, pattern: [ + "X X", + "X X", + "X X", + "X X", + "XX XX", + "XX XX" + ]}, + { name: 'tfg:propick_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + " X", + " XXXX ", + " XXXXX", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'tfg:javelin_head', genCast: false, genExtrude: true, pattern: [ + " XXX", + " XX", + " X", + "X ", + "XX X", + "XXX XX" + ]}, + { name: 'tfg:chisel_head', genCast: false, genExtrude: true, pattern: [ + "XXX XX", + "XXX XX", + "XXX XX", + "XXX XX", + "XXX XX", + "XXXXXX" + ]}, + { name: 'tfg:mace_head', genCast: false, genExtrude: true, pattern: [ + "XX XX", + "X X", + "X X", + "X X", + "X X", + "XX XX" + ]}, + { name: 'tfg:mattock_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + " X", + " XX ", + "XXXXXX", + "XXXXXX", + "XXXXXX" + ]}, + { name: 'tfg:fish_hook', genCast: false, genExtrude: true, pattern: [ + "XXX XX", + "XXXX X", + "X XX X", + "X XX X", + "XX XX", + "XXXXXX" + ]}, + { name: 'tfg:whisk', genCast: false, genExtrude: true, pattern: [ + " X X ", + "XX XX", + " XX ", + " XX ", + "XX XX", + " X X " + ]}, + { name: 'tfg:screwdriver_tip', genCast: false, genExtrude: true, pattern: [ + "XX X", + "XXX XX", + "XX X", + "XXX XX", + "XXX XX", + "XXX XX" + ]}, + { name: 'tfg:wrench_tip', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XX XXX", + "XX XXX", + "XX XXX", + "XX XXX", + "X XX" + ]}, + { name: 'tfg:wire_cutter_head', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XX X", + "X X X", + "X XXX", + "X XXX", + "XXXXXX" + ]} + + /* + , + { name: 'tfg:', genCast: false, genExtrude: true, pattern: [ + "XXXXXX", + "XXXXXX", + "XXXXXX", + "XXXXXX", + "XXXXXX", + "XXXXXX" + ]} + */ + ]; + + /** Checks for duplicate patterns for the same mold type. */ + function patternsEqual(p1, p2) { + for (let i = 0; i < p1.length; i++) { + if (p1[i] !== p2[i]) return false; + }; + return true; + }; + /** Checks for duplicate mirrored patterns for the same mold type. */ + function patternsMirrorEqual(p1, p2) { + for (let i = 0; i < p1.length; i++) { + if (p1[i] !== p2[i].split('').reverse().join('')) return false; + }; + return true; + }; + // Error logging for duplicate patterns. + let patternsChecked = []; + for (let i = 0; i < moldPatterns.length; i++) { + for (let j = i + 1; j < moldPatterns.length; j++) { + + let a = moldPatterns[i]; + let b = moldPatterns[j]; + let shareCast = a.genCast && b.genCast; + let shareExtrude = a.genExtrude && b.genExtrude; + + if (shareCast || shareExtrude) { + if (patternsEqual(a.pattern, b.pattern) || patternsMirrorEqual(a.pattern, b.pattern)) { + patternsChecked.push({a: a.name, b: b.name}); + }; + }; + }; + }; + if (patternsChecked.length !== 0) { + throw new Error( + `Duplicate artisan table mold patterns detected between: ${patternsChecked.map(pair => `\n${pair.a} and ${pair.b}`).join(', ')}` + ); + }; + + // Create Artisan Table recipes for molds. + moldPatterns.forEach((mold) => { + if (mold.genCast){ + event.custom({ + "result": {"item": `${mold.name}_casting_mold`}, + "pattern": mold.pattern, + "artisanType": "tfg:casting_mold", + "type": "tfg:artisan" + }).id(`tfg:artisan_table/${linuxUnfucker(mold.name)}_casting_mold`); + }; + if (mold.genExtrude){ + event.custom({ + "result": {"item": `${mold.name}_extruder_mold`}, + "pattern": mold.pattern, + "artisanType": "tfg:extruder_mold", + "type": "tfg:artisan" + }).id(`tfg:artisan_table/${linuxUnfucker(mold.name)}_extruder_mold`); + }; + }); + + //#endregion + + //#region Circuits + + event.custom({ + "result": {"item": "gtceu:resin_printed_circuit_board"}, + "pattern": [ + "X XXXX", + " XX X", + "X X X", + "X XX X", + " XXX X", + "XXX X" + ], + "artisanType": "tfg:resin_board", + "type": "tfg:artisan" + }).id(`tfg:artisan_table/resin_printed_circuit_board`); + + event.custom({ + "result": {"item": "gtceu:resin_printed_circuit_board", "count": 4}, + "pattern": [ + "X XXXX", + " XX X", + "X X X", + "X XX X", + " XXX X", + "XXX X" + ], + "artisanType": "tfg:resin_board_4x", + "type": "tfg:artisan" + }).id(`tfg:artisan_table/resin_printed_circuit_board_4x`); + + event.custom({ + "result": {"item": "gtceu:phenolic_printed_circuit_board"}, + "pattern": [ + "X XX ", + " XXXX ", + "XX X ", + "XX XXX", + "XX XX ", + " XX " + ], + "artisanType": "tfg:phenolic_board", + "type": "tfg:artisan" + }).id(`tfg:artisan_table/phenolic_printed_circuit_board`); + + event.custom({ + "result": {"item": "gtceu:phenolic_printed_circuit_board", "count": 4}, + "pattern": [ + "X XX ", + " XXXX ", + "XX X ", + "XX XXX", + "XX XX ", + " XX " + ], + "artisanType": "tfg:phenolic_board_4x", + "type": "tfg:artisan" + }).id(`tfg:artisan_table/phenolic_printed_circuit_board_4x`); + //#endregion + + +} diff --git a/kubejs/server_scripts/tfg/primitive/tags.primitive.js b/kubejs/server_scripts/tfg/primitive/tags.primitive.js index 092078b9c..54f10a270 100644 --- a/kubejs/server_scripts/tfg/primitive/tags.primitive.js +++ b/kubejs/server_scripts/tfg/primitive/tags.primitive.js @@ -72,6 +72,20 @@ function registerTFGPrimitiveItemTags(event) { event.add('forge:string', 'tfg:phantom_thread') event.add('forge:string', 'tfg:polycaprolactam_string') event.add('forge:string', 'firmalife:pineapple_yarn') + + // Artisan Table + event.add('tfg:artisan_table_inputs', 'gtceu:empty_mold') + event.add('tfg:artisan_table_inputs', 'gtceu:resin_circuit_board') + event.add('tfg:artisan_table_inputs', 'gtceu:copper_single_wire') + event.add('tfg:artisan_table_inputs', 'gtceu:copper_quadruple_wire') + event.add('tfg:artisan_table_inputs', 'gtceu:phenolic_circuit_board') + event.add('tfg:artisan_table_inputs', 'gtceu:silver_single_wire') + event.add('tfg:artisan_table_inputs', 'gtceu:silver_quadruple_wire') + event.add('tfg:artisan_table_tools', '#forge:tools/hammers') + event.add('tfg:artisan_table_tools', '#forge:tools/mallets') + event.add('tfg:artisan_table_tools', '#forge:tools/files') + event.add('tfg:artisan_table_tools', '#forge:tools/wire_cutters') + event.add('tfg:artisan_table_tools', '#forge:tools/screwdrivers') } function registerTFGPrimitiveBlockTags(event) { @@ -90,8 +104,7 @@ function registerTFGPrimitiveBlockTags(event) { function registerTFGPrimitiveFluidTags(event) { forEachMaterial(material => { let tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY) - if (tfcProperty === null || !material.hasFlag(TFGMaterialFlags.CAN_BE_UNMOLDED)) - return; + if (tfcProperty === null || !material.hasFlag(TFGMaterialFlags.CAN_BE_UNMOLDED)) return; if (!ChemicalHelper.get(TagPrefix.gearSmall, material, 1).isEmpty()) { event.add('tfg:usable_in_small_gear_mold', material.getFluid().getFluidType().toString()) diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index 925a225b1..3366ed27d 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -49,6 +49,7 @@ const registerTFGRecipes = (event) => { registerTFGClayRecipes(event) registerTFGEquipmentRecipes(event) registerTFGDyeRecipes(event) + registerTFGArtisanTableRecipes(event) registerTFGCasingRecipes(event) registerTFGEnderPearlRecipes(event) diff --git a/kubejs/server_scripts/tfg/recipes.miscellaneous.js b/kubejs/server_scripts/tfg/recipes.miscellaneous.js index 5392b40ab..ad5bc65a4 100644 --- a/kubejs/server_scripts/tfg/recipes.miscellaneous.js +++ b/kubejs/server_scripts/tfg/recipes.miscellaneous.js @@ -177,4 +177,5 @@ function registerTFGMiscellaneousRecipes(event) { .duration(5*20) .EUt(GTValues.VA[GTValues.LV]) .addMaterialInfo(true); + } diff --git a/kubejs/server_scripts/tfg/tags.js b/kubejs/server_scripts/tfg/tags.js index 119a5b49b..a1c988e5f 100644 --- a/kubejs/server_scripts/tfg/tags.js +++ b/kubejs/server_scripts/tfg/tags.js @@ -46,6 +46,7 @@ const registerTFGItemTags = (event) => { event.add('tfg:empty_dna_syringes', 'tfg:clean_dna_syringe') event.add('tfc:sewing_needles', 'tfg:stainless_steel_needle') + //#endregion // Airplane Upgrades