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 zcmV;01bX|4P)+S(ej*(|En>M={yqBS9C)C}0!0&1mgq+P4}$|~q~ z^AN3Q0vCpc!~+d?@b=;znJH4Fp!eEyhK;G%*yh@c?;M+9g`4H>ALmMARO z%c3rf$;nAfPftg12CiPYDLKXOgh4?Zr)ADixJGv{1RPAoHJSL~+d7t)mm~KVulWhO zu(05)uCC&}8&@4X0-lRc?~52WaS1KzaxyV?%3c!DMWqMp`1SMGoQ(%N{vWvV*4`i3 zuT*j4<)<7zI0alx(A8??>iY^3f`5z>%*GKiNroXNFW&$7H%Y>!pEo+({mIhzk!#P7 zJKx>?TgE9OJSXh>FtO@01mXcb7DqY}MJ5&ZlaRQO&57G_2EybDX0F(+-PrzWDa|IagW=Ohyi*wxm{oOJq zCLl?u2i?LXY`Ct~u&6D&xK`+3PlfFhKSwJT!7GUXhI2SUL3cY|)onS8zg z{-{#Sibyo=l4LvXe(6v2w%mr>x`%$q6?m?Q0Ir@ZR>Z+d)eTfZ>6V=DSpnzU2c6Ed zo98p@wK~0mg`ykuLLP>$2pNCN^+YO_M$IkHz2Lm$zJPwfUC=9eM-nQxGXYa6&-RiB z>XH)vu)3%`3jQu2F+-5ZB+v`yL${`0p@lCC6m!yT=5axPSp2=+H2+s(U%=SY&v$h}4W7InQIMESgsPS{7*A^*xL{`E2Bssp~Q?l^((m-+tX!+&cs`Y|E+b7p3Dk zEkxbp`KWy~6Lq7An;(3Ji?a3Dz3)78&qol`;+0JD%7KL7v# 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 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 literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/gui/artisan_table/blank_phenolic_board.png b/kubejs/assets/tfg/textures/gui/artisan_table/blank_phenolic_board.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc5b91fff5e2570c2905fe7dd232dbfebe7582a GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4#hxyXAsQ2FCphvk8FIMJzhZRv zi_*N4zw>*3PdgbRZXCKQOi0K{Za)9=*Q)jmMSUuwdEdLHvNfnFKId@I<&8FXNp?t9 zSQ(JRZoS5kVM55aI35pn8=i#rr1t8LwbI^Fv)Ah$XVX^;llppMNxn3Lw^Z(}U4`Ge z=5NcAOw{I`$te5Dobiv@e|49;2RA=%Z(M(M-8{Y@AL3ta6|bz#OgsL4t;xK-#{Tt! TX;G#?=Q4P@`njxgN@xNAcW_WF literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/gui/artisan_table/blank_resin_board.png b/kubejs/assets/tfg/textures/gui/artisan_table/blank_resin_board.png new file mode 100644 index 0000000000000000000000000000000000000000..e2fdf4564668c10a0f0ad91c048a90bc0c3f8052 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4wVp1HAsQ2FCpz*SR^VY-eqxG7 z`=1s1ua5uPe(#odkM7oX2PTcRsx2wUve)mldAFVaz#bouu08YeeRvyYD1A0!oN%?U zv`Hn=T2McsRh5%rQqs=WfJQMk1Jjt=_H35$=TTFRt&ok{n2?oHS`;{W*^gOEnq%ks zRmo_tF5j?HR?h9fwX@EzIbU$!>Ik+u+kPWwp=ti=xgVq1<0(u`{Xh5|)4(gti*hpc1^|dq)wsJ3=M<4N zS~8oJhwBUjN3C-!zdkWJu9+iL@LIJb_{gk^Hp8d<-tYw{AaMu!;FH<_0000 zPmkL~7{;G>#&$N{Yy~GymWo6rz5oaQsc4~P;VU58D$w3JAcWwME1#j#N+9*ZfdeO? zfC@tDp+X3Rgv2!$dh70HH;L_;;o#Vb6DJ=3iDNtYNh`(ic;?OH$DVnu%^N}vY};0O zj;|X1exI@)t9@XcXh+u%{Z1ymC=FRTW4c4;LP(j|Mk&7ykss4{4}M-~qbqJ=qd>rS zZup{c#=?R9V0CQmF zcW=B2#u*6YpFtuBA)pi>gd4UWkH;&64j2puTJ7@E>2$Q(wOXz4HRmRjk{}`wF>pq3 zJr7Dr*jKIs0D8S%tY)!q+P1CUe(M@c(*nU4PDl?@N{q+j(!|&lolXa>RtrK%7zPJt z98xK`u8ZeicyXzi5sI8Zlu~AzzoN#~jV*25!Tw&ax1dqv&TrecI=uGE+5_D*Sz;ri z@ILnUpT94NxiE$9wc6RD%gJn@n;cI^+;k{5u+qTuw^*8dwmMWM!F)z9l694}5 zSHzVOM>67&N|Y5}NSSU_N||}w2mlHSob$+g3<&OxuVU|xu>xZ5k)zS5jQB$8=0*TGIe7}hj5ZI2BqErm0pWSM0?mAI1z9G#X_z=T z=)j%PD&k1TaU(m|O`0H$SPG#tTmr`^p7neYDCB$7_@U~n4QX0~ms*Is@J0K!B) z3u(`4*={VlPsR-Z!2K`p;rRGig^qOHX1lSd%X${in@-FI09cjbm4fBA1Zc?8bRYb!1cB2;>lQ=f)_dIkL%a1U4|)RFNW1awZ|SEgjV9KNQlkT5FguNAEu+($a)7X99 zcVyX5d6td0QphS#GG(TNIuz>2CZ~g|#sgLexpQMW3Ug%B-IzqIkX3eL7K%8@NqrRJ z$ZcGJ&r|#5PZDLg5hy^&of~}`?Z~p+2;>xUThqZfYURi@mvxzL1ZpB=9hPI6g>3o) zJniSJyd$fa4#p7*d47Jrs$GPpyHOV@hT&`Gcjj-Hh7o%}ohWOPaUC~k3}D8Q`}_N` z2V@zfD5|^w2LQ&W-)*n_Ju(etFL`E3CFIVH%V~@wH|a(og^;^+a5a^6WR=swI4UP( z9n!%#w1jN>0=$UNX8^$2*(o^Z8()yuB^?ZqVhBtM?uCxzoP);**>pE%#r51sWjO-? z4h}AZvFzX1-V~djWQesuEi@GhDTKgqc(L)BTZc`%(RExXIRs`3A4Y`i zbPm7`W0wvl;Ce2ITH(?Mm|Ku@&T;ber08)IsarZI+>3>xx&{zdG*(xyJO`rkF6}zH z5dfsPfRtn0zWX`4-7W!hjwCXmkX*mJNUHL$%W05u1jeG@CJu${_xtqv;Sr$95wdRS zU=+g54?hmw2*f2qOJspP0L6#)dzWW&f#EJ-L{OCm>=))hr_6JrDl$a@zs3brP#4RAH{$!BL=crSuMNqk# z5}q9>F%gRcn8rk8f+n-_t-GHBST10AjBadk_l2+SeGv^7Fi*AsQ1~Cpz*SRuEv0O%nOI z-e%$d|7=|bS^B220-@ixojPG{(f_(?U)J7-nonE4&*7iovew+ol93^^Rke4niVCj; z!w&DVT`Cip8&#IX7M(l3V*?-W_G{1iy*H`lW?YVs*PZyfj;O%V!Huzk(30r$?j}qzZZeyv}q2I+4NC)z4*} HQ$iB}`07r) 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 zcmV-d1*rOoP) z&5zSY7{(tvcD^^+T~rRNyvu!FB=%5Mty=XQEQqpH**I}N$D8RPYbQ>;B+7cmc-Ft0Cy8hBcs}088NZRh0Zr2= zk9v+n*L8_?9ZV~*1-xXe-R=Sa2(j?u#m@lP3Oe`1C+SW1?)`{P zrwhYq0sxZ91OTAd>o0rCg%}J703aS$0RZ`Y4wcG#N6=-McM*<#(H3xL=O$KH^GK)D z003E*F&qxj@6Q)wZ||>}vV()>+|T*J+FEX=?DFL==YFo&>!Z`@IN!Hg-G^maxNzYd z0H9bbdTQobsA(F#di85;ZEYZz%i-NS9fo0o5DSfl$xV!)SX;|sbu|k@EF=;tve^uJ zy*}FQE-qf&I#x^YN(pRk8fo_-W9LbuOFaMYk zQ=Wd)#>N-?TEqa$vY6MA&#%msIYMfhMz3H0hIu1IfDnSWZ~t}mN>`7}WRhsNd(0b> zN+p=r!4gWxp_PqG$XczAMx({NAuNZVqA1MHZPV@cP^nb0xw+|-&CHRF2K&&4kV9tY z<}pWlbvBof*=&mGm*fGD_N%Ibm6f!s%q660c0maHD;joGRYj}Sah17*oPIHksA`N$ zJ*N2yA$h^_%LX+y$-pRv+}XLg(2WQ`V7apL3azr)6rMf%4drr~0)VV(8ohF58?{=U zO9MpW!-xOy`0-CDm&?@EHFyn+uzPJ_v~o}0JW~L`FigmDAk(Gq@Q5RAnoSdmGMewj zQ13G!5Fx|vwY>;L$gq2DF9H!V>|Wao;pWId1M-NIBLm*Ig~AFiuWe)BpOAH3m#Wo& zkk4niRW6FxPNkB#fBy#*3I)j-+HclWMDW_v2)AlSab(DeytYq7UfU-kuk91U&5@DU4mrXJ$=hq&M89kM zL?A+n;I*d_ZfFNZkBks&AY+CC9^ZJ&s|woeE*N1m#HTttKuGVjuS%y9&_ZGGkNBX2)oyg#TE#^ zy;4K_P1w_C+dsih;+dGdSS-?~Pk(hLRaurGNfIa><>6glXWwgsq+U0Uat%`qhhxoT zS;B({?jdb+Y=(EcXFhrI3n<0RDzymHSw8`Ay9o8VF;jMu{FtTET>$VD5m?|)FKj_4 z6Z0<0?(U zv2NQ&7=XXyS%?#7>y$y73KYrEv}=o^K%b(3GZc1)E&Xq=`im!CK4ZWy&pkY;1XV9;3g0hA~DREM6c2 z$yLH+5_9%uMv_=k0TDrLgL~32LUv|T3Us8c=9#4Hw+f=}kp%SGBa<>E5szq2X7 z|24Fv7>!2R&`wgY z)^atoh;6pUE+7JNVzcn(<;~BLf^A8PZNA7Xn4bg-w}eq0f2fbNN@N#m+(fHHcA3_Q z>~f9JB9UFE6(YM{BeX=M4>T^a?QaLm(zr;MH2IFqE0Imos7N0!G7CbHj%ZAzPc=d) z(ix42^sPn+MLOfwMfzAHgd&}Bt0H}QJGhR{7TKm@4ILKQHf~L%uNRpGp-4yEib$Vo z+_W#DNJrEz(x)1?5sKV_ZBf)JvM)74D6%v+MNyl`KGg`J$WoMvB8YTEEh2py)@Ao4 z6zK@(BKue)gd%rl)4_ErvadBlC~_yZ9b9K3eX6kvp~y9?i{hq(>qKPVYlKkbHLBDI zL8LSG7U|Qlu3966BAv09NZ)JRg;3-cb~(6}MTQ!Sgd#Vv>%pxg(x)0-(fcCzx#d}A zXOW@C_4K+(S2aSG)-G#=P~=WH`4E-wHSS9&a?ZX7x0J|GV}qYY>k=*w z?u{aSs#mUKu$}cu=CoyT7 z4e_nNqykM3YnL^O$b%%wrqNv{pFaEFvng6DtQC$Q-hKV#(Oq<;^2yBiDfQ_W_bb2F z1*eaXt}QFGO{b5Ku#!!iD>nQ7{bz@q{Xe_*++5`3BFPuNJOB7t>ufgosHY>|t~npB zBiCb$kw1TXQR_ze#^U@4EB}VY7*n`83Sx^KzkF5rc_9&2M6P0tkpF07*qoM6N<$g6p&HKL7v# 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 zcmV;e1XBBnP)-jLxm6#D&-I0KvAo3fRqCQig*ZtR3VJ29&$q< z)I$jzIOGq2dk;v!p&TkC8u91>r>+QuwxoI3-kl$ZwKq;;JN9~HQ^8lQ<_z7{5A`ol_tgcpBxmzI!G@*cqAbP)dBVDe1|7$Gp=G6s$`}!l^ zc<+6}rA7X^z8nh#xc$>z!isE()YXu+jgaM)GMBHdDgY5Vn8JPlpp?38>ba8a$KjL5 zOA-W(96dF0X!>+XSA7ngdVS)=^ADB6N;EvbeeUJx`E`TH`|BZ_<&bKSvHV)_XK8t& zzFl1YH{QN==ibEZ)L3bwtXcoN65oF$pU=xn$JQC~qe-SdLEBPeKk$^|K+a?Cmn&Rb z83l-n^lI`dRgG6srW(N&X^d1v+EydDB8{={B5kY@T#?4u zSCO`S9c;$X7CA`68irWpps{ZvZJlK5xFQX)FCuNKvDLn~A`Q`Zkv7%X4p(Fsw2Pvz zBC}E>xFS1duPFK^GD|grE3zXxiNc9AL|;VOG^{(_7gwYqjEl@-jo^yxnpOwbsK~6= z2(HMkXm@apiL|N4B)B4*&@76*4z3ZAS+5aXk-JDzBRG-9=vkyq!#Zh=;EFUxPaR@<1>GLpL?Ugf(G;04vX@hyM!FX1YHUuXi!@auWL#ttjQkqS zreSTeMsP)Tg^?do*xFT!xdT=`u>1s^z*J#6piG#bRNSkU*N+%9RAX>&xYU}B0 zi&rH!b;_efkR6_)^&-u6inkoK@PS)+&?41#DG z-A3Z&v;SHt!MUliUAJ}ep3Y5;p(R>2 zS9J9E%+Uu}xl`G7-&o}8S`gp(-~Fv^-&gpaidTlt8oJ5nVKZVqg+f8T`~2g+zA4+N ze?CHkNQh)MUUy=*Gcz~8?Rs4z>=3z=LZKj&laqaVTf;}AxSjkD&WR=Xl|c^g00000 LNkvXXu0mjfqo+ek literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/gui/artisan_table/printed_phenolic_board.png b/kubejs/assets/tfg/textures/gui/artisan_table/printed_phenolic_board.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a315c167f2563cc24e73940d657fee089fab71 GIT binary patch literal 451 zcmV;!0X+VRP) zy-OTX6vcn@X5KjXe25{M!YvjKK|(7wxJv|~G_fob0LK;?fHcW6px#PohA_Uc#L~_+?^aHDQJ%+^ z`3L~UWJ#wzTG9;R_4EhIl?ec%2wb;;=lOh@8^Qm7rcoJEsnU{HvmYr}CfHtECyrA9 zio?SU3>G;%`^%@95!<{%yCEPy11i}Pb#w?X0gOIE*b(EFqxfc@QHk3I+Z>jw`%m-BMfJ^t3=52U?(!*%%Rxw(cm~Lfp t>7EjVao*1tx}5Am57BzG%n(f?5V1N{L7e}H?D7TgF4Er^IQ z+4zYVWQ^8*;m&pq1qx1}aPB4r^=1Mi_iC_?}Y(;$(u00^W) zNre!m06>@qK`o$M2~dGT#04YCSa&BC!W8JVQ7Ts`|Cc21Dt!Gk!=e%A{O}gd5WI#^ zQepL)P*sS_N7ldp03emmq3c<^i+lWubXO3{5Ir7?$opHHH0lii#y<`-IX1<~X^~(g zg_5d!(rRWla{2Q6nvLuO%_dykT(NWJqNE~}VN0NE8ascFsONJ4*tU&r+w>)RBa_bO z1VFvf#CZ-W9A_C#53&1skbb*GE|wnOgw_qyAf{_f&yV8yK0_Y{c=9|-&Mm(V@)X=E z%WIi#XrNVyDex!K{M`G)znY2&%WD~Y*Lf>=jk%QtYELx)tfYnSIw+~$3*zm@eb=Gt hRRO36J<+@q`~~k=oOObtD8K*!002ovPDHLkV1nEt!u$XL literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/textures/gui/artisan_table/resin_board_border.png b/kubejs/assets/tfg/textures/gui/artisan_table/resin_board_border.png new file mode 100644 index 0000000000000000000000000000000000000000..b021bf13f09b3ed19622651403148a76760c4088 GIT binary patch literal 1068 zcmV+{1k?M8P) zzmDTX9Du*yIJ*x zMBP! z^XvEKG6iN5KYt%NH(qxJW=UgY*P4K}0G?Q^zmGGpx1Jt2b0t{B?=X z9lmg=Q&bgH(GH7L0Z~DWATkqbq;j)#&s&HrJihSwyyTNFe-HpweR}*|uMm+xLVZ@~ zA7l8-0zWxamCuU~!k?xIqueu$;ULm*?aQjswXGBv5lK%7iuOf^C(G8iWj8C#8ziVVilMaEbo zq#}cHRFScK9lVRy7TKiB8d@x}X&g;ttby9NA8Hj_6jH$*=q#}1< zQxpdk*_9e06}dI{MR72ZU8)gMkz27%6iH+t4k9w9%X-^mNks-CxX3Qn2&u@OS$A@S zitK8Qkc!-iO(!>)$e3!}hg9Sp+!e)rCpU=5uGa{u$p5iVjgUkJcQ27K)fkG-7x|D!o@I6xnQFY7P8S)fM(DW6 zeF*Y4T1=O9$QmIPxf4NNqKdu7hmwk%@z9gImB>`%3ExI*6CqCSy&_|(abI?S8%>)q zU*F*f^~h7r5?N0XSuHd58g*LD8M`!DqT~psHW$PdEWNW58&Rp z`f~v=qtQrybX8;bW-s6 z)0Yf~!^O<_lj|urSJ&j@9CMa&e$nIn(FJFZdWfl{b`kZ8D;?9DoMKXvk8{eR1i)n3 ze7m_FYpuTd+jorr9Up&hTgsE?mkfu)#Xr5MvDU6UM!xat+hgum<9YJ@a^?40BHZ)D mW3AP}U~r(_Y9GtuZu1{3PyjXx$x=rE0000 zzi%5=9Kb*C>?Bf#XAO>K7ur#O2m(u=jENH z(~F`BzVA!3_p?T^SX9+*v#~0=cpHGBN1jvp`W^R+`();66bcmC#(*F!{dQ3RW?nf% zRia*5=Aj2ir6$t%eVM;9fj5)`1f))&WGl?6iys28`0<;ZeRU3iTh}l1%<-R?JbMX% zlatf@vM>vP33aT>_kEdv=PA^%7ds3MCNiJ}qYapBi3B)z`2zrS@iwQX&I52~aRI%u z%<1#*0`T>fw*i=#ougKyh+sA&Oj%<>jc7qcKm^H{$QNejYXa{qF7Wg9_xSSG4fM(~ ze|)!A69{nk+k5DW)QJoYCN!9G#PjdpQ~)A!B7x5VfKuwNtz&iaIZjPIQIaSk|M0V8 zCnu*%Ce*CX-W;2F>4B22#9`fd@%8xlrcR^@4VaxF?cmqa+E{hFxb|0Vd-d;s#=f|E zt`t=?o8MPz`+L6c%SUfLzB{p~cq1(}b_1n6a`_yk(?2r3^clcTkyUvHAYFeCyB5Sw zcyq5k#`eS;J0eBm*;>aFOOiDX0;1x(86D|(LI%8jyCiU0dr5kdX$2*<^XB?>3f5?v9QreWRcXK_VZ!n(*T)(Ec1wrO;6t%}TQjo^xGi)I(sn#eTO*a@!4 z12`y(!!E8Bky)=1T#^5ylN!N^w8oJ|rfFDrS|hk3t#KrgX|J&zT#-#^=i+uO($%;Z zS7Za)y|^8TOjC`v$b6AUx#g*+ZIQ0VgUNJ}wrYfoi|hm|Pot%2Slg@-T#;>I { + 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